温馨提示×

CentOS Python如何进行Web开发

小樊
36
2025-12-19 18:15:55
栏目: 编程语言

CentOS 上 Python Web 开发从零到部署

一 环境准备与 Python 安装

  • 更新系统并安装基础工具(以 CentOS 7/8 为例):
    • 安装 EPEL 源与基础编译工具:sudo yum install -y epel-release gcc openssl-devel bzip2-devel libffi-devel zlib-devel
    • 安装 Python 3 与 pip:sudo yum install -y python3 python3-pip
    • 升级 pip:python3 -m pip install --upgrade pip
  • 可选:编译安装更高版本 Python(示例为 3.9.7
    • 下载与安装:
      wget https://www.python.org/ftp/python/3.9.7/Python-3.9.7.tgz
      tar -xzf Python-3.9.7.tgz
      cd Python-3.9.7
      ./configure --prefix=/usr/local/python3.9
      make && sudo make altinstall
      
    • 建立软链:sudo ln -s /usr/local/python3.9/bin/python3.9 /usr/bin/python3.9
    • 验证:python3.9 --versionpip3.9 --version
  • 说明:CentOS 7 默认带 Python 2.7,现代 Web 开发建议使用 Python 3.x

二 创建项目与虚拟环境

  • 创建项目目录并进入:mkdir -p ~/myproj && cd ~/myproj
  • 创建并激活虚拟环境(推荐 venv):
    python3 -m venv venv
    source venv/bin/activate
    pip install --upgrade pip
    pip install -U setuptools wheel
    
  • 安装常用依赖:pip install flask gunicorn(或 pip install django
  • 生成依赖清单:pip freeze > requirements.txt,便于复现环境。

三 编写并运行示例应用

  • Flask 最小示例(保存为 app.py
    from flask import Flask
    app = Flask(__name__)
    
    @app.route("/")
    def hello():
        return "Hello, Flask on CentOS!"
    
    if __name__ == "__main__":
        # 开发时仅本机访问;生产请用 Gunicorn/uWSGI + Nginx
        app.run(host="127.0.0.1", port=5000, debug=False)
    
  • 直接运行(开发模式):python app.py
  • 使用 Gunicorn 运行(推荐用于生产前的本机验证):gunicorn -b 127.0.0.1:8000 app:app
  • 浏览器访问:http://127.0.0.1:5000(Flask 开发服务器)或 http://127.0.0.1:8000(Gunicorn)。

四 生产部署 Nginx + Gunicorn(或 uWSGI)

  • 安装并启动 Nginx
    sudo yum install -y nginx
    sudo systemctl start nginx
    sudo systemctl enable nginx
    
  • 方案 A:Nginx + Gunicorn(HTTP 反向代理)
    • 启动 Gunicorn:gunicorn -b 127.0.0.1:8000 app:app
    • 配置 Nginx(示例:/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;
          }
      }
      
    • 重载 Nginx:sudo systemctl reload nginx
  • 方案 B:Nginx + uWSGI(Unix Socket)
    • uWSGI 配置(示例:myapp.ini
      [uwsgi]
      module = app:app
      master = true
      processes = 4
      socket = /tmp/myapp.sock
      chmod-socket = 660
      vacuum = true
      die-on-term = true
      
    • 启动 uWSGI:uwsgi --ini myapp.ini
    • Nginx 配置片段
      location / {
          include uwsgi_params;
          uwsgi_pass unix:/tmp/myapp.sock;
      }
      
  • 访问应用:通过服务器的 IP/域名 访问 http://your_domain_or_ip/
  • 进程守护(可选):使用 Supervisor 管理 Gunicorn/uWSGI,示例
    sudo yum install -y supervisor
    # /etc/supervisord.d/myapp.ini
    [program:myapp]
    command=/path/to/venv/bin/gunicorn -b 127.0.0.1:8000 app:app
    directory=/home/youruser/myproj
    user=youruser
    autostart=true
    autorestart=true
    redirect_stderr=true
    stdout_logfile=/var/log/myapp.log
    
    • 启动:sudo systemctl start supervisord && sudo supervisorctl reread && sudo supervisorctl update

五 数据库与框架选择建议

  • 数据库驱动与 ORM
    • MySQLpip install mysqlclient(推荐)或 pymysql;ORM 用 SQLAlchemy
    • PostgreSQLpip install psycopg2-binary;ORM 用 SQLAlchemy
  • 框架选择
    • Flask:轻量灵活,适合中小型服务与 RESTful API
    • Django:全栈框架,自带管理后台与 ORM,适合中大型项目。
    • 性能参考:在 CentOS 7 环境下,基于 ab 的对比显示 Falcon + Gunicorn + PyPy 在“Hello World”场景吞吐更佳;Django 虽非性能最优,但生态完备、开发效率高,适合复杂业务。

0