安装nginx-extras后NGINX故障,卸载后问题未解决如何修复?
我来帮你捋清楚这个问题:你在Debian 8上装了nginx-extras,结果重启Nginx后用nginx -t检测时出现了上游无端口的错误,卸载nginx-extras后问题还没消失。这其实是因为安装过程中Nginx的配置文件被改动了,而且卸载包的时候这些修改过的配置不会自动复原,得手动来修。
一、哪些配置可能被修改了?
- 站点配置文件:就是你报错里提到的
/etc/nginx/sites-enabled/[file],第84行的上游配置大概率被改动或者缺失了。 - Nginx主配置
/etc/nginx/nginx.conf:nginx-extras包可能替换或修改了主配置里的全局上游定义,比如原本指向PHP-FPM的配置被改坏了。 /etc/nginx/conf.d/下的额外配置:这个目录里可能被nginx-extras新增了一些默认的PHP配置片段,和你原本的设置冲突了。
二、具体修复步骤
1. 先搞定报错的上游配置
打开那个报错的站点配置文件,找到第84行附近的upstream php5-fpm-sock块。正常情况下,Debian 8里php5-fpm的上游配置应该是下面这样的:
upstream php5-fpm-sock { # 用Unix socket的写法(默认是这个) server unix:/var/run/php5-fpm.sock; # 如果你的php5-fpm是用TCP端口的,就换成这个:server 127.0.0.1:9000; }
要是这个块不存在,或者里面的server行不对,就手动补上或者修正。
2. 确认php5-fpm的状态没问题
先检查php5-fpm服务是不是在跑,还有socket文件有没有:
# 看服务状态 service php5-fpm status # 检查socket文件是否存在 ls -l /var/run/php5-fpm.sock
如果socket文件找不到,重启一下php5-fpm就行:
service php5-fpm restart
3. 恢复被修改的主配置(如果需要)
Debian在安装包修改配置文件时,会自动生成备份(后缀一般是.dpkg-old)。你可以看看主配置有没有备份:
ls -l /etc/nginx/nginx.conf.dpkg-old
如果有这个备份文件,直接恢复回去:
cp /etc/nginx/nginx.conf.dpkg-old /etc/nginx/nginx.conf
4. 清理nginx-extras留下的多余配置
去/etc/nginx/conf.d/目录看看,有没有nginx-extras新增的配置文件(比如叫php.conf或者nginx-extras.conf这类的),要是这些文件里的内容和你的PHP配置冲突,直接删掉就行:
# 先列出目录里的文件 ls /etc/nginx/conf.d/ # 删除可疑文件,比如rm /etc/nginx/conf.d/php-extras.conf
5. 验证配置并重启Nginx
改完之后先测一下配置对不对:
nginx -t
只要显示test is successful,就可以重启Nginx了:
service nginx restart
三、为啥卸载后问题还在?
因为apt-get remove只会删掉包的程序文件,不会自动把被修改的配置文件恢复成原来的样子——这些配置文件会被当作“用户自定义配置”保留下来,所以卸载后错误的配置还在,得咱们手动修复。
内容的提问来源于stack exchange,提问作者Navruz Madibragimov

