1、到http://tengine.taobao.org/下载最新的Tengine
2、编译 Tengine,我习惯修改下显示的版本号,修改源码中的 src/core/nginx.h 文件命令:./configure;make
3、
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
cp -r objs/nginx /usr/local/nginx/sbin/nginx
cp -r objs/dso_tool /usr/local/nginx/sbin/dso_tool
4、/usr/local/nginx/sbin/nginx -t(检测)
5、service nginx restart(需重启)
5、进行不重启平滑升级,先发送平滑升级的信号
1
|
kill-USR2$(catpath-to-nginx/logs/nginx.pid)
|
此时主进程的 pid 文件会改名为 .pid.oldbin ,并启动新的主进程和工作进程,查询进程
1
|
ps-ef|grep[n]ginx
|
会发现同时存在2主进程和多个工作进程,即新老版本同时工作,此时对旧版本发送从容关闭工作进程的信号。
1
|
kill-WINCH$(catpath-to-nginx/logs/nginx.pid.oldbin)
|
6、旧版本在处理完手头上的工作就会慢慢“退休”,此时再次查询进程会发现旧版本只有1个主进程存在了,最后发送从容关闭的信号给他。
1
|
kill-QUIT$(catpath-to-nginx/logs/nginx.pid.oldbin)
|
7、完成,可以用 curl -I 目标 来查看头部验证是否升级成功。
扩展:
1)编译concat
-
配置
./configure [--with-http_concat_module | --with-http_concat_module=shared]
--with-http_concat_module选项,concat模块将被静态编译到tengine中
--with-http_concat_module=shared,concat模块将被编译成动态文件,采用动态模块的方式添加到tengine中
-
关于tengine的dso动态加载的配置可以参考官方的文档http://tengine.taobao.org/document_cn/dso_cn.html
- 如果是-with-http_concat_module=shared的话,会在tengine的modules目录里生成一个.so文件,需要在nginx的nginx.conf配置文件里加入
-
dso{ load 你的so文件; }
然后执行./nginx -s reload 重新加载一下配置文件就行。