把nginx升级到1.4.0稳定版(更新:此版本发现漏洞,请尽快升级)。
2013/05/13 update:
前些天,nginx 1.4.0 被发现存在一个缓冲区溢出漏洞,可能导致执行任意代码,请尽快升级到目前最新稳定版1.4.1,或开发版1.5.0,新版本中修复了这一漏洞。1.4.1稳定版下载地址:http://nginx.org/download/nginx-1.4.1.tar.gz
之前的1.2.0是去年安装的。后面有时会去nginx官网看看,是否有更新,发现更新还是蛮快的。似乎两个月左右会发一个稳定版。本人没有最新版本强迫症,所以打算等等,到1.3.0稳定版再升级。今天看到消息说,释出1.4.0稳定版了。打开nginx.org看下,果然啊。不知道为什么直接跳过1.3直接到1.4了,然后想起来应该是版本号3位的时候,如果中间位是奇数为开发版,偶数则为稳定版。
源码安装,后面还遇到个问题,记录下升级步骤,备忘。
先打开个记事本。打开putty,远程登录到centos,我是su - 切换到管理员状态。
序号要从0开始么,好吧。索引都是从0开始的。
步骤:
0.查看下当前nginx的版本,及参数
# /usr/local/webserv/nginx/sbin/nginx -V
显示:
nginx version: nginx/1.2.0
built by gcc 4.1.2 20080704 (Red Hat 4.1.2-52)
TLS SNI support disabled
configure arguments: --user=nginx --group=nginx --prefix=/usr/local/webserv/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_perl_module
把configure arguments:后面的那串颜色部分拷到记事本中。
1.到的某个文件夹下,把 nginx1.4.0下载下来、解压。
# cd /software/download/
# wget http://nginx.org/download/nginx-1.4.0.tar.gz
# tar -zxvf nginx-1.4.0.tar.gz
2.cd到解压后的目录下:
# cd nginx-1.4.0
3.由于要花点时间,为了防止当前会话中断,创建一个screen,随便取个名比如叫upnginx 意思是upgrade nginx---升级nginx
# screen -S upnginx
4.开始配置,./configure 把记事本上的那串复制过来
# ./configure --user=nginx --group=nginx --prefix=/usr/local/webserv/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_perl_module
5.然后make
# make
不要make install
6.make完,进入objs看下。
# cd objs/
# ls
显示:
-------
Makefile nginx ngx_auto_config.h ngx_modules.c src
autoconf.err nginx.8 ngx_auto_headers.h ngx_modules.o
上面有个nginx,这就是我们要的。
7.备份。把旧nginx备份为nginx.1.2.0.bak, 万一升级失败什么的就可以还原回去
# mv /usr/local/webserv/nginx/sbin/nginx /usr/local/webserv/nginx/sbin/nginx.1.2.0.bak
8.执行升级
先看下Makefile
# cat Makefile
其中upgrade下面就是升级方法,记得要看下里面的路径对不对:
upgrade:
/usr/local/webserv/nginx/sbin/nginx -t
kill -USR2 `cat /usr/local/webserv/nginx/logs/nginx.pid`
sleep 1
test -f /usr/local/webserv/nginx/logs/nginx.pid.oldbin
kill -QUIT `cat /usr/local/webserv/nginx/logs/nginx.pid.oldbin`
先把第一个命令拷下来,运行下直接提示出错了。
#/usr/local/webserv/nginx/sbin/nginx -t
一个警告提示:
nginx: [alert] version 1.4.0 of nginx.pm is required, but 1.2.0 was found
nginx: configuration file /usr/local/webserv/nginx/conf/nginx.conf test failed
网上找了下没找到什么好方法。有个方法说是make install 刚才不是说不能make install么,刚才有备份不是,可以还原回去,但要我还原回旧版?很难。看了下以前的安装过程,make install 应该不会有什么问题,于是直接make install。记住,把原来的配置文件什么的拷下来备份下。
# make install
9.再执行下Makefile里的那几个升级命令
# /usr/local/nginx/sbin/nginx -t
# kill -USR2 `cat /usr/local/webserv/nginx/logs/nginx.pid`
# test -f /usr/local/webserv/nginx/logs/nginx.pid.oldbin
# kill -QUIT `cat /usr/local/webserv/nginx/logs/nginx.pid.oldbin`
都没报错,于是,奇迹出现了~
再看下nginx的版本。升到1.4.0 了。再开下网站什么的,一切都正常。
#/usr/local/webserv/nginx/sbin/nginx -V
nginx version: nginx/1.4.0
built by gcc 4.1.2 20080704 (Red Hat 4.1.2-54)
TLS SNI support disabled
configure arguments: --user=nginx --group=nginx --prefix=/usr/local/webserv/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_perl_module
然后要不要make clean什么的就随便你了。
简单说来就是看版本、记下里面的配置、下载、解压、./configure、然后make、备份、把objs上的nginx拷到现在的nginx目录下,执行升级。如果升级的时候失败出现上面那样的错误,可以试下make install。总之呢,最重要的就是做好备份。
好啦。找个时间把MySql也换成MariaDB吧。
类别:OperationMaintenance 阅读(0) 评论(0) 发表时间:2013-04-25 20:56 星期四