在配置文件中更改后优雅地重新启动 Nginx Web 服务器
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 是的 |
要求 | Linux 或 Unix 终端 |
类别 | Web 服务器 |
操作系统兼容性 | BSD • Linux • Unix |
预计阅读时间 | 3 分钟 |
如何优雅地重启 Nginx 服务
对于使用 systemctl 命令的带有 systemd 的 GNU/Linux,语法如下:
$ sudo systemctl reload nginx
对于带有 sysv init 的旧版 Linux 发行版,请尝试 service 命令:
$ sudo service nginx reload
执行 reload 选项时,主 Nginx 进程将关闭子进程,加载新配置,并启动新的子进程,而不会干扰操作。因此,我们更喜欢reload。restart换句话说,不要使用以下任何 Linux 命令进行优雅重启:
$ sudo systemctl restart nginx
或
$ sudo service nginx restart
优雅地重启 Nginx Web 服务器
主 Nginx 进程可以在 Linux 和类 Unix 系统上处理以下信号:
- TERM, INT :快速关机
- QUIT :正常关机
- KILL :停止顽固进程
- HUP :配置重新加载。使用新配置启动新的工作进程。正常关闭旧的工作进程
- USR1:重新打开日志文件
- USR2:即时升级可执行文件
- WINCH :正常关闭工作进程
在 Linux 或类 Unix 系统上优雅地重启 Nginx 的通用语法
以 root 用户身份尝试以下kill 命令和cat 命令的组合:
$ sudo kill -HUP $( cat /path/to/nginx.pid )
可以使用 pgrep 命令或 ps 命令找到 nginx pid,如下所示::
这是我所看到的:
$ pgrep nginx
$ ps aux | grep [n]ginx
root 4333 0.0 0.4 70776 9352 ? Ss Nov24 0:00 nginx: master process /usr/local/nginx/sbin/nginx nginx 9921 1.0 0.5 70776 9888 ? S Dec05 19:24 nginx: worker process nginx 9922 1.0 0.5 70776 10240 ? S Dec05 19:42 nginx: worker process nginx 9923 0.0 0.4 70776 8724 ? S Dec05 0:00 nginx: cache manager process
记下 PID # 4333。接下来,以 root 用户身份输入以下命令:
请注意,隐藏了 ps 命令输出中的 grep。
$ kill -HUP 4333
$ sudo kill -HUP 4333
ps aux | grep [n]ginx
如果你使用的是 Nginx 版本 0.7.53+
最新版本的 Nginx 可以非常轻松地在 Unix 和 Linux 上重新加载和重新启动 Web 服务。您只需传递以下选项-s reload:
# nginx -s reload
或
# /usr/local/nginx/sbin -s reload
Debian / CentOS / RHEL / Fedora / Ubuntu Linux 尝试
# /etc/init.d/nginx reload
FreeBSD 用户
# /usr/local/etc/rc.d/nginx reload
OpenBSD 用户
# /usr/sbin/nginx -s reload
或者
# /etc/rc.d/nginx reload
如何重新加载/正常重启 chrooted nginx 服务器?
键入以下命令:
# /usr/sbin/chroot /jail /usr/local/nginx/sbin/nginx -s reload
如何在 Docker 或 LXD 容器内重新加载 Nginx
Docker 的语法如下:
# docker container exec {container_name_here} nginx -s reload
或者
# docker kill -s HUP {container_name_here}
LXD 用户可以输入以下命令:
$ lxc exec {container_name_here} -- nginx -t reload
结论
您学习了如何使用各种命令行方法优雅地重新加载 Nginx Web 服务器。请参阅此处的 Nginx 文档了解更多信息。使用 man 命令阅读 Nginx 手册页:
$ man nginx