CentOS 上部署 Python 项目的标准流程
一 准备与版本选择
python -V、python3 -Vmake altinstall 避免覆盖系统 Python二 安装 Python 环境
sudo yum install -y python3 python3-pippython3 --version、pip3 --versionsudo yum groupinstall -y "Development Tools" 与 sudo yum install -y openssl-devel bzip2-devel libffi-devel wgetwget https://www.python.org/ftp/python/3.10.2/Python-3.10.2.tgz
tar xvf Python-3.10.2.tgz
cd Python-3.10.2
./configure --enable-optimizations
make -j "$(nproc)"
sudo make altinstall
python3.10 -V、pip3.10 --versionwget https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.shbash Anaconda3-2021.05-Linux-x86_64.sh,按提示完成source ~/.bashrc 后 conda activate basepython --version三 部署 Python 项目
scp myproject.zip user@your_server:/opt && unzip myproject.zip -d /opt/myapppython3 -m venv /opt/venvs/myappsource /opt/venvs/myapp/bin/activatepip install --upgrade pippip install -r requirements.txt/opt/venvs/myapp/bin/gunicorn -b 127.0.0.1:8000 app:apppython app.pysudo vim /etc/systemd/system/myapp.service[Unit]
Description=My Python App
After=network.target
[Service]
User=myapp
Group=myapp
WorkingDirectory=/opt/myapp
ExecStart=/opt/venvs/myapp/bin/gunicorn -b 127.0.0.1:8000 app:app
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp
sudo yum install -y nginxsudo vim /etc/nginx/conf.d/myapp.confserver {
listen 80;
server_name your_domain_or_ip;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
sudo systemctl reload nginx
sudo systemctl enable --now nginx
http://your_domain_or_ip,确认返回与日志正常四 常见问题与处理
sudo yum install -y gcc gcc-c++ zlib zlib-devel openssl openssl-devel readline-devel sqlite-devel bzip2-devel libffi-develmake altinstall 安装,避免覆盖系统 Pythonln -s /usr/local/bin/python3.10 /usr/local/bin/python3),谨慎操作STATIC_ROOT,执行:python manage.py collectstaticlocation /static/ { alias /path/to/static/; }.ini 或 XML 配置,并以 uWSGI 与 Nginx 配合部署