在 CentOS 上部署 Python 项目,通常可以分为 基础环境准备 → 项目运行方式选择 → 生产环境部署 几个阶段。下面给你一套通用且实用的方案,适用于大多数 Web / 脚本类 Python 项目。
sudo yum update -y
sudo yum install -y gcc make openssl-devel bzip2-devel \
libffi-devel zlib-devel wget curl
CentOS 7 自带 Python 2,不建议直接用系统 Python 跑项目。
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
python3.11 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python app.py
pip install gunicorn
gunicorn -w 4 -b 127.0.0.1:8000 app:app
sudo yum install -y nginx
sudo systemctl start nginx
sudo systemctl enable 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;
}
}
适合生产环境、可移植性强。
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
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
requirements.txt 完整| 场景 | 推荐方案 |
|---|---|
| 学习/测试 | 虚拟环境直接跑 |
| Web 服务 | Gunicorn + Nginx |
| 生产环境 | Docker / systemd |
| 多项目隔离 | Docker |
如果你愿意,可以告诉我:
我可以直接给你可复制的完整部署命令。