• 周二. 5月 7th, 2024

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

nginx 平滑升级到Tengine并编译concat

[db:作者]

3月 4, 2023

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
killUSR2$(catpathtonginx/logs/nginx.pid)

此时主进程的 pid 文件会改名为 .pid.oldbin ,并启动新的主进程和工作进程,查询进程

1
psef|grep[n]ginx

会发现同时存在2主进程和多个工作进程,即新老版本同时工作,此时对旧版本发送从容关闭工作进程的信号。

1
killWINCH$(catpathtonginx/logs/nginx.pid.oldbin)

6、旧版本在处理完手头上的工作就会慢慢“退休”,此时再次查询进程会发现旧版本只有1个主进程存在了,最后发送从容关闭的信号给他。

1
killQUIT$(catpathtonginx/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 重新加载一下配置文件就行。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注