我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

苏南大叔的mac系统,apache其实不工作好几次了。每次坏掉之后,都是重装系统了事。不过,最近,apache又不工作了,试图使用brew重装apache,甚至nginx,都有着类似的问题。

苏南大叔:mac系统,如何开启80端口,如何允许80端口占用? - mac-80port
mac系统,如何开启80端口,如何允许80端口占用?(图3-1)

具体问题表现

这些问题,具体表现有:
1:用brew services start nginx,没有反应。
2:用sudo httpd或者sudo nginx,是正常的。
3:默认是8080端口,正常工作。改到80端口后,不正常。

在探索这些可能的解决方案的时候,最终得出的结论是,一是卸载不干净,二是与权限有关系。按照惯例,先说解决方法,再说解决思路,方法其实很简单。

情况一,apache

brew uninstall --ignore-dependencies httpd24    #如果是用brew安装过的话,就需要这句话
sudo rm -rf /usr/sbin/httpd               #命令行里面的命令位置
sudo rm -rf /usr/sbin/apachectrl          #命令行里面的命令位置
sudo rm -rf /etc/apache2/                  #系统自带的配置位置
sudo rm -rf /usr/local/etc/apache2/       #brew安装的配置位置
launchctl unload /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist   #不一定用得上
launchctl unload /Library/LaunchAgents/homebrew.mxcl.httpd24.plist    #不一定用得上
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.httpd24.plist
brew install httpd24                 #会重新创建上述删除的文件
vi /usr/local/etc/apach2/httpd.conf  #修改端口80,增加php扩展之类的
sudo chown root:wheel /usr/local/cellar/httpd24/2.4.27/bin/httpd   #重点
sudo chmod u+s        /usr/local/cellar/httpd24/2.4.27/bin/httpd     #重点
sudo chown root:wheel /usr/local/cellar/httpd24/2.4.27/bin/apachectl   #重点
sudo chmod u+s        /usr/local/cellar/httpd24/2.4.27/bin/apachectl     #重点
sudo chown root:wheel /usr/local/etc/apache2/     #可能用的到

情况二,nginx

brew uninstall --ignore-dependencies nginx    #如果是用brew安装过的话,就需要这句话
sudo rm -rf /usr/local/etc/nginx/             #brew安装的配置位置
launchctl unload /Library/LaunchDaemons/homebrew.mxcl.nginx.plist   #不一定用得上
launchctl unload /Library/LaunchAgents/homebrew.mxcl.nginx.plist    #不一定用得上
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
brew install nginx                 #会重新创建上述删除的文件
vi /usr/local/etc/nginx/nginx.conf  #修改端口80之类的

重点中的重点,如下,注意替换nginx的版本号。

sudo chown root:wheel /usr/local/Cellar/nginx/1.12.1/bin/nginx      #重点
sudo chmod u+s /usr/local/Cellar/nginx/1.12.1/bin/nginx             #重点
sudo chmod root:wheel /usr/local/etc/nginx/     #可能用的到

苏南大叔:mac系统,如何开启80端口,如何允许80端口占用? - port80
mac系统,如何开启80端口,如何允许80端口占用?(图3-2)

整体的思路

清除原有的残余文件,系统加载。修改端口80后,对应的程序需要更高的权限。据说只要是1024下面的端口监听,都需要特殊的权限。而brew并没有考虑这个问题,而且卸载的时候,并不会删除配置文件。这可能就是症结所在。
当然,上述路径位置,在你读到这篇文章的时候,可能发生了变化(比如版本号)。所以,大家领会精神就行了。

苏南大叔:mac系统,如何开启80端口,如何允许80端口占用? - 012
mac系统,如何开启80端口,如何允许80端口占用?(图3-3)

结束语

由苏南大叔提供的,apache相关的文章可以点击这里: https://newsn.net/tag/apache/
nginx相关的文章可以点击这里: https://newsn.net/tag/nginx/

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   mac    nginx