服务器:CentOS 6.4 64位
升级方案:nginx1.4.0 – nginx1.4.3
Nginx编译后就一个小文件,不带动态库,升级也可以无缝升级,并不影响访问,按下面的命令执行就可以,具体想升级的版本可以到nginx上查看
首先下载Nginx
$ wget http://nginx.org/download/nginx-1.4.3.tar.gz $ tar -zxvf nginx-1.4.3.tar.gz $ cd nginx-1.4.3/ $ ./configure --user=www --group=www --prefix=/usr/local/webservice/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module $ make
注意,千万不要执行make install
小提示:如何查看nginx安装配置选项?
$ service nginx -V
接着升级nginx
编译完,在objs目录下有一个nginx执行文件,就是它了:
// 备份下原来老的nginx文件
$ sudo mv /usr/local/webservice/nginx/sbin/nginx /usr/local/webservice/nginx/sbin/nginx.old // 进入objs目录拷贝nginx文件 $ cd objs $ sudo cp nginx /usr/local/webserver/nginx/sbin/nginx
// 测试看看
$ /usr/local/webserver/nginx/sbin/nginx -t
// 升级nginx
$ sudo make upgrade
小提示:nginx进程pid文件默认位置是nginx的logs目录:/logs/nginx.pid;如果您修改过nginx的pid存放位置那么可能出现类似这样的错误提示:
$ sudo make upgrade /usr/local/webserver/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 kill -USR2 `cat /usr/local/nginx/logs/nginx.pid` cat: /usr/local/nginx/logs/nginx.pid: 没有那个文件或目录 kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec] make: *** [upgrade] 错误 1
解决方法:
网上一大堆,比如各种kill进程id,复杂程度我就不想说了,这里给一个简单的办法
先stop当前的nginx的进程
$ sudo kill `cat /usr/local/webserver/nginx/nginx.pid`
修改nginx.conf
$ sudo vi /usr/local/webserver/nginx/conf/nginx.conf
// 找到并修改pid
pid /usr/local/webserver/nginx/logs/nginx.pid;
拷贝新版本的nginx到当前sbin目录,执行升级(参照上述方法)
启动nginx