前幾天我同事晚上值班沒事的時候,把公司客戶的一些nginx服務器進行了升級,這種操做我還歷來沒有作過,也挺好奇的,今天閒來沒事就在網上找了相似的文檔,進行了操做,並把其過程記錄了下來……html
1.查看本身服務器nginx的版本和最先本身編譯安裝是的參數 nginx
- [root@localhost ~]# /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.對新版本進行解壓並編譯,其中安裝目錄必須和原來的同樣,可是能夠添加一些新的參數ide
- [root@localhost ~]# tar xvf nginx-1.2.4.tar.gz
- [root@localhost ~]# cd nginx-1.2.4
- [root@localhost 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測試
- [root@localhost nginx-1.2.4]# make
5.替換nginx的一個二進制文件ui
- [root@localhost nginx-1.2.4]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
- [root@localhost nginx-1.2.4]# cp objs/nginx /usr/local/nginx/sbin/
6.進行測試是否成功spa
- [root@localhost nginx-1.2.4]# /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.執行命令進行平滑升級xml
- [root@localhost nginx-1.2.4]# 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命令htm
8.在次查看版本信息ip
- [root@localhost nginx-1.2.4]# /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升級完成!