# Linux下如何快速部署Django項目
## 前言
在當今的Web開發領域,Django作為Python最流行的Web框架之一,因其"開箱即用"的特性和強大的功能而備受開發者青睞。然而,許多開發者在本地開發完成后,面對將Django項目部署到Linux生產環境的挑戰時常常感到困惑。本文將詳細介紹如何在Linux系統上快速、高效地部署Django項目,涵蓋從環境準備到最終上線的完整流程。
## 一、部署前的準備工作
### 1.1 服務器環境選擇
推薦使用Ubuntu Server LTS版本(如20.04或22.04)或CentOS 7/8作為生產環境,這些系統有長期支持且社區資源豐富。
```bash
# 查看系統版本
lsb_release -a # Ubuntu
cat /etc/redhat-release # CentOS
更新系統包
sudo apt update && sudo apt upgrade -y # Ubuntu/Debian
sudo yum update -y # CentOS/RHEL
創建部署專用用戶
sudo adduser deploy
sudo usermod -aG sudo deploy
配置SSH安全
sudo nano /etc/ssh/sshd_config
# 修改端口號、禁用root登錄等
sudo systemctl restart sshd
建議使用Pyenv或直接安裝Python 3.8+:
sudo apt install python3 python3-pip python3-venv -y
sudo alternatives --set python /usr/bin/python3
sudo apt install mysql-server libmysqlclient-dev -y
sudo mysql_secure_installation
sudo apt install postgresql postgresql-contrib libpq-dev -y
sudo -u postgres psql -c "CREATE DATABASE myproject;"
sudo apt install build-essential libssl-dev libffi-dev nginx supervisor -y
推薦使用Git或rsync:
cd /home/deploy
git clone https://your-repository.com/myproject.git
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
settings.py關鍵配置
DEBUG = False
ALLOWED_HOSTS = ['yourdomain.com', 'server_ip']
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydatabase',
'USER': 'mydbuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '3306',
}
}
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
收集靜態文件
python manage.py collectstatic
數據庫遷移
python manage.py migrate
pip install gunicorn
創建配置文件/home/deploy/gunicorn_conf.py:
bind = '127.0.0.1:8000'
workers = 3
worker_class = 'gevent'
max_requests = 2000
timeout = 300
gunicorn -c gunicorn_conf.py myproject.wsgi:application
創建配置文件/etc/supervisor/conf.d/myproject.conf:
[program:myproject]
command=/home/deploy/venv/bin/gunicorn -c /home/deploy/gunicorn_conf.py myproject.wsgi:application
directory=/home/deploy/myproject
user=deploy
autostart=true
autorestart=true
stderr_logfile=/var/log/myproject.err.log
stdout_logfile=/var/log/myproject.out.log
啟動服務:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start myproject
創建/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/ {
root /home/deploy/myproject;
}
location /media/ {
root /home/deploy/myproject;
}
location / {
include proxy_params;
proxy_pass http://127.0.0.1:8000;
}
}
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled
sudo nginx -t
sudo systemctl restart nginx
sudo ufw allow 80
sudo ufw allow 22
sudo ufw enable
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
sudo crontab -e
# 添加:
0 12 * * * /usr/bin/certbot renew --quiet
# 查看Gunicorn日志
tail -f /var/log/myproject.out.log
# 重啟服務
sudo supervisorctl restart myproject
# 更新代碼后的操作
git pull
source venv/bin/activate
pip install -r requirements.txt
python manage.py migrate
python manage.py collectstatic
sudo supervisorctl restart myproject
django-debug-toolbar(僅開發環境)django-silk進行性能分析django-prometheus監控指標502 Bad Gateway錯誤
ps aux | grep gunicornsudo tail -f /var/log/nginx/error.log靜態文件404錯誤
STATIC_ROOT設置正確數據庫連接問題
對于高流量網站,可以考慮:
多服務器負載均衡
容器化部署
FROM python:3.9
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
EXPOSE 8000
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "myproject.wsgi:application"]
CI/CD自動化
通過本文的詳細步驟,您應該已經成功將Django項目部署到了Linux生產環境。部署過程雖然涉及多個組件,但只要按照流程逐步操作,就能構建出穩定可靠的Web服務。建議在正式上線前進行充分的壓力測試和安全檢查,并根據實際業務需求調整各個組件的配置參數。
記住,部署不是終點而是起點,持續的監控、維護和優化同樣重要。祝您的Django項目運行順利! “`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。