CentOS平滑升级Nginx到高版本

服务器: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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/325.html