nginx版本的平滑升级
nginx版本的平滑升级
前几天我同事晚上值班没事的时候,把公司客户的一些nginx服务器进行了升级,这种操作我还从来没有做过,也挺好奇的,今天闲来没事就在网上找了类似的文档,进行了操作,并把其过程记录了下来……
1.查看自己服务器nginx的版本和最早自己编译安装是的参数
[*]# /usr/local/nginx/sbin/nginx -V
[*] nginx version: nginx/1.2.1
[*] built by gcc 4.1.2 20080704 (Red Hat 4.1.2-46)
[*] TLS SNI support disabled
[*] configure arguments: --prefix=/usr/local --sbin-path=/usr/sbin/nginx \
[*] --conf-path=/usr/local/nginx/conf/nginx.conf \
[*] --error-log-path=/var/log/nginx/error.log \
[*] --http-log-path=/var/log/nginx/access.log \
[*] --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock \
[*] --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module \
[*] --with-http_stub_status_module --with-http_gzip_static_module \
[*] --http-client-body-temp-path=/var/tmp/nginx/client/ \
[*] --http-proxy-temp-path=/var/tmp/nginx/proxy/ \
[*] --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
[*] --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
[*] --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre
2.在这里http://nginx.org/en/download.html找到最新的nginx版本,并下载到服务器上
3.对新版本进行解压并编译,其中安装目录必须和原来的一样,但是可以添加一些新的参数
[*]# tar xvf nginx-1.2.4.tar.gz
[*]# cd nginx-1.2.4
[*]# ./configure --prefix=/usr/local \
[*]--sbin-path=/usr/sbin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf \
[*]--error-log-path=/var/log/nginx/error.log \
[*]--http-log-path=/var/log/nginx/access.log \
[*]--pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock \
[*]--user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module \
[*]--with-http_stub_status_module --with-http_gzip_static_module \
[*]--http-client-body-temp-path=/var/tmp/nginx/client/ \
[*]--http-proxy-temp-path=/var/tmp/nginx/proxy/ \
[*]--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
[*]--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
[*]--http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre
4.只执行make命令,不需要make install
[*]# make
5.替换nginx的一个二进制文件
[*]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
[*]# cp objs/nginx /usr/local/nginx/sbin/
6.进行测试是否成功
[*]# /usr/local/nginx/sbin/nginx -t
[*] nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
[*] nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
7.执行命令进行平滑升级
[*]# make upgrade
[*] /usr/sbin/nginx -t
[*] nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
[*] nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[*] kill -USR2 `cat /var/run/nginx/nginx.pid`
[*] sleep 1
[*] test -f /var/run/nginx/nginx.pid.oldbin
[*] kill -QUIT `cat /var/run/nginx/nginx.pid.oldbin`
make upgrade执行命令后显示的信息,其实显示的就是都执行了哪几个命令,也可以自己手动执行那个kill命令
8.在次查看版本信息
[*]# /usr/local/nginx/sbin/nginx -V
[*] nginx version: nginx/1.2.4
[*] built by gcc 4.1.2 20080704 (Red Hat 4.1.2-46)
[*] TLS SNI support disabled
[*] configure arguments: --prefix=/usr/local --sbin-path=/usr/sbin/nginx
[*] --conf-path=/usr/local/nginx/conf/nginx.conf \
[*] --error-log-path=/var/log/nginx/error.log \
[*] --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid \
[*] --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx \
[*] --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module \
[*] --with-http_gzip_static_module \
[*] --http-client-body-temp-path=/var/tmp/nginx/client/
[*] --http-proxy-temp-path=/var/tmp/nginx/proxy/ \
[*] --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
[*] --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
[*] --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre
nginx升级完成!
页:
[1]