Skip to content

生产环境重启

注意!!!

对生产环境的更新、重启、重新部署等操作,一定要先备份生产数据库,再操作!!!

重启后端

介绍

在生产环境下,一般禁用自动热重启。使用 Gunicorn + Uvicorn Worker 启动的 Django项目,默认不会自动热重启。即文件修改后不会自动重新加载应用。

重启Gunicorn

要实现在生产环境安全重启Django项目,可向 Gunicorn 主进程发送 HUP 信号

sh
# 查找Gunicorn主进程ID
ps auxf
ps aux | grep gunicorn

# 重启 gunicorn
kill -HUP <Gunicorn主进程ID>

示例

sh
# ps auxf 部分执行结果如下,则 141 是Gunicorn主进程ID
root         141  0.0  0.7  36512 31292 ?        S    Jul08   0:02 /usr/local/bin/python3.11 
/usr/local/bin/gunicorn -b 0.0.0.0:8000 -k uvicorn.workers.UvicornWorker mysite.asgi:application
root         313  1.1  1.6  80720 66620 ?        S    03:30   0:01  \_ /usr/local/bin/python3.11 /usr/local/bin/gunicorn -b 0.0.0.0:8000 -k uvicorn.workers.UvicornWorker mysite.asgi:application

# 重启 gunicorn
kill -HUP 141

重启前端

介绍

在生产环境下,前端一般由 Nginx 或 OpenResty 提供服务。

重启Nginx

优雅重载(推荐)

sh
sudo systemctl reload nginx
# 或使用等效命令
sudo nginx -s reload

强制重启方案(必要时):仅当更改核心配置或模块时使用

sh
#配置检查(强制步骤)
sudo nginx -t
# 强制重启
sudo systemctl restart nginx

重启OpenResty

标准优雅重启方案(推荐)

sh
# 1. 发送 HUP 信号重载配置(保持连接)
sudo kill -HUP $(cat /usr/local/openresty/nginx/logs/nginx.pid)

# 2. 监控日志确保 Lua 模块正常加载
tail -f /usr/local/openresty/nginx/logs/error.log | grep -i "lua init"