Mac 自带Apache自动启动,导致80端口被占用
运行nginx 时提示
% nginx
nginx: [emerg] bind() to 0.0.0.0:80 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (48: Address already in use)
nginx: [emerg] still could not bind()
去访问http://localhost 会提示 It works!
解决方法
- 关闭Mac电脑自带的Apache
- 使用自带Apache进行网页搭建
- 遇到的问题
- 总结
1.关闭Mac电脑自带的Apache
#查看httpd进程 (已经启动)
% ps -A | grep httpd
39477 ?? 0:00.20 /usr/sbin/httpd -D FOREGROUND
39481 ?? 0:00.00 /usr/sbin/httpd -D FOREGROUND
#终端输入 关闭Apache启动
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
#(因为使用了sudo 所以需要输入电脑开机密码)
#终端输入 开启Apache
sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
2.使用自带Apache 搭建网页
- 项目根目录:/Library/WebServer/Documents (root权限才能编辑index.html.en)
- 配置文件目录:/private/etc/apache2 (root权限才能编辑httpd.config)
- log 目录:/private/var/log/apache2
#查看帮助文档 ( pgup,pgdown(翻页) 上下方向键 或 j k 显示上下一行 q退出)
man httpd
#启动和关闭
//开启
sudo apachectl start
//重启
sudo apachectl restart
//关闭
sudo apachectl stop
#测试配置文件是否正确
sudo apachectl configtest
#或
sudo apachectl -t
修改项目根目录
打开 /private/etc/apache2/httpd.config
#找到DocumentRoot 替换以下两处 然后
DocumentRoot "/Users/UserName/test/webServer"
<Directory "/Users/UserName/test/webServer">
3.问题
如果上方两个路径不同访问http://localhost页面时会出现下方提示
Forbidden
You don't have permission to access this resource.
4.总结
- 不管是启动、停止、重启、 都需要root 权限
- 修改配置文件 也需要root权限保存
- 没有找到重载配置文件的方法,只能通过重启Apache 来解决
- 我已经做出了我的选择,禁用掉,用自己比较熟悉的Nginx
评论区