在端口80 Mac OSX上杀死未知的自重启服务器

时间:2016-09-03 17:55:11

标签: macos apache port launch

我有一台服务器在端口80上运行,但我不知道它是什么或它来自哪里。我跑的时候

sudo lsof -i :80 | grep LISTEN

我得到了

httpd      80    root    5u  IPv6 0x91f5a9de62859cfd      0t0  TCP *:http (LISTEN)
httpd     694    _www    5u  IPv6 0x91f5a9de62859cfd      0t0  TCP *:http (LISTEN)

我试图使用PID输入获取进程名称,但我得到的所有回报都是“httpd”或“FOREGROUND”。

当我终止PID时,该过程只需重新启动一个新的PID。我想我必须在发布时停止它。

如何阻止此服务器在启动时运行?

如果它有帮助,我试图释放端口80以使用MAMP上的apache服务器。

4 个答案:

答案 0 :(得分:5)

这只是猜测,但它可能是apache的内置版本,由launchd(OS X'守护程序管理器)启动(并重新启动)。它默认是禁用的,但可能会以某种方式启用。您可以尝试使用以下方法禁用它:

sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

如果它没有这样做(它会说"找不到指定的服务"),你可以查看它是否是其他的启动守护进程通过查找主进程的PID(以root身份运行,而不是_www)的项目:

sudo launchctl list | grep <masterPID>

这不一定能告诉你究竟发生了什么,但可能会指出你正确的方向。

答案 1 :(得分:3)

像Gordon建议的那样,它是Apache Web服务器的内置版本。

你可以用

来阻止它
sudo apachectl stop

顺便说一下,这个网络服务器的配置可以在 /etc/apache2/httpd.conf 目录中找到。

答案 2 :(得分:1)

这件事发生在我身上。 正如@Gordon Davisson解释的那样,启动程序很可能与您设置的服务冲突。 绝对停止apachetl服务器。

sudo apachetl -k stop

尝试找到所有的httpd进程,它们应该是最后的进程

sudo lsof -i :80 // without grep

然后得到第一个过程(最有可能在1000年代)也应该是最低的过程。

sudo kill <firstHttpdPID>

这应该会杀死运行该httpd实例的所有进程,然后您只需启动备份服务器。 必须首先停止它,否则它将继续运行。

答案 3 :(得分:0)

Mac OSX与Apache捆绑在一起,但是已停用。您可能已经以某种方式激活了它。就我而言,我以前安装了XAMPP,并在/etc/apache2/httpd.conf中进行了一些配置,以将端口localhost:80引导至带有 It Works! 的html页面。

TLDR,解决方案是停用Apache2服务器。 转到您的终端,然后输入

sudo apachetl -k stop

就我而言,它返回以下内容:

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using Shafies-MacBook-Pro.local. Set the 'ServerName' directive globally to suppress this message
httpd (no pid file) not running

如果您在浏览器中键入localhost,则端口80不再处于活动状态,并且您将不再看到 It Works!

对于上下文,我很早以前就删除了XAMPP,但不知道我的localhost:80仍处于活动状态。我无法将虚拟域-posts.com重定向到我的kubernetes YAML配置文件的本地主机端口。

这是我的ingress-srv.yaml文件:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress-srv
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: 'true'
spec:
  rules:
    - host: posts.com
      http:
        paths:
          - path: /?(.*)
            backend:
              serviceName: client-srv
              servicePort: 3000

并且我欺骗了操作系统,方法是在位于posts.com的主机文件中添加以下行,以将我的localhost:80重定向到/etc/hosts

127.0.0.1 posts.com

通过SM

相关问题