# 怎么把 Django 項目部署到服務器
## 前言
將 Django 項目部署到生產環境是開發流程中的重要環節。本文將以 Nginx + Gunicorn + Supervisor 的組合為例,詳細介紹從本地開發環境到云服務器的完整部署流程,適用于 Ubuntu/Debian 系統。
---
## 一、準備工作
### 1.1 服務器環境要求
- Linux 服務器(推薦 Ubuntu 20.04+)
- Python 3.8+
- 已安裝 pip 和 virtualenv
- 開放 80/443(HTTP/HTTPS)和 22(SSH)端口
### 1.2 本地項目準備
```bash
# 導出依賴包
pip freeze > requirements.txt
# 確認關鍵配置
DEBUG = False
ALLOWED_HOSTS = ['yourdomain.com', '服務器IP']
ssh root@your_server_ip
adduser deploy
usermod -aG sudo deploy
su - deploy
sudo apt update
sudo apt install -y python3-pip python3-venv nginx supervisor
推薦使用 Git 或 SCP:
scp -r /local/path deploy@server_ip:/home/deploy/project
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
MySQL 示例:
sudo apt install -y mysql-server
sudo mysql_secure_installation
# 創建數據庫
mysql -u root -p
CREATE DATABASE dbname CHARACTER SET utf8mb4;
修改 Django 配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dbname',
'USER': 'username',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '3306',
}
}
python manage.py collectstatic
pip install gunicorn
gunicorn --bind 0.0.0.0:8000 project.wsgi:application
/home/deploy/project/gunicorn_conf.py:
bind = "127.0.0.1:8000"
workers = 3
user = "deploy"
timeout = 120
/etc/supervisor/conf.d/django.conf:
[program:django]
command=/home/deploy/venv/bin/gunicorn -c /home/deploy/project/gunicorn_conf.py project.wsgi:application
directory=/home/deploy/project
user=deploy
autostart=true
autorestart=true
stderr_logfile=/var/log/django.err.log
stdout_logfile=/var/log/django.out.log
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start django
/etc/nginx/sites-available/django:
server {
listen 80;
server_name yourdomain.com;
location /static/ {
alias /home/deploy/project/staticfiles/;
}
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
sudo ln -s /etc/nginx/sites-available/django /etc/nginx/sites-enabled
sudo nginx -t # 測試配置
sudo systemctl restart nginx
使用 Let’s Encrypt 免費證書:
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com
檢查服務狀態:
sudo supervisorctl status
sudo systemctl status nginx
測試錯誤頁面:
/var/log/django.err.log自動化部署建議:
STATIC_ROOT 配置collectstaticps aux | grep gunicorn通過以上步驟,你的 Django 項目應該已經成功部署。建議定期: - 更新系統安全補丁 - 備份數據庫 - 監控服務器資源使用情況
如需更高級的部署方案,可以考慮 Docker 或 Kubernetes 容器化部署。 “`
(全文約1350字)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。