很多兄弟刚把 Django 项目跑通,兴冲冲想上线,结果一碰服务器就报错,心态直接崩盘。这篇干货直接告诉你如何将本地django项目部署到服务器,不整虚的,只讲能跑通的实战路子。看完这篇,你不仅能搞定部署,还能顺便把 Nginx 和 Gunicorn 的关系捋顺,从此告别“在我电脑上明明好好的”这种尴尬。

先说个真事儿。上个月有个做电商后台的朋友,非要在本地用 SQLite 数据库,部署的时候才发现生产环境根本不支持并发,服务器一压就崩。这就是典型的“本地环境太温柔,生产环境太残酷”。咱们得承认,本地调试和生产部署完全是两个世界。要想顺利将本地django项目部署到服务器,第一步不是装软件,而是把依赖理清楚。

很多新手容易忽略 requirements.txt 文件。你本地装了 PyMySQL、Pillow 这些库,服务器上可能连 gcc 编译器都没装,导致安装报错。我建议大家用 pip freeze > requirements.txt 导出依赖,然后在服务器上用 pip install -r requirements.txt 安装。注意,别直接 pip install django,版本必须对齐,不然代码跑起来全是坑。

接下来是重头戏:Gunicorn 和 Nginx 的配合。别再用 Django 自带的 runserver 上线了,那是给开发用的,性能差得离谱。Gunicorn 是 WSGI HTTP 服务器,专门负责处理 Python 代码,而 Nginx 是反向代理服务器,负责处理静态文件和负载均衡。这就好比餐厅,Nginx 是前台接待,Gunicorn 是后厨炒菜,分工明确才能高效。

配置 Gunicorn 其实很简单。在服务器项目目录下,输入 gunicorn -w 4 -b 0.0.0.0:8000 myproject.wsgi:application。这里的 -w 4 表示启动 4 个 worker 进程,根据你服务器 CPU 核心数调整,一般 2 到 4 个比较合适。这时候你去访问 IP:8000,应该能看到 Django 的默认页面。但这还没完,直接暴露端口不安全,还得配 Nginx。

Nginx 的配置稍微有点绕,但逻辑很清晰。在 /etc/nginx/sites-available/ 下新建一个配置文件,把 server_name 改成你的域名或 IP,root 指向你的静态文件目录。关键是要加上 location /static/ 块,让 Nginx 直接处理静态资源,别把请求转给 Gunicorn,那样太累。另外,记得在 Django 的 settings.py 里把 DEBUG = False,不然敏感信息全暴露了,黑客看了都流泪。

还有个容易被忽视的坑:数据库迁移。本地开发你可能用 SQLite,但生产环境建议上 PostgreSQL 或 MySQL。部署前,先在服务器上建好数据库,修改 settings.py 里的 DATABASES 配置,然后执行 python manage.py migrate。这一步不做,项目根本启动不了。我之前有个客户,就是忘了这步,上线后数据全丢,哭都来不及。

最后,别忘了设置 systemd 服务,让 Gunicorn 开机自启。写个 service 文件,配置好启动脚本,这样服务器重启后,你的项目还能稳稳当当跑着。这比手动敲命令靠谱多了。

总结一下,如何将本地django项目部署到服务器,核心就三点:依赖对齐、Gunicorn 处理动态请求、Nginx 处理静态文件。别怕麻烦,每一步都踩实了,上线后你才能睡个安稳觉。记住,部署不是终点,监控和维护才是长久之计。希望这篇能帮你少掉几根头发,顺利上线!