在 CentOS 上“配置 Python 服务”通常有两种常见场景:
下面我按最常见、最推荐的方式一步一步说明(CentOS 7/8 通用,使用 systemd)。
sudo yum install -y gcc make zlib-devel bzip2-devel \
openssl-devel ncurses-devel sqlite-devel readline-devel \
tk-devel libffi-devel xz-devel
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
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
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
sudo systemctl daemon-reload
sudo systemctl enable myservice
sudo systemctl start myservice
systemctl status myservice
journalctl -u myservice -f
firewall-cmd --permanent --add-port=8000/tcp
firewall-cmd --reload
pip install gunicorn
ExecStart 改为:
ExecStart=/opt/myservice/venv/bin/gunicorn -w 2 -b 0.0.0.0:8000 app:app
location / {
proxy_pass http://127.0.0.1:8000;
}
Restart=always如果你能告诉我:
我可以给你更精确的配置方案。