第三方支付平台因安全问题对nginx做了升级操作,为了不影响业务,整个操作过程都不能停服务,因此对升级方法做出了要求。以下为我整理的生产环境实际操作方法,已在第三方支付平台上成功应用,希望对即将或者可能涉及nginx升级操作的同事有所帮助。 Nginx升级步骤: 步骤一:查看原版本及已安装模块和进程号。 ps aux|grep nginx /payment/nginx/sbin/nginx –V
步骤二:下载新版本安装文件并上传到nginx主机目录/payment/bak/。 下载地址http://nginx.org/download/nginx-1.4.3.tar.gz
步骤三:备份旧版本的执行程序。 tar -cvf /payment/bak/nginx.sbin.20140115.tar /payment/nginx/sbin/
步骤四:编译新版本,增删模块。 tar zxvf /payment/bak/nginx-1.4.3.tar.gz cd /payment/bak/nginx-1.4.3 ./configure --prefix=/payment/nginx make make install
步骤五:替换。 kill -USR2 21727 ll /payment/nginx/logs/nginx* ps aux|grep nginx kill -WINCH 21727 一段时间之后,旧的工作进程(worker process)处理了所有已连击的请求后推出,仅由新的工作进程(worker process)来处理请求了。
步骤六:决定使用新版本还是恢复到旧版本。 使用新版本:kill -QUIT 21727
新的主进程退出后,旧的主进程会移除.oldbin后缀,恢复为他的.pid文件,这样,一切就都恢复为升级之前了。 如果尝试升级成功,而自己又希望保留新版本时,可发送QUIT信号给旧的主进程,使其退出而只留下新的进程运行:kill -QUIT 旧主进程号。
为了能够更加安全,往往采用隐藏软件版本号的方法,此处插入步骤七,对版本号进行隐藏。 步骤七:备份配置文件并隐藏版本号 (1)备份:tar -cvf /payment/bak/nginx.conf.20140115.tar /payment/nginx/conf/ (2)vi /payment/nginx/conf/nginx.conf http中加入: server_tokens off; vi /payment/nginx/conf/fastcgi.conf 修改: fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; 为 fastcgi_param SERVER_SOFTWARE nginx; (3)重新加载配置文件。 ./nginx -s reload 验证:curl --head 127.0.0.1 (责任编辑:IT) |