寻求Windows环境下Django+Nginx+Gunicorn+PostgreSQL部署参考文档
Windows下用Nginx + Gunicorn + PostgreSQL部署Django项目流程
1. 先把基础环境搭好
- 装Python:去官网下对应版本,一定要勾选「Add Python to PATH」,装完打开命令行输
python --version和pip --version确认没问题 - 装PostgreSQL:官网下安装包,设置好数据库密码(别忘),默认端口5432。装完启动服务,用命令行或者pgAdmin创建专属的数据库和用户:
- 打开PostgreSQL自带的psql命令行,输入密码登录
- 创建用户:
CREATE USER django_user WITH PASSWORD 'your_password'; - 创建数据库:
CREATE DATABASE django_db OWNER django_user; - 给权限:
GRANT ALL PRIVILEGES ON DATABASE django_db TO django_user;
- 装Gunicorn:Windows上得先装依赖,命令行输
pip install pywin32,再装pip install gunicorn - 装Nginx:官网下稳定版压缩包,解压到C盘根目录(比如
C:\nginx),记住这个路径
2. 调整Django项目配置
- 进项目根目录,推荐建个虚拟环境:
python -m venv venv,然后激活它:venv\Scripts\activate - 装项目依赖:
pip install -r requirements.txt,确保里面有django、psycopg2-binary(连PostgreSQL用的)这些 - 修改
settings.py:- 替换数据库配置:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'django_db', 'USER': 'django_user', 'PASSWORD': 'your_password', 'HOST': 'localhost', 'PORT': '5432', } } - 加允许访问的主机:
ALLOWED_HOSTS = ['localhost', '127.0.0.1', '你的服务器公网IP'] - 配置静态文件:
STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
- 替换数据库配置:
- 跑数据库迁移:
python manage.py makemigrations,再python manage.py migrate - 收集静态文件:
python manage.py collectstatic(按提示输yes) - 先测一遍项目:
python manage.py runserver,打开浏览器访问http://127.0.0.1:8000,确认能正常打开
3. 用Gunicorn启动Django
- 在项目根目录建个启动脚本,比如叫
gunicorn_start.bat,内容填:@echo off cd /d "你的项目根目录绝对路径" venv\Scripts\activate gunicorn --bind 127.0.0.1:8000 你的项目名.wsgi:application - 双击这个bat文件,或者在命令行运行,等Gunicorn启动后,再访问http://127.0.0.1:8000验证没问题
4. 配置Nginx反向代理
- 进
C:\nginx\conf目录,打开nginx.conf,找到http块里的server节点,替换成下面的配置:server { listen 80; server_name localhost 你的服务器公网IP; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /static/ { alias 你的项目根目录/staticfiles/; } } - 测Nginx配置对不对:打开命令行,进
C:\nginx目录,输nginx -t,显示test is successful就没问题 - 启动Nginx:
nginx.exe,要停止就输nginx.exe -s stop,重启用nginx.exe -s reload
5. 设置开机自启(可选)
- Gunicorn自启:用nssm工具(自己去下),命令行输
nssm install GunicornDjango,弹出的窗口里填:- Path:选虚拟环境里的gunicorn路径,比如
venv\Scripts\gunicorn.exe - Arguments:
--bind 127.0.0.1:8000 你的项目名.wsgi:application - Working Directory:你的项目根目录绝对路径
- 然后启动服务:
nssm start GunicornDjango
- Path:选虚拟环境里的gunicorn路径,比如
- Nginx自启:同样用nssm,输
nssm install Nginx,窗口里填:- Path:
C:\nginx\nginx.exe - Arguments:
-p C:\nginx - 启动服务:
nssm start Nginx
- Path:
6. 常见问题排查
- 访问Nginx出502错误:检查Gunicorn是不是没启动,或者端口填错了
- 静态文件加载不出来:看Nginx里的
alias路径是不是和staticfiles目录完全一致,有没有漏写斜杠 - 数据库连不上:检查
settings.py里的账号密码对不对,PostgreSQL服务有没有开,用户有没有数据库权限
内容的提问来源于stack exchange,提问作者nvn
相关产品推荐
相关产品推荐

