修改py代码后自动重启uwsgi

nginx + uwsgi + django 开发过程中,发现如果修改了py代码,需要重新启动uwsgi才会生效
uwsgi这样做的目的相信是为了效率
如果有需要py代码改动时立即生效,可以在启动uwsgi的时候加入参数
py-autoreload=1 (如果写在ini配置文件中,记得一定要=1,否则不生效)
### 如何在Nginx和uWSGI环境中实现热部署 #### 热部署的概念 热部署是指在应用程序运行期间,无需停止服务即可更新代码或配置的过程。对于基于Nginx和uWSGI的Web应用环境来说,热部署可以通过平滑重启技术来实现,从而减少停机时间并提高用户体验。 --- #### Nginx 的热部署配置 Nginx 支持通过信号机制进行平滑重启,这使得可以在不中断现有连接的情况下加载新的配置文件。以下是具体操作方法: 1. **测试新配置的有效性** 在修改 `nginx.conf` 文件后,应先验证其语法是否正确。 ```bash nginx -t ``` 2. **发送重载信号** 如果配置文件无误,则可通过以下命令让 Nginx 加载最新的配置: ```bash nginx -s reload ``` 此命令会通知主进程重新加载配置文件,并逐步替换工作线程中的旧实例[^2]。 3. **注意事项** - 确保防火墙不会阻止 Nginx 的正常启动(如需关闭防火墙可执行 `iptables -F`)。 - 若涉及 SSL/TLS 配置更改,请确认证书路径及权限设置正确。 --- #### uWSGI 的热部署配置 uWSGI 提供了多种方式支持动态更新 Python 应用程序而不停止整个服务器。主要依赖于 PID 文件管理和信号控制。 1. **创建 PID 文件** 在启动 uWSGI 时指定 pidfile 参数以便后续管理: ```ini [uwsgi] master = true processes = 4 socket = 127.0.0.1:8001 chdir = /path/to/project/ wsgi-file = myproject/wsgi.py pidfile = /tmp/uwsgi.pid vacuum = true daemonize = /var/log/uwsgi.log ``` 上述配置片段定义了一个用于存储主进程 ID 的 `.pid` 文件位置 `/tmp/uwsgi.pid`[^2]。 2. **实施热更新** 当项目源码发生变化后,只需触发以下指令完成刷新动作: ```bash uwsgi --reload /tmp/uwsgi.pid ``` 这一过程利用 Master/Worker 架构特性,在不影响当前请求处理的前提下渐次替换单元节点[^1]。 3. **自动检测变更功能** 对于开发阶段而言,还可以启用内置监控器来自适应调整行为模式: ```ini touch-reload = /path/to/application_code_directory/__init__.py ``` 只要目标脚本被编辑保存就会立即引发相应级别的响应逻辑[^2]。 --- #### Django+Nginx+uWSGI 整体流程示例 假设已经搭建好基础架构并且完成了必要的域名绑定以及 HTTPS 设置等工作项之后,按照下面步骤执行完整的热部署方案: 1. 修改项目的业务逻辑部分; 2. 执行数据库迁移任务(如果适用的话): ```bash python manage.py migrate ``` 3. 更新静态资源集合到集中目录下: ```bash python manage.py collectstatic --noinput ``` 4. 刷新 WSGI 层级的服务状态: ```bash uwsgi --reload /tmp/uwsgi.pid ``` 5. 最终校验前端代理层设定的一致性状况后再同步生效变动之处: ```bash nginx -t && nginx -s reload ``` 以上每一步都紧密衔接在一起共同构成了高效的持续集成管道组成部分之一[^3]。 --- ```python # 示例 uwsgi.ini 配置文件内容展示 [uwsgi] master = true processes = 4 socket = 127.0.0.1:8001 chdir = /home/user/my_django_project/ module = myproject.wsgi:application vacuum = true daemonize = /var/log/uwsgi.log touch-reload = /home/user/my_django_project/myproject/wsgi.py ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值