溫馨提示×

CentOS Python項目部署流程是怎樣的

小樊
37
2025-10-09 07:22:03
欄目: 編程語言

CentOS Python項目部署流程

1. 準備基礎環境

  • 安裝Python與pip:CentOS 7及以上默認安裝Python 2.7,需安裝Python 3及pip工具。
    sudo yum install -y python3 python3-pip
    
  • 驗證安裝
    python3 --version  # 確認Python版本(建議3.6+)
    pip3 --version     # 確認pip版本
    

2. 配置項目目錄與虛擬環境

  • 創建項目目錄
    mkdir -p /opt/python_project && cd /opt/python_project
    
  • 創建并激活虛擬環境(隔離項目依賴,避免沖突):
    python3 -m venv venv       # 創建虛擬環境
    source venv/bin/activate   # 激活虛擬環境(激活后命令行前綴為“(venv)”)
    

3. 部署項目代碼

  • 上傳代碼:通過scp、rsync或Git將本地項目代碼上傳至服務器項目目錄(如/opt/python_project)。
    scp -r local_project/* user@server_ip:/opt/python_project/
    
  • 安裝項目依賴:項目根目錄需包含requirements.txt(依賴清單),通過pip安裝所有依賴。
    pip install -r requirements.txt
    

4. 配置WSGI服務器(連接應用與Web服務器)

  • 安裝Gunicorn/uWSGI(以Gunicorn為例,輕量易用):
    pip install gunicorn
    
  • 啟動WSGI服務
    • 若項目為Flask,需指定應用入口(如app.py中的app對象):
      gunicorn -w 4 -b 127.0.0.1:8000 app:app
      
    • 若項目為Django,需指定wsgi.py文件路徑:
      gunicorn -w 4 -b 127.0.0.1:8000 myproject.wsgi:application
      
    • 參數說明:-w 4(4個工作進程)、-b 127.0.0.1:8000(綁定本地8000端口,僅內部訪問)。

5. 配置反向代理(Nginx,提升性能與安全性)

  • 安裝Nginx
    sudo yum install -y nginx
    sudo systemctl start nginx
    sudo systemctl enable nginx
    
  • 配置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;
        }
    }
    
  • 驗證配置并重啟Nginx
    sudo nginx -t    # 測試配置語法
    sudo systemctl restart nginx
    

6. 配置Systemd服務(實現開機自啟)

  • 創建Systemd服務文件:編輯/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
    

7. 配置防火墻(允許外部訪問)

  • 開放HTTP端口(80)
    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --reload
    
  • 若使用HTTPS(推薦):需申請SSL證書(如Let’s Encrypt),并通過Nginx配置HTTPS監聽443端口。

8. 驗證部署

  • 訪問項目:在瀏覽器輸入服務器IP或域名,確認項目頁面正常顯示。
  • 查看日志:若出現問題,通過以下命令查看日志定位原因:
    sudo journalctl -u python_project -f  # 查看Systemd服務日志
    tail -f /opt/python_project/venv/log/gunicorn.log  # 查看Gunicorn日志(若有)
    

可選優化步驟

  • 靜態文件收集:若使用Django,運行python manage.py collectstatic將靜態文件收集至STATIC_ROOT目錄。
  • HTTPS配置:使用Certbot為Nginx配置免費SSL證書,提升安全性。
  • 性能優化:調整Gunicorn的workers(工作進程數,通常為CPU核心數×2+1)和threads(線程數)參數。
  • 容器化部署:使用Docker將項目打包為鏡像,通過Docker Compose管理多容器(如Nginx+Python),提升部署一致性。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女