sudo apt update
sudo apt install nginx python3-pip python3-venv
# 进入你的Django项目目录
cd /path/to/your/django/project
# 创建虚拟环境
python3 -m venv venv
# 激活虚拟环境
source venv/bin/activate
# 安装项目依赖
pip install -r requirements.txt
pip install gunicorn # 如果requirements.txt中没有
创建Gunicorn服务文件:
sudo nano /etc/systemd/system/gunicorn.service
添加以下内容(根据你的项目调整路径):
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=your_username
Group=www-data
WorkingDirectory=/path/to/your/django/project
ExecStart=/path/to/your/django/project/venv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/path/to/your/django/project/project.sock your_project.wsgi:application
[Install]
WantedBy=multi-user.target
启动并启用Gunicorn服务:
sudo systemctl start gunicorn
sudo systemctl enable gunicorn
创建Nginx配置文件:
sudo nano /etc/nginx/sites-available/your_project
添加以下配置(根据实际情况修改):
server {
listen 80;
server_name your_domain_or_IP;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /path/to/your/django/project;
}
location /media/ {
root /path/to/your/django/project;
}
location / {
include proxy_params;
proxy_pass http://unix:/path/to/your/django/project/project.sock;
}
}
启用配置并测试Nginx:
sudo ln -s /etc/nginx/sites-available/your_project /etc/nginx/sites-enabled
sudo nginx -t
sudo systemctl restart nginx
确保settings.py
中有以下配置:
DEBUG = False
ALLOWED_HOSTS = ['your_domain_or_IP', 'localhost']
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
收集静态文件:
python manage.py collectstatic
sudo ufw allow 'Nginx Full'
502 Bad Gateway错误:
sudo systemctl status gunicorn
sudo journalctl -u gunicorn
静态文件无法加载:
STATIC_ROOT
设置正确collectstatic
命令后重启Nginx权限问题:
sudo chown -R www-data:www-data /path/to/your/django/project
sudo chmod -R 755 /path/to/your/django/project
sudo systemctl restart gunicorn
sudo tail -f /var/log/nginx/error.log
sudo journalctl -u gunicorn
这样你的Django项目就应该通过Nginx成功部署了!