你可以在不中断服务的情况下-新的请求也不会丢失,使用新的nginx可执行程序替换旧的(当升级新版本或添加/删除服务器模块时)。(推荐学习:nginx运维)
首先,使用新的可执行程序替换旧的(最好做好备份),然后,发送USR2(kill-USR2pid)信号给主进程。
主进程将重命名它的.pid文件为.oldbin(比如:/usr/local/nginx/logs/nginx.pid.oldbin),然后执行新的可执行程序,依次启动新的主进程和新的工作进程:
PIDPPIDUSER%CPUVSZWCHANCOMMAND
331261root0.01164pausenginx:masterprocess/usr/local/nginx/sbin/nginx
3313433126nobody0.01368kqreadnginx:workerprocess(nginx)
3313533126nobody0.01380kqreadnginx:workerprocess(nginx)
3313633126nobody0.01368kqreadnginx:workerprocess(nginx)
3626433126root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx
3626536264nobody0.01364kqreadnginx:workerprocess(nginx)
3626636264nobody0.01364kqreadnginx:workerprocess(nginx)
3626736264nobody0.01364kqreadnginx:workerprocess(nginx)
在这时,两个nginx实例会同时运行,一起处理输入的请求。要逐步停止旧的实例,你必须发送WINCH信号给旧的主进程,然后,它的工作进程就将开始从容关闭:
PIDPPIDUSER%CPUVSZWCHANCOMMAND
331261root0.01164pausenginx:masterprocess/usr/local/nginx/sbin/nginx
3313533126nobody0.01380kqreadnginx:workerprocessisshuttingdown(nginx)
3626433126root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx
3626536264nobody0.01364kqreadnginx:workerprocess(nginx)
3626636264nobody0.01364kqreadnginx:workerprocess(nginx)
3626736264nobody0.01364kqreadnginx:workerprocess(nginx)
一段时间后,旧的工作进程处理了所有已连接的请求后退出,就仅由新的工作进程来处理输入的请求了:
PIDPPIDUSER%CPUVSZWCHANCOMMAND
331261root0.01164pausenginx:masterprocess/usr/local/nginx/sbin/nginx
3626433126root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx
3626536264nobody0.01364kqreadnginx:workerprocess(nginx)
3626636264nobody0.01364kqreadnginx:workerprocess(nginx)
3626736264nobody0.01364kqreadnginx:workerprocess(nginx)
这时,因为旧的服务器还尚未关闭它监听的套接字,所以,通过下面的几步,你仍可以恢复旧的服务器:
发送HUP信号给旧的主进程-它将在不重载配置文件的情况下启动它的工作进程
发送QUIT信号给新的主进程,要求其从容关闭其工作进程
发送TERM信号给新的主进程,迫使其退出
如果因为某些原因新的工作进程不能退出,向其发送KILL信号
新的主进程退出后,旧的主进程会由移除.oldbin前缀,恢复为它的.pid文件,这样,一切就都恢复到升级之前了。
如果尝试升级成功,而你也希望保留新的服务器时,发送QUIT信号给旧的主进程使其退出而只留下新的服务器运行:
PIDPPIDUSER%CPUVSZWCHANCOMMAND
362641root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx
3626536264nobody0.01364kqreadnginx:workerprocess(nginx)
3626636264nobody0.01364kqreadnginx:workerprocess(nginx)
3626736264nobody0.01364kqreadnginx:workerprocess(nginx)
以上是nginx运维中如何平滑升级的详细内容。更多信息请关注PHP中文网其他相关文章!

NGINX和Apache各有优劣,适合不同场景。1.NGINX适合高并发和低资源消耗场景。2.Apache适合需要复杂配置和丰富模块的场景。通过比较它们的核心特性、性能差异和最佳实践,可以帮助你选择最适合需求的服务器软件。

确认 Nginx 是否启动的方法:1. 使用命令行:systemctl status nginx(Linux/Unix)、netstat -ano | findstr 80(Windows);2. 检查端口 80 是否开放;3. 查看系统日志中 Nginx 启动消息;4. 使用第三方工具,如 Nagios、Zabbix、Icinga。

要关闭 Nginx 服务,请按以下步骤操作:确定安装类型:Red Hat/CentOS(systemctl status nginx)或 Debian/Ubuntu(service nginx status)停止服务:Red Hat/CentOS(systemctl stop nginx)或 Debian/Ubuntu(service nginx stop)禁用自动启动(可选):Red Hat/CentOS(systemctl disable nginx)或 Debian/Ubuntu(syst

如何在 Windows 中配置 Nginx?安装 Nginx 并创建虚拟主机配置。修改主配置文件并包含虚拟主机配置。启动或重新加载 Nginx。测试配置并查看网站。选择性启用 SSL 并配置 SSL 证书。选择性设置防火墙允许 80 和 443 端口流量。

服务器无权访问所请求的资源,导致 nginx 403 错误。解决方法包括:检查文件权限。检查 .htaccess 配置。检查 nginx 配置。配置 SELinux 权限。检查防火墙规则。排除其他原因,如浏览器问题、服务器故障或其他可能的错误。

在 Linux 中启动 Nginx 的步骤:检查 Nginx 是否已安装。使用 systemctl start nginx 启动 Nginx 服务。使用 systemctl enable nginx 启用在系统启动时自动启动 Nginx。使用 systemctl status nginx 验证启动是否成功。在 Web 浏览器中访问 http://localhost 查看默认欢迎页面。

在 Linux 中,使用以下命令检查 Nginx 是否已启动:systemctl status nginx根据命令输出进行判断:如果显示 "Active: active (running)",则 Nginx 已启动。如果显示 "Active: inactive (dead)",则 Nginx 已停止。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3汉化版
中文版,非常好用

Atom编辑器mac版下载
最流行的的开源编辑器

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

禅工作室 13.0.1
功能强大的PHP集成开发环境

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中