相关推荐recommended
Nginx 启动失败 提示 unknown error
作者:mmseoamin日期:2024-01-25

报错信息如下

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 --state
not 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 httpd
root         799       1  0 12:15 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache       832     799  0 12:15 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache       833     799  0 12:15 ?        00:00:01 /usr/sbin/httpd -DFOREGROUND
apache       840     799  0 12:15 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache       841     799  0 12:15 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache      1596     799  0 13:06 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND

用下边命令也可以查到 :

lsof -i :80 

6. 果断关闭apache服务, 并关闭随机启动

# 关闭开启启动, 提示服务还在运行:
# systemctl stop httpd
Warning: Stopping httpd.service, but it can still be activated by:
  httpd.socket
# 关闭服务:
# systemctl stop httpd.socket
# 查询是否关闭成功:
# ps -ef | grep httpd
root        1793    1700  0 13:55 pts/1    00:00:00 grep --color=auto httpd

7. 也不重启了, 直接运行Nginx, 成功:

# systemctl start nginx
# ps -ef | grep nginx
root        1801       1  0 13:55 ?        00:00:00 nginx: master process /usr/sbin/nginx
www         1802    1801  0 13:55 ?        00:00:00 nginx: worker process