脚本执行平滑升级nginx及注意事项汇总--持续更新

工作需要将nginx版本升级,原先为1.18,现在要升级为1.20。

附操作步骤及执行脚本(全程root账号执行)。

[root@localhost /]#yum install -y gcc

[root@localhost /]#yum install -y pcre pcre-devel

[root@localhost /]#yum install -y zlib-devel

[root@localhost /]#yum install -y openssl

[root@localhost /]#

[root@localhost /]#touch test1.sh

[root@localhost /]#vi test1.sh

[root@localhost /]#sh test1.sh

######杀掉之前的进程
killall nginx
######将原来的nginx做备份
mv /app/nginx  /app/nginx.bak
######将nginx执行文件也做备份
mv /app/nginx.bak/nginx/sbin/nginx /app/nginx.bak/nginx/sbin/nginx.bak
######因为文件做备份后名字变更,我们重新建立nginx目录
mkdir -p /app/nginx
######将升级包上传到某一路径,然后解压文件
cd /update
tar -zxvf nginx-1.20.2.tar.gz
######进入解压后的路径,将nginx配置到指定路径,并编译执行
cd nginx-1.20.2
./configure --prefix=/app/nginx/nginx
make&&make install
######给编写及拥有权限
chmod -R 777 /app/nginx
chown -R root:root /app/nginx
######因为是平滑升级,我只要sbin下的nginx执行文件,所以执行如下步骤,复杂了些。其实到这步可以直接进入到sbin路径下执行nginx程序就可以的。
######将目前新的nginx包更名为nginx.new,同时将原来备份的nginx恢复。
mv /app/nginx /app/nginx.new
mv /app/nginx.bak /app/nginx
######将新的nginx路径下的nginx执行文件直接复制到原来的nginx路径下,执行。
cp /app/nginx.new/nginx/sbin/nginx  /app/nginx/nginx/sbin
cd /app/nginx/nginx/sbin
./nginx
######nginx已重新启动!!!
echo "nginx 'date +%Y%m%d'升级成功"
exit 0

来个注意事项汇总:

1、因为nginx需要相关组件支持,需要先查看是否已安装,本来查看确认都有的,但在配置路径时一直在报错,但重新按照zlib-devel包安装就通过了。同理pcre等。

(pcre-devel,zlib-devel,openssl-devel包)


./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using --with-zlib=<path> option.
 

[root@localhost /]#rpm -qa |grep zlib
zlib-1.2.7-20.el7_9.x86_64

[root@localhost /]#yum install -y zlib-devel

[root@localhost /]#rpm -qa |grep zlib
zlib-1.2.7-20.el7_9.x86_64

zlib-devel-1.2.7-20.el7_9.x86_64

2、用普通用户启动nginx。

可以在脚本中增加su - lin,不过有个问题我暂时也没有想到解决方案,版本升级后,需要手工退出普通用户后,方可重新启动nginx查到进程。

[lin@localhost ~]$ exit
登出
nginx 'date +%Y%m%d'升级成功

######杀掉之前的进程
killall nginx
######将原来的nginx做备份
mv /app/nginx  /app/nginx.bak
######将nginx执行文件也做备份
mv /app/nginx.bak/nginx/sbin/nginx /app/nginx.bak/nginx/sbin/nginx.bak
######因为文件做备份后名字变更,我们重新建立nginx目录
mkdir -p /app/nginx
######将升级包上传到某一路径,然后解压文件
cd /update
tar -zxvf nginx-1.20.2.tar.gz
######进入解压后的路径,将nginx配置到指定路径,并编译执行
cd nginx-1.20.2
./configure --prefix=/app/nginx/nginx
make&&make install
######给编写及拥有权限
chmod -R 777 /app/nginx
chown -R root:root /app/nginx
######因为是平滑升级,我只要sbin下的nginx执行文件,所以执行如下步骤,复杂了些。其实到这步可以直接进入到sbin路径下执行nginx程序就可以的。
######将目前新的nginx包更名为nginx.new,同时将原来备份的nginx恢复。
mv /app/nginx /app/nginx.new
mv /app/nginx.bak /app/nginx
######将新的nginx路径下的nginx执行文件直接复制到原来的nginx路径下,执行。
cp /app/nginx.new/nginx/sbin/nginx  /app/nginx/nginx/sbin
chown -R lin:lin /app/nginx
chmod 777 /app/nginx
su - lin
cd /app/nginx/nginx/sbin
./nginx
######nginx已重新启动!!!
echo "nginx 'date +%Y%m%d'升级成功"
exit 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值