温馨提示×

centos怎么配置python服务

小樊
38
2026-10-09 06:17:10
栏目: 编程语言

在 CentOS 上“配置 Python 服务”通常有两种常见场景:

  1. 把 Python 脚本做成系统服务(开机自启、systemctl 管理)
  2. 搭建 Python 运行环境(虚拟环境 + 依赖管理)

下面我按最常见、最推荐的方式一步一步说明(CentOS 7/8 通用,使用 systemd)。


一、准备 Python 环境(推荐不用系统 Python)

1. 安装依赖

sudo yum install -y gcc make zlib-devel bzip2-devel \
openssl-devel ncurses-devel sqlite-devel readline-devel \
tk-devel libffi-devel xz-devel

2. 安装指定版本 Python(示例 3.10)

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

验证:

python3.10 --version

二、创建 Python 项目

mkdir -p /opt/myservice
cd /opt/myservice

示例服务脚本 app.py:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return "Hello from Python Service"

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000)

安装依赖:

python3.10 -m venv venv
source venv/bin/activate
pip install flask
deactivate

三、配置 systemd 服务(重点)

1. 创建 service 文件

sudo vi /etc/systemd/system/myservice.service

内容示例:

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

[Service]
User=root
WorkingDirectory=/opt/myservice
ExecStart=/opt/myservice/venv/bin/python /opt/myservice/app.py
Restart=always

[Install]
WantedBy=multi-user.target

2. 重载并启动

sudo systemctl daemon-reload
sudo systemctl enable myservice
sudo systemctl start myservice

3. 查看状态

systemctl status myservice
journalctl -u myservice -f

四、防火墙(如果需要外网访问)

firewall-cmd --permanent --add-port=8000/tcp
firewall-cmd --reload

五、常见补充方案

✅ 使用 gunicorn(生产推荐)

pip install gunicorn

ExecStart 改为:

ExecStart=/opt/myservice/venv/bin/gunicorn -w 2 -b 0.0.0.0:8000 app:app

✅ 使用 Nginx 反向代理(推荐)

location / {
    proxy_pass http://127.0.0.1:8000;
}

六、常见问题

  • CentOS 自带 Python 别动(yum 依赖)
  • 用 altinstall 避免覆盖 python
  • 服务崩了自动重启:Restart=always

如果你能告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • Python 用途(Web / 脚本 / 定时任务)
  • 是否要对外网提供服务

我可以给你更精确的配置方案。

0 踩