centos

CentOS Python项目怎么部署

小樊
47
2025-10-20 00:41:13
栏目: 编程语言

CentOS Python项目部署完整流程

1. 准备基础环境

首先确保系统已安装Python 3和pip(Python包管理工具),这是部署的基础:

sudo yum install -y python3 python3-pip

验证安装结果:

python3 --version  # 查看Python版本(建议3.6+)
pip3 --version     # 查看pip版本

若未安装python3-venv(Python 3虚拟环境工具),需额外安装:

sudo yum install -y python3-venv

2. 创建并激活虚拟环境

虚拟环境可隔离项目依赖,避免全局环境污染:

# 进入项目目录
mkdir my_python_project && cd my_python_project

# 创建虚拟环境(Python 3自带venv模块)
python3 -m venv venv

# 激活虚拟环境(激活后命令行前会显示(venv))
source venv/bin/activate

激活后,后续所有pip安装的包都会存放在venv目录中。

3. 安装项目依赖

将项目依赖列表(requirements.txt)复制到项目目录,通过pip安装所有依赖:

# 生成requirements.txt(若已有则跳过)
pip freeze > requirements.txt

# 安装依赖(从requirements.txt读取)
pip install -r requirements.txt

requirements.txt示例(包含常见Python包及版本):

Flask==2.3.3
gunicorn==21.2.0
requests==2.31.0

4. 配置应用启动方式

根据项目类型选择合适的启动工具(以Flask为例):

5. 配置Systemd服务(可选但推荐)

让应用随系统启动,并在崩溃后自动重启:

# 创建服务文件
sudo vim /etc/systemd/system/my_python_app.service

写入以下内容(根据实际情况修改路径和用户):

[Unit]
Description=My Python Application
After=network.target

[Service]
User=your_username  # 替换为你的系统用户名(如centos)
Group=your_group    # 替换为用户组(如centos)
WorkingDirectory=/path/to/my_python_project  # 项目绝对路径
ExecStart=/path/to/my_python_project/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app
Restart=always      # 崩溃后自动重启

[Install]
WantedBy=multi-user.target

保存后执行以下命令启用并启动服务:

sudo systemctl daemon-reload  # 重新加载systemd配置
sudo systemctl start my_python_app  # 启动服务
sudo systemctl enable my_python_app  # 设置开机自启

查看服务状态:

sudo systemctl status my_python_app

6. 配置防火墙

允许外部访问应用端口(如8000),若使用Nginx反向代理则只需放行80/443端口:

# 开放8000端口(TCP)
sudo firewall-cmd --permanent --add-port=8000/tcp
sudo firewall-cmd --reload  # 重新加载防火墙规则

验证端口是否开放:

sudo firewall-cmd --list-ports

7. 配置反向代理(可选但推荐)

使用Nginx作为反向代理,提升安全性(隐藏应用端口)、支持HTTPS和负载均衡:

# 安装Nginx
sudo yum install -y nginx

# 启动Nginx并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx

编辑Nginx配置文件(如/etc/nginx/conf.d/my_python_app.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;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

测试Nginx配置语法并重载:

sudo nginx -t  # 测试配置是否正确
sudo systemctl reload nginx  # 重载Nginx

此时可通过http://your_domain.com访问应用。

8. 验证部署

可选优化:使用Docker部署

若需要更便捷的环境隔离和扩展性,可使用Docker:

  1. 在项目根目录创建Dockerfile
    FROM python:3.9-slim
    WORKDIR /app
    COPY . .
    RUN pip install --no-cache-dir -r requirements.txt
    EXPOSE 8000
    CMD ["gunicorn", "-w 4", "-b 0.0.0.0:8000", "app:app"]
    
  2. 构建镜像:
    docker build -t my_python_app .
    
  3. 运行容器:
    docker run -d -p 8000:8000 --name my_app_container my_python_app
    
  4. 配置Nginx反向代理指向127.0.0.1:8000(同上)。

0
看了该问题的人还看了