把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  星期四

评论区

发表评论

        姓名:
邮箱|网站:
        内容:

  (可按Ctrl+Enter提交)