# 安装uWSGI
pip install uwsgi
# 安装Nginx (Ubuntu为例)
sudo apt-get install nginx
确保你的Django项目满足以下条件:
- settings.py
中ALLOWED_HOSTS
包含你的域名或IP
- 静态文件已收集(python manage.py collectstatic
)
在项目目录下创建myproject_uwsgi.ini
文件:
[uwsgi]
# Django项目目录
chdir = /path/to/your/project
# Django的wsgi文件
module = project_name.wsgi:application
# 使用unix socket与Nginx通信
socket = /path/to/your/project/myproject.sock
# socket权限设置
chmod-socket = 664
# 退出时清理环境
vacuum = true
# 进程设置
master = true
processes = 4
threads = 2
# 日志文件
daemonize = /var/log/uwsgi/myproject.log
uwsgi --ini myproject_uwsgi.ini
创建Nginx配置文件/etc/nginx/sites-available/myproject
:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
location = /favicon.ico { access_log off; log_not_found off; }
# 静态文件处理
location /static/ {
alias /path/to/your/project/static/;
}
# 媒体文件处理
location /media/ {
alias /path/to/your/project/media/;
}
# Django应用处理
location / {
include uwsgi_params;
uwsgi_pass unix:/path/to/your/project/myproject.sock;
}
}
启用站点配置:
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled
测试Nginx配置并重启:
sudo nginx -t
sudo systemctl restart nginx
创建uWSGI系统服务文件/etc/systemd/system/uwsgi.service
:
[Unit]
Description=uWSGI Emperor service
After=syslog.target
[Service]
ExecStart=/usr/local/bin/uwsgi --emperor /etc/uwsgi/sites
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all
[Install]
WantedBy=multi-user.target
启用并启动服务:
sudo systemctl enable uwsgi
sudo systemctl start uwsgi
502 Bad Gateway错误
ps aux | grep uwsgi
静态文件无法加载
settings.py
中STATIC_ROOT
和STATIC_URL
设置正确python manage.py collectstatic
权限问题
chown
和chmod
调整权限# 重启uWSGI
sudo systemctl restart uwsgi
# 重启Nginx
sudo systemctl restart nginx
# 查看日志
tail -f /var/log/nginx/error.log
tail -f /var/log/uwsgi/myproject.log
通过以上步骤,你的Django项目应该已经成功通过Nginx + uWSGI部署运行了。