CentOS下手动无缝升级nginx

发表时间
评论 没有

前两天收到度娘的安全提醒,Nginx发现安全漏洞需要更新到最新无漏洞版。因为怕更新造成网站运行不稳定,我一直不太愿意给服务器升级,站长们对此可能深有体会。但是安全问题就是另外一回事了,再麻烦也得弄。遂查了一些资料,发现Nginx的升级并没有那么复杂,用Yum安装的可以用Yum更新,用一键安装脚本安装的可以找自动安装脚本。我的服务器是手动安装的,就需要手动升级了,现将过程记录如下。

首先,将Nginx目录下所有文件打包备份
tar -zcvf nginx.tar.gz /usr/local/nginx/.

然后远程下载最新稳定版的nginx
wget http://nginx.org/download/nginx-1.12.1.tar.gz

将下载好的文件解压缩
tar -zxvf nginx-1.12.1.tar.gz

解压后得到目录nginx-1.12.1,进入该目录
cd nginx-1.12.1

接下来需要编译nginx。如果不清楚编译时的选项,可以参考现有nginx的编译选项,查看方法
/usr/local/nginx/sbin/nginx -V

得到结果如下
nginx version: nginx/某版本号
built by gcc 4.1.2 20080704 (Red Hat 4.1.2-54)
TLS SNI support disabled
configure arguments: —user=www —group=www —prefix=/usr/local/nginx —with-http_stub_status_module —with-http_ssl_module —with-http_gzip_static_module —with-ipv6

其中configure arguments就是当前运行的nginx编译时的命令,找到这些命令后我们开始编译新的nginx
./configure —prefix=/usr/local/nginx —with-http_stub_status_module —with-http_ssl_module —with-http_gzip_static_module —with-ipv6 && make

编译完成后,在当前目录的 objs 目录下就是我们需要的 nginx 可执行文件了,只需覆盖即可完成升级。在覆盖老版本的 nginx 之前,首先将其重命名以免无法覆盖
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old

然后将新编译好的 nginx 复制到 nginx 的目录中
cp objs/nginx /usr/local/nginx/sbin/nginx

最后重启 nginx 完成升级
/usr/local/nginx/sbin/nginx -s reload

这时再使用上面介绍过的命令查看 nginx 版本,已显示为1.12.1。最后删除更新时下载和备份的文件。

本文参考https://undefinedblog.com/seamlessly-upgrade-nginx-on-centos/

推荐阅读

作者
分类 电脑网络, 网站建设

评论

本文评论功能已关闭。

← 较早的 较新的 →

相关文章