本文已参与「新人创作礼」活动,一起开启掘金创作之路。
Nginx版本升级步骤
前言:之前我的nginx版本是1.60,因为版本过低,服务器被木马入侵了,于是着手升级nginx版本。
Yum源升级法
首先我的系统是centos7,需要在nginx.org官网找到适合的分支,来下载适合系统的包。
然后在nginx.repo中写入, 首先用vim创建它:
vim /etc/yum.repos.d/nginx.repo
输入url:
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=0
使用yum升级:
yum update --enablerepo=nginx nginx
然后yes即可。
这里可以看到yum升级完成了:
此外,我这边nginx版本没有改变,是因为我使用的是系统里由gcc编译的nginx。接下来介绍这个nginx该如何升级。
gcc编译升级
首先要备份自己的配置文件(非常重要):
cd /usr/local/nginx/conf
cp nginx.conf nginx.conf.backup
然后要去nginx.org选择自己想要的版本,nginx.org/en/download…
这里可以用wget下载下来:
wget http://nginx.org/download/nginx-1.20.2.tar.gz
解压:
tar -zxf nginx-1.20.2.tar.gz
进入文件夹里面:
cd nginx-1.20.2/
设置*.configure*, 这里就按照你的想法来了:
.configure --prefix=/usr/local/nginx --with-http_stub_status_module
--with-http_v2_module --with-http_ssl_module
设置完成后,编译即可:
make & make install
这样就做完了,如下:
最后查看下配置文件.这就是gcc编译升级nginx的方法.
如果配置文件出问题了,用原本的备份替换掉nginx.conf
mv nginx.conf.backup nginx.conf
升级完成.
nginx.conf 出错的情况
最后的部分, 谈下因为我没备份, nginx.conf出问题的情况(😂)
可以看到,我的nginx无法重启,因为找不到ngixn.pid,所以无法重启reload nginx. 我试过了网上的方法:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
但是failed了,因为nginx仍在运行.
而这时候,
nginx -t
没什么问题.
我用vim修改了下nginx.conf,
这时候错误变成了:
无效的PID number,这时候我在用网上的方法,仍然出错:
于是我尝试将nginx的pid写入到nginx.pid中
ps aux | grep "nginx: master porcess nginx" | grep -v pts | awk '{print $2;}'
这里需要注意的是“nginx:”之后的信息,要按照你的本地显示的来
echo `ps aux | grep "nginx: master process nginx" | grep -v pts| awk '{print $2;}'`
> /usr/local/nginx/logs/nginx.pid
nginx -s reload
可以发现已经没问题了。
nginx无法启动
如果使用
nginx -s stop
nginx.pid中的pid会失效,这时候使用reopen会出错。
使用ps可以看到nginx进程已经消失了。
这时候要使用
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
指定一下nginx启动设置。
这时候“nginx:”之后的已经改变了。
但为什么后面还跟着/usr/local/nginx/sbin/nginx这种东西呢?之前好像是没有的,猜测是启动信息?
Nginx配置
在 www.digitalocean.com/community/t… 可以配置高性能安全稳定的Nginx服务器.
而上述的问题导致了:
无法重新加载Nginx服务器
而且也出现了
certbot certonly --webroot -d example.com --email info@example.com
-w /var/www/_letsencrypt -n --agree-tos --force-renewal
这个命令无法完成, 从而无法配置SSL证书.