温馨提示×

CentOS Python部署如何操作

小樊
32
2025-12-15 19:18:11
栏目: 编程语言

CentOS 上部署 Python 项目的标准流程


一 准备与版本选择

  • 确认系统与版本:
    • 查看已安装版本:python -Vpython3 -V
    • CentOS 7:默认 Python 2.7.5;仓库常见最高 Python 3.6.8(已停止维护,建议升级)
    • CentOS 8:默认无 Python 2;仓库常见 Python 3.9.6(支持至 2025-10
  • 选择安装方式:
    • 直接用 YUM 安装系统仓库版本(简单、稳定)
    • 编译安装指定版本(如 3.10),使用 make altinstall 避免覆盖系统 Python
    • 使用 Anaconda/Miniconda(适合数据科学场景与多环境管理)

二 安装 Python 环境

  • 方式一 YUM 安装(推荐优先)
    • 安装命令:sudo yum install -y python3 python3-pip
    • 验证:python3 --versionpip3 --version
  • 方式二 编译安装指定版本(示例 3.10
    • 安装依赖:sudo yum groupinstall -y "Development Tools"sudo yum install -y openssl-devel bzip2-devel libffi-devel wget
    • 下载与编译:
      wget 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 -Vpip3.10 --version
  • 方式三 Anaconda(适合多环境与科学计算)
    • 安装脚本:wget https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh
    • 执行安装:bash Anaconda3-2021.05-Linux-x86_64.sh,按提示完成
    • 激活环境:source ~/.bashrcconda activate base
    • 验证:python --version

三 部署 Python 项目

  • 上传与解压
    • 示例:scp myproject.zip user@your_server:/opt && unzip myproject.zip -d /opt/myapp
  • 创建并激活虚拟环境
    • python3 -m venv /opt/venvs/myapp
    • source /opt/venvs/myapp/bin/activate
  • 安装依赖
    • pip install --upgrade pip
    • pip install -r requirements.txt
  • 以 Flask 为例的两种常见运行方式
    • Gunicorn(推荐):/opt/venvs/myapp/bin/gunicorn -b 127.0.0.1:8000 app:app
    • 开发模式:python app.py
  • 生产级进程守护(systemd)
    • 新建服务:sudo 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
      
  • 反向代理与静态资源(Nginx)
    • 安装:sudo yum install -y nginx
    • 配置:sudo vim /etc/nginx/conf.d/myapp.conf
      server {
          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-devel
  • 多版本共存与软连接
    • 使用 make altinstall 安装,避免覆盖系统 Python
    • 如需软连接,指向具体版本(如 ln -s /usr/local/bin/python3.10 /usr/local/bin/python3),谨慎操作
  • Django 静态文件收集
    • 配置 STATIC_ROOT,执行:python manage.py collectstatic
    • Nginx 配置静态目录:location /static/ { alias /path/to/static/; }
  • WSGI/ASGI 进程管理
    • 生产环境建议使用 Gunicorn/Uvicorn + Nginx,而非开发服务器
    • 如需使用 uWSGI,准备 .ini 或 XML 配置,并以 uWSGI 与 Nginx 配合部署

0