nginx是超级稳定的服务器,一般不会因为超载问题而需要重启,重启的目的一般都是修改配置文件后需要加载一下。
最开始的时候,我是用最直接的重启方式
killall -9 nginx;/data/nginx/sbin/nginx
如果机器比较慢,kill进程时一瞬间杀不完,再执行一次即可。这种重启方式不是特别安全,如果配置有误,则会重启失败,需要重新修改配置文件然后再启动,期间会消耗一点时间。不过对于目前普遍还是不怎么严格的http界而言,这点时间还不至于产生太大损失,只要不是在关键时刻搞出来就好。如果希望沿用这种重启办法,我提议还是先好好测试吧。
后来我在nginx.net上看到了一种更奇妙的重启
kill -HUP $pid($pid就是nginx master进程的进程号)
我一般这样用
kill -HUP `cat /data/nginx/logs/nginx.pid`
这种方式的好处是实现“平滑重启”,在ps -aux中可以看到,nginx首先启动新进程,旧的进程仍然提供服务,在一段时间后,旧的进程服务结束就自动关闭,剩下新进程继续服务。但是这种方式也是有缺点的,如果配置文件有误,或者资源冲突,则重启失效,但nginx并没有任何的提示!这就会时常发现改动的配置文件没有生效,又比较难找到问题。
所以,最后杂和了一下问题,弄了一个nginx.sh,这个版本的nginx.sh还是没有解决kill -HUP的资源冲突的问题,但解决了配置文件的问题。资源冲突的比如80端口被占用、日志文件目录没有创建这种的,我再想想办法。
#!/bin/sh
BASE_DIR=’/data/’
${BASE_DIR}nginx/sbin/nginx -t -c ${BASE_DIR}nginx/conf/nginx.conf >& ${BASE_DIR}nginx/logs/nginx.start
info=`cat ${BASE_DIR}nginx/logs/nginx.start`
if [ `echo $info | grep -c "syntax is ok" ` -eq 1 ]; then
if [ `ps aux|grep "nginx"|grep -c "master"` == 1 ]; then
kill -HUP `cat ${BASE_DIR}nginx/logs/nginx.pid`
echo “ok”
else
killall -9 nginx
sleep 1
${BASE_DIR}nginx/sbin/nginx
fi
else
echo “######## error: ########”
cat ${BASE_DIR}nginx/logs/nginx.start
fi
———————————————
kill -HUP `cat /data/nginx/logs/nginx.pid`
这句话比较长,不容易记住,现在发现一种更为简洁的办法:
killall -HUP nginx
killall会将HUP指令传到所有的nginx进程里,包括master和worker,但是worker进程并不认识HUP指令,所以事实上只有master进程获取了HUP,并执行重启。
于是乎,nginx的kill指令:
kill -USR1
kill -QUIT
……
都可以用killall简化执行。
分享到:
相关推荐
如果配置无误,脚本会判断 Nginx 是否已经在运行,如果是,则发送 `SIG_HUP` 信号进行平滑重启;如果不是,则直接启动 Nginx。如果配置检查失败,脚本会输出错误信息,帮助运维人员快速定位问题。 以下是一个示例 `...
在CentOS系统中,为了方便管理和控制Nginx服务,通常会创建启动和重启脚本。下面我们将深入探讨如何创建和理解这些脚本以及它们在系统中的作用。 首先,我们来看启动和重启脚本的基本结构。在给定的脚本中,脚本以...
然后,在`events`或`http`块中,可以配置`reload`指令,以便在配置文件改变时平滑重启: ```nginx reload-on-notification on; ``` 最后,确保Nginx服务配置正确无误后,可以使用`nginx.exe -s reload`命令重新...
如果回答“yes”,脚本会再次检查Nginx是否在运行,如果运行则调用`nginx -s reload`命令实现平滑重启,显示“重新启动成功....”。如果Nginx未启动,脚本将提示“nginx没有启动无法重新启动...”。如果用户回答“no...
标题中的“Windows下Nginx启动、关闭、重启bat工具”指的是在Windows操作系统中,使用批处理脚本(.bat文件)来管理Nginx服务器的启动、停止和重启操作。这种工具通常由IT专业人士创建,以简化Nginx服务的日常管理。...
此脚本用于控制 Nginx 的启动、停止、重启以及状态检查等功能。 #### 脚本结构解析 ### 标题与描述 - **标题**:“nginx开机启动脚本” - **描述**:“nginx开机启动脚本” 这两个部分明确指出了脚本的主要目的...
标题中的“一句简单命令重启nginx”指的是通过一个简洁的指令来重新启动Nginx服务,而不是采用复杂的启动脚本。在描述中提到了Apache服务器,它的重启命令相对简单,但在Nginx中,如果不了解特定的命令行选项,可能...
本文将指导你如何平滑升级 Nginx 版本,确保服务器保持高性能和高可用性。LNMP 介绍、Linux 操作系统、Nginx Web 服务器、MySQL/MariaDB 数据库服务器和 PHP/Python/Perl 等开发语言的相关知识点如下: LNMP 介绍 ...
快捷启动、平滑重启nginx,放在/etc/init.d/目录下
2.4 Nginx的启动、停止、平滑重启 2.5 Nginx的平滑重启 2.6 Nginx的信号控制 2.7 Nginx的平滑升级 第2部分 进 阶 篇 第3章 Nginx的基本配置与优化 3.1 Nginx的完整配置示例 3.2 Nginx的虚拟主机配置 3.3 ...
5. 重新配置:运行`configure`脚本来配置Nginx,确保指定新添加的模块。命令可能类似于: ``` ./configure --with-http_flv_module --add-module=path/to/nginx-http-flv-module ``` 其中`path/to/nginx-...
可以使用`nginx -t`检查配置文件的语法,`nginx -T`查看当前配置,以及`nginx -s reload`平滑重启来应用配置更改。定期检查错误日志,优化配置以提升性能,是Nginx运维的关键。 Nginx 还支持反向代理、负载均衡、...
压缩包中的`Tweak-Optimize tcpip parameters for nginx connections.reg`可能是一个用于优化TCP/IP参数的注册表脚本,以提升Nginx连接性能。`Readme nginx-win version.txt`和`FAQ nginx-win version.txt`可能包含...
使用 `-s quit` 命令平滑关闭 Nginx,等待所有请求处理完再退出。 3. `nginx_reload.bat`:重载 Nginx 配置。当配置文件发生更改时,无需停止服务,直接使用 `-s reload` 命令即可让 Nginx 使用新配置。 四、Nginx ...
介绍了一系列nginx命令,包括平滑重启nginx服务、重新打开日志文件、检测配置文件的正确性、显示nginx版本信息等。 ### 9. 防火墙配置 为了使得外部浏览器能够访问nginx,需要在防火墙中放开80端口。这里使用...
无论最后是否成功,都会输出“nginx重启成功”。 这个脚本提供了Nginx服务的基本管理功能,但实际部署时可能需要根据具体的环境和需求进行调整,例如添加日志记录、错误处理等增强功能。理解这个脚本的工作原理有助...
4. **平滑重启Nginx**(不影响正在处理的连接): ``` sudo /usr/local/nginx/sbin/nginx -s reload 或 sudo kill -s HUP `cat /usr/local/nginx/logs/nginx.pid` ``` 5. **重新加载配置文件**(当配置文件有...
Nginx支持在线热更新配置,无需中断服务即可更新配置,同时平滑重启功能确保在升级或修复时不会导致服务中断。 综上所述,Nginx 1.8.0版本提供了全面的Web服务器和反向代理功能,适用于各种规模的网站和应用。下载...
2. **`nginx`重启与热加载**:当`lua`代码变动后,可以通过`nginx`的平滑重启或热装载功能避免服务中断。 3. **服务连接失败的处理**:`nginx`的调度策略可以设定为在服务连接失败时自动切换到正常服务。 通过上述...