sudo yum install -y python3 python3-pip
python3 --version # 確認Python版本(建議3.6+)
pip3 --version # 確認pip版本
mkdir -p /opt/python_project && cd /opt/python_project
python3 -m venv venv # 創建虛擬環境
source venv/bin/activate # 激活虛擬環境(激活后命令行前綴為“(venv)”)
scp
、rsync
或Git將本地項目代碼上傳至服務器項目目錄(如/opt/python_project
)。scp -r local_project/* user@server_ip:/opt/python_project/
requirements.txt
(依賴清單),通過pip安裝所有依賴。pip install -r requirements.txt
pip install gunicorn
app.py
中的app
對象):gunicorn -w 4 -b 127.0.0.1:8000 app:app
wsgi.py
文件路徑:gunicorn -w 4 -b 127.0.0.1:8000 myproject.wsgi:application
-w 4
(4個工作進程)、-b 127.0.0.1:8000
(綁定本地8000端口,僅內部訪問)。sudo yum install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx
/etc/nginx/conf.d/python_project.conf
,添加以下內容:server {
listen 80;
server_name your_domain.com; # 替換為域名或IP
location / {
proxy_pass http://127.0.0.1:8000; # 轉發至Gunicorn
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/ { # 靜態文件由Nginx直接處理
alias /opt/python_project/static/;
expires 30d;
}
}
sudo nginx -t # 測試配置語法
sudo systemctl restart nginx
/etc/systemd/system/python_project.service
,內容如下:[Unit]
Description=Python Project Service
After=network.target
[Service]
User=your_user # 替換為運行項目的用戶(如ubuntu、centos)
Group=your_group # 替換為用戶組
WorkingDirectory=/opt/python_project
ExecStart=/opt/python_project/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app
Restart=always # 崩潰后自動重啟
Environment="PYTHONUNBUFFERED=1" # 避免Python輸出緩沖
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start python_project
sudo systemctl enable python_project # 開機自啟
sudo systemctl status python_project
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload
sudo journalctl -u python_project -f # 查看Systemd服務日志
tail -f /opt/python_project/venv/log/gunicorn.log # 查看Gunicorn日志(若有)
python manage.py collectstatic
將靜態文件收集至STATIC_ROOT
目錄。workers
(工作進程數,通常為CPU核心數×2+1)和threads
(線程數)參數。