You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu服务器运行Gunicorn时Git拉取的新代码未生效如何解决?

这种情况我在部署Django项目时碰到过好多次,大概率是缓存残留、进程没彻底重启或者代码拉取的小问题,咱们一步步来排查解决:

第一步:先确认代码真的拉取到服务器的项目目录了?

别笑,有时候真的会犯这种低级错误——比如拉取代码时进错了目录,或者拉取过程中出现冲突没解决,导致最新代码根本没同步过来。

  • 先进入你的Django项目根目录:cd /path/to/your/django/project
  • 查看当前分支的最新提交:git log -1,对比Git服务器上的最新commit哈希值,确认是不是一致
  • 如果有冲突,先解决冲突再重新拉取:git pull origin your-branch

第二步:确保Gunicorn真的彻底重启了

重载Gunicorn有时候不足以让新代码生效,尤其是当代码涉及到模块级别的变更时。

  • 如果用systemd管理Gunicorn,先看状态确认是否运行正常:sudo systemctl status gunicorn,注意看Active状态和进程ID(PID)有没有变化
  • 直接彻底重启比重载更靠谱:sudo systemctl restart gunicorn,甚至可以先停再启:sudo systemctl stop gunicorn && sudo systemctl start gunicorn
  • 如果你用了虚拟环境,拉取代码后如果新增了依赖,一定要重新安装:source /path/to/your/venv/bin/activate && pip install -r requirements.txt,不然新代码里的依赖缺失会导致Gunicorn启动失败,继续跑旧进程

第三步:清理Django的缓存和编译文件

Django会自动编译.py文件成.pyc,还有可能缓存模板或数据,这些都会导致旧代码残留:

  • 删除项目里的所有编译文件:find . -name "*.pyc" -delete && rm -rf __pycache__
  • 清理Django的内置缓存(Django 4.2+可用):python manage.py clearcache,如果是旧版本,可以手动删除缓存后端的存储(比如Redis、Memcached里的对应键,或者本地缓存目录)

第四步:更新静态资源并清理Nginx缓存

如果修改了CSS、JS、图片这类静态文件,别忘了同步和清理缓存:

  • 重新收集静态文件到Nginx指向的目录:python manage.py collectstatic --noinput
  • 重启Nginx确保配置和静态文件生效:sudo systemctl restart nginx
  • 如果Nginx配置了静态文件缓存,可以临时注释掉缓存配置测试,或者手动删除Nginx的缓存目录(比如/var/cache/nginx/下的文件)

第五步:杀掉残留的Gunicorn进程

有时候重启Gunicorn后,旧的worker进程还在偷偷运行,继续服务旧代码:

  • 查看所有Gunicorn相关进程:ps aux | grep gunicorn
  • 杀掉所有Gunicorn进程:sudo pkill -f gunicorn
  • 然后重新启动Gunicorn:sudo systemctl start gunicorn

第六步:检查数据库迁移和其他编译操作

如果修改了models或者翻译文件,别忘了执行对应的操作:

  • 运行数据库迁移:python manage.py makemigrations && python manage.py migrate
  • 如果更新了翻译文件,重新编译:python manage.py compilemessages

一般按这个流程走下来,新代码就能正常生效了。如果还是不行,可以查看Gunicorn的日志(比如/var/log/gunicorn/error.log)和Nginx的日志(/var/log/nginx/error.log),看看有没有报错信息,这往往能定位到问题所在。

内容的提问来源于stack exchange,提问作者reza_khalafi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 20:47:52