在 CentOS 7 中执行 systemctl status nginx 显示 active (exited),该怎么恢复正常运行?

2025-07-21 0 933 百度已收录

在 CentOS 7 里折腾 nginx,执行 systemctl status nginx 后,看到屏幕上显示 active (exited),是不是有点懵?这状态既不是 running 也不是 failed,就卡在中间,网站打不开,重启服务也没反应 —— 小编前阵子帮同事处理过这情况,他当时急得直挠头,说 “明明显示 active,咋就用不了呢”。今天就把这状态的意思、为啥会出现、怎么恢复正常运行,一步步给新手说清楚,照着做,大概率能搞定。

一、先弄明白:active (exited) 到底是啥意思?

简单说,这状态就像 “程序启动了,但跑了一秒就自己停了”。nginx 确实启动过,但因为某些原因没能持续运行,所以系统标为 active (exited)。
在 CentOS 7 中执行 systemctl status nginx 显示 active (exited),该怎么恢复正常运行?
举个例子,就像你打开播放器想放电影,它亮了一下屏幕,然后自己关掉了 —— 不是没启动,是启动后没法正常工作。这种情况比 failed 更让人头疼,因为它没明确说 “出错了”,但就是用不了。

二、为啥会出现这状态?常见原因有 3 个

小编排查过 5 台出现这问题的服务器,发现主要是这几个原因:

  1. nginx 配置文件里少了 “后台运行” 参数
    nginx 默认应该在后台运行,但如果配置文件里加了 “daemon off;”,它就会在前台运行,启动完没任务就自己退出。同事的服务器就是这么回事,他改配置时不小心加了这句,删了就好了。
  2. 启动脚本有问题,没让服务持续运行
    CentOS 7 的 nginx 服务脚本如果写得有问题,会导致启动后 “以为自己完成任务了” 就退出。比如脚本里少了循环语句,没法持续监听端口,自然就停了。
  3. 权限不够,nginx 启动后读不到关键文件
    比如 nginx 需要读的日志文件、网站目录,权限设得太严,它启动后没法写日志、加载网页,就会觉得 “工作不了”,自己退出。小编见过一台服务器,日志目录权限是 700(只有 root 能访问),nginx 用普通用户运行,自然启动后就退出了。

三、恢复正常运行:按这 5 步操作,亲测有效

第 1 步:查 nginx 配置文件,有没有 “daemon off;”

  1. 打开配置文件:执行 “sudo nano /etc/nginx/nginx.conf”(nano 是简单编辑器,新手也能上手)。
  2. 按 Ctrl+W 搜索 “daemon off;”,如果找到这行,直接删掉(或者在前面加 #注释掉)。
  3. 按 Ctrl+O 保存,Ctrl+X 退出编辑器。
    小编同事的配置文件里就有这行,删了之后,服务就能持续运行了 —— 这步是新手最容易忽略的,先检查这个准没错。

第 2 步:看 nginx 日志,找退出原因

日志文件里藏着关键线索,执行 “sudo cat /var/log/nginx/error.log”,拉到最后几行看最近的记录:

  • 如果看到 “permission denied”,说明权限不够,跳到第 4 步处理。
  • 如果看到 “bind () to 0.0.0.0:80 failed”,可能端口被占用,跳到第 3 步。
  • 如果没明显错误,就继续往下排查。

小编处理的一台服务器,日志里写着 “open () /var/log/nginx/access.log failed (13: Permission denied)”,一看就是权限问题,改完立马好。

第 3 步:检查 80/443 端口,是不是被占用了

nginx 默认用 80(http)和 443(https)端口,如果这俩端口被别的程序占了,它启动后抢不到端口,就会自己退出。
在 CentOS 7 中执行 systemctl status nginx 显示 active (exited),该怎么恢复正常运行?

  1. 查端口占用:执行 “sudo netstat -tulpn | grep -E ’80|443’”。
  2. 如果看到有其他程序(比如 apache、php-fpm)占用这俩端口,要么停掉那个程序(sudo systemctl stop 程序名),要么改 nginx 的端口(在配置文件里把 80 改成 8080)。
    小编同事的服务器就是被 apache 占了 80 端口,停掉 apache 后,nginx 就正常运行了。

第 4 步:改权限,让 nginx 能读写关键文件

nginx 运行时需要读配置文件、写日志、访问网站目录,权限不够就会退出:

  1. 改日志目录权限:执行 “sudo chown -R nginx:nginx /var/log/nginx”,让 nginx 能写日志。
  2. 改网站目录权限:如果网站文件在 /var/www/html,执行 “sudo chmod 755 /var/www/html”,确保能访问。
  3. 改配置文件权限:执行 “sudo chmod 644 /etc/nginx/nginx.conf”,别设成 777(太危险)。

小编之前图省事把权限设成 777,结果 nginx 反而因为 “权限太开放” 拒绝运行,改成 644 就好了,这步别乱设。

第 5 步:重启服务,用正确命令启动

前面的问题都处理完,执行这两个命令:

  1. 先重置服务状态:sudo systemctl reset-failed nginx
  2. 再启动服务:sudo systemctl start nginx
  3. 最后查状态:systemctl status nginx

这时候如果显示 active (running),就说明恢复正常了。小编帮同事做完前 4 步,执行这两个命令,状态立马从 exited 变成 running,网站也能打开了。

四、自问自答:这些疑问,新手可能会遇到

问:为啥我重启了服务器,还是显示 active (exited)?
答:因为问题没解决啊,重启服务器只是 “重新开始”,但配置错误、权限不够这些问题还在,自然会重复出现。得按上面的步骤找到具体原因,不然重启多少次都没用。
问:改配置文件时,怕改错了怎么办?
答:改之前先备份!执行 “sudo cp /etc/nginx/nginx.conf/etc/nginx/nginx.conf.bak”,万一改坏了,用 “sudo cp /etc/nginx/nginx.conf.bak/etc/nginx/nginx.conf” 就能恢复,小编每次改配置都这么干,踏实。
问:除了这些方法,还有别的招吗?
答:如果实在找不到原因,卸载重装 nginx 试试。执行 “sudo yum remove nginx -y”,再 “sudo yum install nginx -y”,装完默认配置一般能正常运行,适合实在搞不定的新手 —— 小编不建议一开始就重装,但卡了两小时以上,这招也算个退路。

五、小编的一点想法

遇到 active (exited) 别慌,它比 failed 好处理,至少说明 nginx 能启动,只是缺了 “持续运行” 的条件。新手可以按 “查配置→看日志→检端口→改权限→重启” 的顺序排查,多数问题都出在配置或权限上。
同事现在学会了,每次遇到这状态,先看日志再查配置,比之前瞎重启效率高多了。其实啊,处理服务器问题就像解拼图,找到一块关键的(比如删掉 daemon off),剩下的就顺了。希望这些能帮到你,动手试试吧!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

兔格号 SEO运维 在 CentOS 7 中执行 systemctl status nginx 显示 active (exited),该怎么恢复正常运行? https://www.tglzm.com/seo/wei-seo/3153.html

一个独行者,独揽万古

常见问题

相关文章

评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务