在服務器上運行 Python 項目通常涉及?環境配置、依賴安裝、項目部署?和?進程管理。以下是詳細步驟:
1. 連接服務器
確保你能通過 SSH 訪問服務器:
ssh username@your_server_ip
(如果是本地測試,可跳過這一步)
2. 安裝 Python 環境
2.1 檢查 Python 版本
python3 --version # 或 python --version
如果未安裝 Python 3(推薦 3.8+),使用包管理器安裝:
Ubuntu/Debian:
sudo apt update sudo apt install python3 python3-pip python3-venv
CentOS/RHEL:
sudo yum install python3 python3-pip
2.2 可選:使用 Pyenv 管理多版本
如果需要特定 Python 版本:
curl https://pyenv.run | bash # 安裝 Pyenv echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(pyenv init --path)"' >> ~/.bashrc echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc source ~/.bashrc pyenv install 3.10.6 # 安裝指定版本 pyenv global 3.10.6 # 設為默認
3. 配置虛擬環境(推薦)
避免全局依賴沖突:
python3 -m venv myprojectenv # 創建虛擬環境 source myprojectenv/bin/activate # 激活(Linux/macOS) # Windows: myprojectenv\Scripts\activate
激活后,終端提示符會顯示?(myprojectenv)
。
4. 安裝項目依賴
4.1 使用?requirements.txt
如果項目有?requirements.txt
:
pip install -r requirements.txt
4.2 手動安裝依賴
pip install flask django pandas # 示例
5. 運行 Python 項目
5.1 直接運行腳本
python3 app.py # 替換為你的入口文件
5.2 Web 項目(如 Flask/Django)
Flask:
export FLASK_APP=app.py # 設置環境變量 flask run --host=0.0.0.0 --port=5000 # 允許外部訪問
Django:
python manage.py runserver 0.0.0.0:8000
???注意:以上方式僅適合開發環境!生產環境需用?Gunicorn/uWSGI + Nginx(見下文)。
6. 生產環境部署(關鍵步驟)
6.1 使用 Gunicorn(WSGI 服務器)
安裝 Gunicorn:
pip install gunicorn
運行 Flask/Django 項目:
# Flask gunicorn -w 4 -b 0.0.0.0:8000 app:app # app:app 表示模塊名:應用實例# Django gunicorn -w 4 -b 0.0.0.0:8000 myproject.wsgi:application
-w 4
:4 個工作進程(根據 CPU 核心數調整)。
6.2 配置 Nginx 反向代理
安裝 Nginx:
sudo apt install nginx
編輯配置文件(/etc/nginx/sites-available/myproject
):
nginx
server {listen 80;server_name your_domain.com;location / {proxy_pass http://127.0.0.1:8000; # 轉發到 Gunicornproxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;} }
啟用配置并重啟 Nginx:
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled sudo nginx -t # 測試語法 sudo systemctl restart nginx
6.3 使用 Systemd 管理進程
創建 Systemd 服務文件(/etc/systemd/system/myproject.service
):
ini
[Unit] Description=Gunicorn for my Python project After=network.target[Service] User=ubuntu WorkingDirectory=/path/to/your/project ExecStart=/path/to/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app Restart=always[Install] WantedBy=multi-user.target
啟動服務:
sudo systemctl daemon-reload sudo systemctl start myproject sudo systemctl enable myproject # 開機自啟
7. 其他優化
7.1 使用 Supervisor(替代 Systemd)
適合管理多個進程:
sudo apt install supervisor
配置(/etc/supervisor/conf.d/myproject.conf
):
ini
[program:myproject] command=/path/to/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app directory=/path/to/project user=ubuntu autostart=true autorestart=true stderr_logfile=/var/log/myproject.err.log stdout_logfile=/var/log/myproject.out.log
啟動:
bash
sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl start myproject
7.2 HTTPS 配置(Certbot)
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d your_domain.com
證書會自動續簽。
8. 常見問題
Q1:端口被占用?
sudo lsof -i :8000 # 查看占用進程 sudo kill -9 <PID> # 強制結束
Q2:如何查看日志?
Gunicorn 日志:
journalctl -u myproject.service
Nginx 日志:
/var/log/nginx/error.log
Q3:靜態文件(CSS/JS)不加載?
在 Nginx 配置中添加:
nginx
location /static/ {alias /path/to/your/static/files/; }
Django 需運行:
bash
python manage.py collectstatic
按照以上步驟,你的 Python 項目應該能在服務器上穩定運行。如果是高流量場景,可進一步優化:
使用?Docker?容器化部署。
配置?Redis?緩存或?Celery?異步任務。
使用?PM2(Node.js 工具)管理 Python 進程(非主流但可行)。