linux 平滑重启进程,nginx 平滑重启与升级的实现方法分享

有时候我们需要平滑重启nginx服务,防止出现问题,这里简单的总结,方便需要的朋友

如果改变了Nginx的配置文件(nginx.conf),想重启Nginx,同样可以通过发送系统信号给Nginx主进程的方式来进行.不过,重启之前,要确认Nginx配置文件(nginx.conf)的语法是正确的,否则Nginx将不会加载新的配置文件。通过以下命令可以判断Nginx配置文件是否正确:

/usr/local/webserver/nginx/sbin/nginx -t -c

/usr/local/webserver/nginx/conf/nginx.conf

如果配置文件不正确,屏幕将会提示配置文件的第几行出错:

[emerg]:unknowndirective"abc"inlusrllocaUwebserverlnginxjconflnginx.conf:55

Configurationfile/usr/local/webserver/nginx/conf/nginx·conf test failed

如果配置文件正确,屏幕将提示以下两行信息:

The configuration file/usr/loca/webserver/nginx/conf/ syntax is ok

Configuration file/usr/local/webserver/nginx/conf/nginx.conf test is successful

这时候,就可以平滑重启Nginx了。

复制代码 代码如下:

/usr/local/www/nginx/sbin/nginx -xs reloadx

或:

复制代码 代码如下:

killx -HUP `cat /usr/local/www/nginx/logs/nginx.pidx`

下面是一些补充:

平滑重启 kill -HUP `cat /usr/local/www/nginx/logs/nginx.pid`

平滑升级nginx

cd /yujialin

wget

tar zxvf nginx-1.0.6.tar.gz

cd nginx-1.0.6

/usr/local/www/nginx/sbin/nginx -V

nginx: nginx version: nginx/1.0.4

nginx: built by gcc 4.1.2 20080704 (Red Hat 4.1.2-50)

nginx: configure arguments: --prefix=/usr/local/www/nginx --with-pcre=/yujialin/pcre-8.12 --with-http_stub_status_module --with-http_gzip_static_module

这步是要得到编译参数

./configure --prefix=/usr/local/www/nginx --with-pcre=/yujialin/pcre-8.12 --with-http_stub_status_module --with-http_gzip_static_module

用上面这段编译

然后make,千万别make install

make完了 在objs目录下就多了个nginx,这个就是新版本的程序了

mv /usr/local/www/nginx/sbin/nginx /usr/

cp objs/nginx /usr/local/www/nginx/sbin/nginx

/usr/local/www/nginx/sbin/nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successfu

make upgrade 执行升级

执行完后 /usr/local/nginx/sbin/nginx -V

nginx: nginx version: nginx/1.0.6

nginx: built by gcc 4.1.2 20080704 (Red Hat 4.1.2-50)

nginx: configure arguments: --prefix=/usr/local/www/nginx --with-pcre=/yujialin/pcre-8.12 --with-http_stub_status_module --with-http_gzip_static_module

Linux平滑升级Nginx,一般建议通过替换配置文件和滚动重启的方式来实现,以避免服务中断。以下是详细的步骤: 1. **备份现有配置**: 在升级前,确保首先备份当前的Nginx配置文件和重要的数据目录,如 `/etc/nginx` 和 `/var/lib/nginx`. 2. **下载新版本**: 下载最新稳定版的Nginx源码包,或者从官方仓库获取更新的二进制包。比如: ```sh wget https://nginx.org/download/nginx-1.24.0.tar.gz ``` 3. **解压并安装**: 解压缩并进入目录,然后按照官方文档指示编译安装新版本: ```sh tar zxf nginx-1.24.0.tar.gz cd nginx-1.24.0 ./configure && make && make install ``` 4. **编辑新版本配置**: 将旧版本的配置文件复制到新版本的配置目录下,如 `/etc/nginx/sites-available/old.conf` -> `/etc/nginx/conf.d/old.conf`。然后编辑新配置,添加新的特性,修改必要的参数。 5. **启用新配置**: 创建一个新的站点配置文件用于新版本,如 `/etc/nginx/sites-available/new.conf`,并启用它: ```sh ln -s /etc/nginx/conf.d/new.conf /etc/nginx/sites-enabled/ ``` 6. **测试新配置**: 临时禁用旧配置,启动新配置进行初步测试,确保一切正常: ```sh rm /etc/nginx/sites-enabled/default nginx -t # 测试配置语法 service nginx reload # 仅加载新配置,不重启 curl http://yourdomain.com # 测试访问 ``` 7. **监控负载**: 确保流量正在平稳地转向新配置。可以使用`top`或`htop`查看进程负载,也可以借助`pmacct`等工具监控网络流量。 8. **滚动重启**: 逐个停止旧的Nginx实例并启动新实例,而不是一次性全停: ```sh for pid in $(ps aux | grep nginx | awk '{print $2}'); do kill -HUP $pid; done ``` 这样可以保证在每个实例都接管完流量后再杀掉旧版本。 9. **完成并验证**: 最后,确认所有的请求都已经迁移到新版本,检查日志没有异常,然后删除旧配置文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值