温馨提示×

centos如何部署python项目

小樊
37
2026-10-03 09:15:40
栏目: 编程语言

在 CentOS 上部署 Python 项目,通常可以分为 基础环境准备 → 项目运行方式选择 → 生产环境部署 几个阶段。下面给你一套通用且实用的方案,适用于大多数 Web / 脚本类 Python 项目。


一、基础环境准备

1. 更新系统

sudo yum update -y

2. 安装依赖

sudo yum install -y gcc make openssl-devel bzip2-devel \
libffi-devel zlib-devel wget curl

3. 安装 Python(推荐用官方源码或 pyenv)

CentOS 7 自带 Python 2,不建议直接用系统 Python 跑项目。

方式一:源码安装 Python 3(示例 3.11)

cd /usr/src
sudo wget https://www.python.org/ftp/python/3.11.6/Python-3.11.6.tgz
sudo tar xzf Python-3.11.6.tgz
cd Python-3.11.6
sudo ./configure --enable-optimizations
sudo make altinstall

验证:

python3.11 --version

二、项目运行方式(三选一)

方式 A:虚拟环境 + 直接运行(适合脚本/小项目)

python3.11 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python app.py

方式 B:Gunicorn + Nginx(Web 项目推荐 ✅)

1. 安装 Gunicorn

pip install gunicorn

2. 启动项目(示例 Flask/Django)

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

3. 安装 Nginx

sudo yum install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx

4. Nginx 反向代理配置

server {
    listen 80;
    server_name yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

方式 C:Docker 部署(最推荐 ✅✅)

适合生产环境、可移植性强。

示例 Dockerfile

FROM python:3.11-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
CMD ["gunicorn", "-b", "0.0.0.0:8000", "app:app"]
docker build -t myproject .
docker run -d -p 8000:8000 myproject

三、后台运行 & 开机自启

使用 systemd(推荐)

sudo vim /etc/systemd/system/myproject.service
[Unit]
Description=Python Project
After=network.target

[Service]
User=centos
WorkingDirectory=/home/centos/myproject
ExecStart=/home/centos/myproject/venv/bin/gunicorn -b 127.0.0.1:8000 app:app
Restart=always

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start myproject
sudo systemctl enable myproject

四、常见问题

  • 端口不通 → 检查防火墙
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --reload
  • 权限问题 → 不要用 root 跑项目
  • 依赖缺失 → 确保 requirements.txt 完整

五、总结推荐方案

场景 推荐方案
学习/测试 虚拟环境直接跑
Web 服务 Gunicorn + Nginx
生产环境 Docker / systemd
多项目隔离 Docker

如果你愿意,可以告诉我:

  • ✅ CentOS 版本(7 / 8 / Stream)
  • ✅ 项目类型(Flask / Django / 脚本 / API)
  • ✅ 是否要公网访问

我可以直接给你可复制的完整部署命令。

0 踩