centos

如何在CentOS上部署Python Web应用

小樊
46
2025-05-09 04:38:11
栏目: 编程语言

在CentOS上部署Python Web应用可以通过多种方式实现,以下是一个基本的步骤指南,使用Gunicorn作为WSGI服务器和Nginx作为反向代理服务器。

1. 安装必要的软件

首先,确保你的CentOS系统是最新的,并且已经安装了必要的软件包。

sudo yum update -y
sudo yum install -y python3 python3-pip git nginx

2. 创建Python虚拟环境

为了隔离你的Python应用环境,建议创建一个虚拟环境。

sudo yum install -y python3-venv
python3 -m venv myenv
source myenv/bin/activate

3. 安装Flask(或其他Web框架)

在你的虚拟环境中安装Flask。

pip install Flask

4. 创建一个简单的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)

5. 安装Gunicorn

Gunicorn是一个WSGI HTTP服务器,适合用于生产环境。

pip install gunicorn

6. 启动Gunicorn

在虚拟环境中启动Gunicorn。

gunicorn -w 4 -b 127.0.0.1:8000 app:app

这会启动Gunicorn,并监听本地的8000端口。

7. 配置Nginx

编辑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

8. 设置防火墙规则

确保防火墙允许HTTP和HTTPS流量。

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

9. 启动Gunicorn服务

为了使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

10. 测试部署

打开浏览器,访问你的服务器IP地址或域名,你应该能看到Flask应用的输出。

通过以上步骤,你已经成功在CentOS上部署了一个Python Web应用。根据实际需求,你可能还需要配置SSL证书、数据库连接等。

0
看了该问题的人还看了