下面给你一份在 CentOS 上部署 Python 项目的通用、实战向流程,适用于 CentOS 7 / 8 / Stream,无论是 Web 项目(Flask / Django / FastAPI)还是脚本类项目都适用。
sudo yum update -y
sudo yum install -y gcc make wget curl git
CentOS 自带 python2,不建议使用。
sudo dnf install python3 python3-pip -y
sudo yum install -y gcc openssl-devel bzip2-devel libffi-devel
cd /usr/src
sudo wget https://www.python.org/ftp/python/3.9.18/Python-3.9.18.tgz
sudo tar xzf Python-3.9.18.tgz
cd Python-3.9.18
sudo ./configure --enable-optimizations
sudo make altinstall
验证:
python3.9 --version
mkdir -p /opt/myproject
cd /opt/myproject
git clone https://github.com/your/project.git .
# 或 scp / rz 上传
python3.9 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
pip install gunicorn
gunicorn app:app -b 0.0.0.0:8000
sudo vim /etc/systemd/system/myproject.service
内容示例:
[Unit]
Description=My Python Project
After=network.target
[Service]
User=root
WorkingDirectory=/opt/myproject
ExecStart=/opt/myproject/venv/bin/gunicorn app:app -b 127.0.0.1:8000
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start myproject
sudo systemctl enable myproject
sudo yum install nginx -y
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
sudo systemctl restart nginx
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --reload
useradd deploy
chown -R deploy:deploy /opt/myproject
supervisor 管理进程uvicorn(FastAPI)FROM python:3.9-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
CMD ["gunicorn", "app:app", "-b", "0.0.0.0:8000"]
docker build -t myproject .
docker run -d -p 8000:8000 myproject
❓ yum 找不到 python3
→ CentOS 7 需要 EPEL 或编译安装
❓ 端口访问不了
→ 检查防火墙 / 安全组 / 监听地址
❓ gunicorn 启动失败
→ 看日志:journalctl -u myproject
如果你愿意,可以告诉我:
我可以直接给你定制部署方案。