如何停止在 Mac OS X (10.11) El Capitan Server 下运行的 httpd?

Chr*_*ris 37 mac httpd webserver osx-server osx-el-capitan

我将 OS X El Capitan 与配置为允许我通过 VPN 访问我的家庭网络的服务器(应用程序)一起使用。不幸的是,服务器应用程序已经决定开始一堆的httpd进程,现在被监听端口80,443和其他人,即使在服务器设置网站OFF,没有服务应该在这些端口上启动。

我不想或不需要这些服务处于活动状态,并希望 httpd 被关闭(或不开始)。不幸的是,我既不能杀死这些进程(它们只是立即重新启动),也不能通过launchctl控制它们。

sudo lsof -i :80
httpd   422 root    5u  IPv6 0x7...     0t0  TCP *:http (LISTEN)
httpd   425 _www    5u  IPv6 0x7...     0t0  TCP *:http (LISTEN)

ps u 422
USER   PID  %CPU %MEM      VSZ    RSS   TT  STAT STARTED      TIME COMMAND
root   422   0.0  0.0  2457156   6136   ??  Ss    5:55PM   0:00.07 /usr/sbin/httpd -D FOREGROUND -f /Library/Server/Web/Config/Proxy/apache_serviceproxy.conf -E /private/var/log
Run Code Online (Sandbox Code Playgroud)

尝试时:

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

/System/Library/LaunchDaemons/org.apache.httpd.plist: Could not find specified service
Run Code Online (Sandbox Code Playgroud)

那么,如何终止这些进程并释放这些端口?

我知道这里有一个 apache 服务器的配置文件: /Library/Server/Web/Config/Proxy/apache_serviceproxy.conf

我可以删除以下几行来取消阻止这些端口,但httpd进程仍在运行。

listen 80
listen 443
Run Code Online (Sandbox Code Playgroud)

小智 35

你可以用命令停止它:

sudo apachectl stop
Run Code Online (Sandbox Code Playgroud)

  • 在 macOS Catalina 10.15.3 上测试并运行 (2认同)

小智 24

苹果代理服务是抢占80和443端口的服务,所以你需要停止那个。

sudo launchctl unload -w /Applications/Server.app/Contents/ServerRoot/System/Library/LaunchDaemons/com.apple.serviceproxy.plist
Run Code Online (Sandbox Code Playgroud)

  • 事实证明,这正是我的解决方案。“sudo apachectl stop”只是给出了与launchctl相同的错误。 (3认同)

小智 11

此命令应该将它们全部杀死:

sudo killall httpd
Run Code Online (Sandbox Code Playgroud)

它们将在下次启动时再次启动。

  • 我也没有投反对票,但这可能与我提到杀死进程没有意义的事实有关,因为它们会自动重新启动。 (3认同)

小智 7

如果其他人通过搜索httpd端口 80来解决此问题,但没有运行 Server.app,这是 macOS Monterey 12.x 及更高版本的解决方案:

sudo launchctl bootout system/org.apache.httpd
Run Code Online (Sandbox Code Playgroud)