在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证书、数据库连接等。