在CentOS上部署Python Web應用可以通過多種方式實現,以下是一個基本的步驟指南,使用Gunicorn作為WSGI服務器和Nginx作為反向代理服務器。
首先,確保你的CentOS系統是最新的,并且已經安裝了必要的軟件包。
sudo yum update -y
sudo yum install -y python3 python3-pip git nginx
為了隔離你的Python應用環境,建議創建一個虛擬環境。
sudo yum install -y python3-venv
python3 -m venv myenv
source myenv/bin/activate
在你的虛擬環境中安裝Flask。
pip install Flask
創建一個簡單的Flask應用文件,例如app.py
。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello, World!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
Gunicorn是一個WSGI HTTP服務器,適合用于生產環境。
pip install gunicorn
在虛擬環境中啟動Gunicorn。
gunicorn -w 4 -b 127.0.0.1:8000 app:app
這會啟動Gunicorn,并監聽本地的8000端口。
編輯Nginx配置文件以將請求轉發到Gunicorn。
sudo vi /etc/nginx/conf.d/myapp.conf
添加以下內容:
server {
listen 80;
server_name your_server_ip_or_domain;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
保存并退出編輯器,然后重新加載Nginx配置。
sudo systemctl reload nginx
確保防火墻允許HTTP和HTTPS流量。
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
為了使Gunicorn在系統啟動時自動運行,可以創建一個systemd服務文件。
sudo vi /etc/systemd/system/myapp.service
添加以下內容:
[Unit]
Description=gunicorn daemon for myapp
After=network.target
[Service]
User=your_username
Group=nginx
WorkingDirectory=/path/to/your/app
ExecStart=/path/to/your/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app
[Install]
WantedBy=multi-user.target
保存并退出編輯器,然后啟動并啟用該服務。
sudo systemctl start myapp
sudo systemctl enable myapp
打開瀏覽器,訪問你的服務器IP地址或域名,你應該能看到Flask應用的輸出。
通過以上步驟,你已經成功在CentOS上部署了一個Python Web應用。根據實際需求,你可能還需要配置SSL證書、數據庫連接等。