刚学搭网站的新手,是不是执行 “systemctl status nginx” 后,看到 “failed” 就慌了神?屏幕上一堆英文报错,不知道哪出了问题,想解决又无从下手。小编前阵子帮朋友排查时,他的服务器就显示这个,折腾了两小时才弄好。其实啊,failed 不可怕,关键是看懂错误代码,按步骤排查 —— 今天就把常见错误代码、解决方法、日志怎么看,全给新手说清楚,照着做,你也能搞定。
一、先看懂:failed 后面的错误代码,藏着关键信息
执行命令后,除了 failed,后面还会跟着像 “exit code 1”“status 2” 这样的代码,这些代码就是 “线索”。小编整理了新手最常遇到的 3 种:
错误代码 | 含义 | 通俗理解 |
---|---|---|
exit code 1 | 配置文件出错 | 就像写作文有错别字,系统读不懂 |
status 2 | 启动参数错误 | 给 nginx 的 “命令” 写错了,它不知道该干啥 |
exit code 13 | 权限不够 | nginx 想读文件,但没权限,像你想进锁着的房间 |
举个例子,朋友的服务器显示 “exit code 1”,后来发现是配置文件里多打了个分号,删了就好了。这些代码别看长得像乱码,其实是在告诉你 “我哪疼”。
二、分步解决:3 种常见错误,这样操作准管用
遇到 “exit code 1”(配置文件错)
- 先查配置文件语法,执行 “nginx -t”—— 这个命令能帮你找错别字。
小编朋友执行后,屏幕显示 “/etc/nginx/nginx.conf:8 错误:分号缺失”,一看果然漏了个分号。 - 找到错误行,用编辑器打开文件:执行 “nano /etc/nginx/nginx.conf”(nano 是简单编辑器,新手也会用)。
按 Ctrl+W 搜索错误行号(比如 8 行),改完按 Ctrl+O 保存,Ctrl+X 退出。 - 重启 nginx:执行 “systemctl restart nginx”,再查状态就会显示 “active” 了。
碰到 “status 2”(启动参数错)
这种情况多是手动改了启动参数,导致 nginx 启动时 “蒙圈”。
- 恢复默认参数:执行 “systemctl reset-failed nginx”,重置错误状态。
- 用默认方式启动:执行 “systemctl start nginx”,别加额外参数。
- 要是还不行,卸载后重装 nginx:执行 “apt remove nginx”(Ubuntu 系统),再 “apt install nginx”,新手别怕重装,比找参数简单。
出现 “exit code 13”(权限不够)
nginx 要读网站文件,要是文件权限设成 “仅自己可见”,它就打不开。
- 查网站文件权限:执行 “ls -l /var/www/html”(假设网站文件在这里),看权限列是不是 “rw-r–r–”。
- 改权限:执行 “chmod 644 /var/www/html/*”,让 nginx 能读取文件。
- 重启服务:“systemctl restart nginx”,一般就好了。
朋友的图片无法加载,就是权限的问题,改完立马显示了。
三、日志排查:比错误代码更详细的 “故障日记”
有时候代码看不明白,就得看 nginx 的 “日记”—— 日志文件,里面记着具体错在哪。
- 打开错误日志:执行 “nano /var/log/nginx/error.log”,新手直接复制粘贴这个命令就行。
- 找最近的错误:日志按时间排序,拉到最下面,看带 “error” 的行。比如 “connect () to 127.0.0.1:8080 failed (111: Connection refused)”,说明 nginx 要连接的端口没开。
- 结合日志解决:比如上面的错误,就去检查 8080 端口对应的服务是不是没启动,启动后再试。
小编觉得,日志就像医生的病历本,比代码更能说明问题,新手一定要学会看。
四、自问自答:这些坑,新手最容易踩
问:执行命令后显示 “Unit nginx.service not found”,不是 failed 咋办?
答:这是 nginx 没安装上,不是启动失败。执行 “apt install nginx”(Ubuntu)或 “yum install nginx”(CentOS),装完再试就有这个服务了。小编第一次学搭站,就忘了安装,白排查半天。
问:重启 nginx 时显示 “Job for nginx.service failed”,和 status 里的 failed 一样吗?
答:是一回事!重启时的 failed,就是 status 里的 failed,按前面的方法排查就行。不用慌,本质都是 nginx 没启动起来。
问:为什么改了配置文件,还是显示 failed?
答:可能没重启服务,改完配置必须执行 “systemctl restart nginx”,不然白改。小编朋友就犯过这错,改完以为万事大吉,结果还是 failed,重启后才好。
五、小编的一点想法
遇到 “systemctl status nginx 显示 failed”,新手别慌着找人帮忙,先看错误代码,再查日志 —— 这两步能解决 80% 的问题。小编建议新手把 “nginx -t” 和日志文件路径记下来,这俩是排查 nginx 问题的 “法宝”。
另外,平时改配置文件前,最好复制一份备份,比如 “cp /etc/nginx/nginx.conf/etc/nginx/nginx.conf.bak”,改坏了还能恢复,比从头改省事多了。其实啊,玩服务器就像拼图,错了一块没关系,慢慢找总能拼对,你说对吧?