Nginx平滑升级为Tengine最新版(附header头部信息修改方法)
#Nginx平滑升级为Tengine最新版本
#不懂博客原创,转载请注明出处和链接
#http://linux.fcbu.com/nginx-upgrade-tengine.htm
#Tengine 1.2.3的特性:
#继承Nginx-1.0.12的所有特性;
#输入过滤器机制支持。通过使用这种机制Web应用防火墙的编写更为方便;
#组合多个CSS、JavaScript文件的访问请求变成一个请求;
#支持管道和syslog形式的日志和抽样;
#自动根据CPU数目设置亲缘性;
#监控系统的负载和资源占用从而对系统进行保护;
#显示对运维人员更友好的出错信息,便于定位出错机器;
#更强大的访问速度限制模块;
#backtrace模块,程序崩溃的时候可以显示出错的调用栈。
mkdir -p /tmp/upnginx/
cd /tmp/upnginx/
#### 安装pcre 支持删除指定url模块和代理缓存的模块 支持Tengine伪静态 ########
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.30.tar.gz
tar zxvf pcre-8.30.tar.gz
cd pcre-8.30
./configure --prefix=/usr/local/pcre
make
make install
cd ../
#Tengine最新版去官方看:http://tengine.taobao.org/index_cn.html
wget -c http://tengine.taobao.org/download/tengine-1.2.3.tar.gz
tar zxvf tengine-1.2.3.tar.gz
cd tengine-1.2.3/
########### 改header信息(可略过) ######################
#如果要更改header信息的话,
vim src/core/nginx.h
#define TENGINE_VERSION "1.2.3" 修改为你想要的版本号
#define TENGINE_VER "Tengine/" TENGINE_VERSION 修改为你所要的名称
vim src/http/ngx_http_special_response.c
大约80行"<hr/>Powered by Tengine" CRLF
改为"<hr/>Powered by FCBU.com" CRLF
vim src/http/ngx_http_header_filter_module.c
大约49行:
static char ngx_http_server_string[] = "Server: Tengine" CRLF;
static char ngx_http_server_full_string[] = "Server: " TENGINE_VER CRLF;
改为:
static char ngx_http_server_string[] = "Server: FCBU.com" CRLF;
static char ngx_http_server_full_string[] = "Server: " TENGINE_VER CRLF;
## 默认的Nginx编译选项里是用 debug模式的(-g参数),在 auto/cc/gcc 文件最底下,去掉那个 -g 参数
## 就是将 CFLAGS="$CFLAGS -g" 修改为 CFLAGS="$CFLAGS" 或者直接删除这一行
vim auto/cc/gcc
#如果要修改探针中显示的web服务软件信息,就修改nginx安装目录中conf/fcgi.conf,将
#fastcgi_param SERVER_SOFTWARE nginx;
#中的信息修改掉。这个是配置文件,是在编译之后修改的。
########### 改header信息 end ######################
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_sub_module --with-openssl=/usr/ --with-pcre=/tmp/upnginx/pcre-8.30
#注意:--with-pcre=/tmp/upnginx/pcre-8.30 指向的是源码包解压的路径,而不是安装的路径,否则会报错。
make
#但不要Make install
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
cp objs/nginx /usr/local/nginx/sbin/nginx
/usr/local/nginx/sbin/nginx -v
#如果提示Tengine version: FCBU.com/1.2.3 (nginx/1.0.12)那表示基本成功了。
#用如下命令查看下是否有错误
/usr/local/nginx/sbin/nginx -t
#再执行:
make upgrade
/usr/local/nginx/sbin/nginx -V
#将会出现nginx的版本及编译的参数。升级完成!
#网上一些人所说的不支持stub_status模块,要在配置文件/usr/local/nginx/conf/nginx.conf里删除或者注释stub_status on;的原因是因为编译的时候没有加 --with-http_stub_status_module参数,我的Nginx平滑升级为Tengine最新版里面的方法已经加了参数,所以不用理会。
#最后重启nginx即可:
/etc/init.d/nginx restart
#### 错误解决方法 2012年9月8日更新 ######
make的时候如果遇到如下错误:
------------
cd /usr/ \
&& make clean \
&& ./config --prefix=/usr//.openssl no-shared no-threads \
&& make \
&& make install LIBDIR=lib
make[2]: Entering directory `/usr'
make[2]: *** 没有规则可以创建目标“clean”。 停止。
make[2]: Leaving directory `/usr'
make[1]: *** [/usr//.openssl/include/openssl/ssl.h] 错误 2
make[1]: Leaving directory `/tmp/upnginx/tengine-1.4.0'
make: *** [build] 错误 2
-----或者-----
cd /usr/ \
&& make clean \
&& ./config --prefix=/usr//.openssl no-shared no-threads \
&& make \
&& make install LIBDIR=lib
make[2]: Entering directory `/usr'
make[2]: *** No rule to make target `clean'. Stop.
make[2]: Leaving directory `/usr'
make[1]: *** [/usr//.openssl/include/openssl/ssl.h] Error 2
make[1]: Leaving directory `/tmp/upnginx/tengine-1.4.0'
make: *** [build] Error 2
-------------
解决方法:(注意:openssl不用安装,只要解压出来就行。)
cd /tmp/upnginx/
wget http://www.openssl.org/source/openssl-1.0.1c.tar.gz
tar zxvf openssl-1.0.1c.tar.gz
编译的时候将对应参数改为:--with-openssl=/tmp/upnginx/openssl-1.0.1c/