nginx的热更新【随时更新修正】

  • vim编辑nginx配置文件的显示效果设置
  • 在nginx的vim包的下载
  • 复制其中的vim内容到linux的vim文件
  • 热部署,热更新openresty的nginx
  • nginx的可执行文件的拷贝
  • 对master进程进行新旧替换
  • 日志切割
  • For Example:


vim编辑nginx配置文件的显示效果设置

在nginx的vim包的下载

在nginx.org 是公开版本,在nginx.com 中为商用版本,技术提供的服务多些。在公开版中,分Mainline version(尝鲜版)与Stable version(稳定版)与Legacy versions(历史稳定版)。CHANGES显示更新内容。1.17.x(单数为测试版Mainline version),1.16.x(双数为稳定版Stable version),在上面下载好需要的版本。

复制其中的vim内容到linux的vim文件

在解压出的文件中,有一个contrib文件,文件中的vim的文件,就包含在进行vim编辑时显示的nginx显示效果,需要把vim中的内容复制到~/.vim/,如果没有该文件夹则复制到linux的/usr/share/vim/vimfiles/当中。
这样就能够以nginx独有的显示方法显示vim编辑nginx.conf时的内容。

热部署,热更新openresty的nginx

nginx的可执行文件的拷贝

热部署只需要更换nginx(在linux中显示绿色)的可执行文件,先把原先的在/usr/local/openresty/nginx/sbin/下的nginx文件,进行备份,cp nginx nginx.old。预防翻车。
对下载的nginx进行编译,执行和安装(./configure【该命令执行时定义好路径】 、make、make install)。最后,文件夹当中会生成一个src文件夹,在文件夹中含有刚刚编译好的二进制nginx文件,把它进行复制到、nginx/sbin/当中进行替换,cp -r nginx /usr/local/openresty/nginx/sbin -f 。

对master进程进行新旧替换

然后进行nginx进程的查看,ps -ef | grep nginx, 会有之前nginx运行时的master揽活和分活的主进程,以及执行处理请求的worker进程。接着执行kill -USR2 (旧master进程的PID) ,这样就会新起一个master进程,老的master也同时存在。老的worker进程就不会监听80端口,新的master也会有新的worker进程。然后就是优雅关闭老的worker进程,执行kill -WINCH (老的master进程的PID)。这样所有老的worker就会全部退出,但老的master还会保留做版本回退。

日志切割

/var/log/nginx 有access.log ,需要把以前的log文件备份,用mv。然后直接执行 nginx -s reopen。就可以实现日志切割。一般每天,每周执行一次。而执行方式用bash脚本来执行,可选择编写一个rotate.sh文件,然后用crontab 来进行定时执行日志切割。crontab -l 可以查看所有自动执行的指令。
通过 crontab -e 就可以进入编辑自动执行脚本,输入2进入编辑。

For Example:

当天23点,第二天0点到凌晨7点 每隔1分钟执行一次脚本

* 23,00-07/1 * * * /bin/sh /home/omc.h.sh
每年的4月份每周的周一到周三的11点执行脚本  
00 11 *  4 1-3 /bin/sh /home/omc/h.sh