报错信息如下
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Unknown error)
1. 网上搜索, 基本上都是说80端口被占用, 要kill掉那些进程, 但是用 netstat 显示的是几个内网的ip地址(阿里云的 100.100.30.xx)也没有显示进程号
2. 看防火墙, 也没有启动
# firewall-cmd --statenot running
3. 又看了看占用80端口的进程, 只看到了aliyundun的进程, 以为是这个进程占用了80端口, 于是就准备, 先把Nginx设置为开启启动, 再重启一遍
systemctl enable nginx
4. 心血来潮, 好久没搞linux了, 看看这个新的控制命令 `systemctl` 都开机启动了哪些程序
systemctl list-unit-files --type=service | grep enabled
5. 一看, 发现了问题, 里边有一个`httpd`的进程, 我去, 既生瑜何生亮啊, 原来是这个原因, 立马查看是不是有apache在跑, 果然
# ps -ef | grep httpdroot 799 1 0 12:15 ? 00:00:00 /usr/sbin/httpd -DFOREGROUNDapache 832 799 0 12:15 ? 00:00:00 /usr/sbin/httpd -DFOREGROUNDapache 833 799 0 12:15 ? 00:00:01 /usr/sbin/httpd -DFOREGROUNDapache 840 799 0 12:15 ? 00:00:00 /usr/sbin/httpd -DFOREGROUNDapache 841 799 0 12:15 ? 00:00:00 /usr/sbin/httpd -DFOREGROUNDapache 1596 799 0 13:06 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
用下边命令也可以查到 :
lsof -i :80
6. 果断关闭apache服务, 并关闭随机启动
# 关闭开启启动, 提示服务还在运行:# systemctl stop httpdWarning: Stopping httpd.service, but it can still be activated by: httpd.socket# 关闭服务:# systemctl stop httpd.socket# 查询是否关闭成功:# ps -ef | grep httpdroot 1793 1700 0 13:55 pts/1 00:00:00 grep --color=auto httpd
7. 也不重启了, 直接运行Nginx, 成功:
# systemctl start nginx# ps -ef | grep nginxroot 1801 1 0 13:55 ? 00:00:00 nginx: master process /usr/sbin/nginxwww 1802 1801 0 13:55 ? 00:00:00 nginx: worker process