速卖通素材
奋斗

阿里云轻量应用服务器怎么部署python?

服务器

在阿里云轻量应用服务器上部署 Python 项目,通常有几种主流方式。选择哪种方式取决于你的项目类型(Web 应用、脚本任务、API服务等)和你对运维复杂度的接受程度。

以下是 4 种常用部署方案,从简单到专业排列:


✅ 推荐方案概览

方案 适用场景 难度 优点
1. 宝塔面板 (BT Panel) 新手、静态网站+Python混合、快速上线 图形化界面,一键部署,可视化监控
2. Docker + Nginx + Gunicorn 中大型项目、需要环境隔离、微服务 ⭐⭐⭐ 环境一致性强,易于扩展和迁移
3. systemd + Gunicorn/Uvicorn 生产环境标准做法、无容器需求 ⭐⭐ 资源占用少,稳定可靠,官方推荐
4. 直接运行 (不推荐生产) 测试、临时调试 最简单,但无法后台运行,易被中断

🚀 方案一:使用宝塔面板(最适合新手)

这是最友好的方式,通过图形界面管理服务器。

步骤:

  1. 安装宝塔面板

    • 登录阿里云控制台 → 进入轻量应用服务器 → 点击“远程连接”或 SSH 登录。
    • 执行宝塔官方安装命令(以 CentOS/Ubuntu 为例):
      # CentOS
      yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec
      # Ubuntu/Debian
      wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ed8484bec
    • 安装完成后,记录 面板地址用户名密码
  2. 登录宝塔面板

    • 浏览器访问面板地址,用账号密码登录。
    • 推荐安装 NginxMySQL(如果需要数据库)。
  3. 添加站点

    • 点击“网站” → “添加站点” → 填写域名或 IP → 创建。
  4. 部署 Python 项目

    • 在宝塔左侧菜单找到 “软件商店” → 搜索 “Python项目管理器” 并安装。
    • 回到“网站”列表,点击你刚创建的站点 → 点击 “Python项目”
    • 点击“添加项目”:
      • 项目名称:自定义
      • 启动文件:如 app.pywsgi.py
      • 项目路径:指向你的代码目录
      • Python版本:选择已安装的版本(如 Python 3.9)
      • 依赖包:可自动安装 requirements.txt
    • 启动后,宝塔会自动配置反向X_X(Nginx),外部即可通过 IP/域名访问。

💡 提示:如果项目是 FastAPI/Flask/Django,确保使用了 WSGI/ASGI 服务器(如 Gunicorn/Uvicorn)。


🐳 方案二:Docker 部署(推荐用于生产环境)

适合希望环境隔离、便于迁移的团队。

步骤:

  1. 安装 Docker

    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
    systemctl start docker
    systemctl enable docker
  2. 编写 Dockerfile
    在你的项目根目录创建 Dockerfile

    FROM python:3.9-slim
    WORKDIR /app
    COPY requirements.txt .
    RUN pip install --no-cache-dir -r requirements.txt
    COPY . .
    # 假设使用 Gunicorn 运行 Flask/FastAPI
    CMD ["gunicorn", "--bind", "0.0.0.0:8000", "app:app"]

    注意:app:app 表示 app.py 中的 app 变量。

  3. 构建镜像

    docker build -t my-python-app .
  4. 运行容器

    docker run -d -p 8000:8000 --name my-app my-python-app
  5. 配置 Nginx 反向X_X(可选但推荐)

    • 安装 Nginx:apt install nginxyum install 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;
       }
      }
    • 重启 Nginx:systemctl restart nginx

⚙️ 方案三:systemd + Gunicorn(原生 Linux 服务)

适合追求轻量、高性能的生产环境。

步骤:

  1. 安装 Python 和虚拟环境

    apt update
    apt install python3-pip python3-venv
    cd /var/www/myproject
    python3 -m venv venv
    source venv/bin/activate
    pip install -r requirements.txt
    pip install gunicorn  # 或 uvicorn (FastAPI)
  2. 测试运行

    gunicorn --bind 0.0.0.0:8000 app:app

    确认可以正常访问后,按 Ctrl+C 停止。

  3. 创建 systemd 服务文件

    nano /etc/systemd/system/myproject.service

    内容如下:

    [Unit]
    Description=Gunicorn instance to serve myproject
    After=network.target
    
    [Service]
    User=www-data
    Group=www-data
    WorkingDirectory=/var/www/myproject
    Environment="PATH=/var/www/myproject/venv/bin"
    ExecStart=/var/www/myproject/venv/bin/gunicorn --workers 3 --bind unix:myproject.sock -m 007 app:app
    
    [Install]
    WantedBy=multi-user.target
  4. 启用并启动服务

    systemctl daemon-reload
    systemctl start myproject
    systemctl enable myproject
    systemctl status myproject
  5. 配置 Nginx 反向X_X
    与 Docker 方案类似,将 proxy_pass 改为 http://unix:/var/www/myproject/myproject.sock;


❌ 方案四:直接运行(仅用于测试)

cd /your/project/path
python3 app.py

⚠️ 缺点:关闭终端进程就结束;无法多用户并发;没有错误日志管理。严禁用于生产环境


🔐 安全建议(所有方案通用)

  1. 防火墙设置

    • 在阿里云控制台 → 轻量应用服务器 → 防火墙规则中,只开放必要端口(如 80, 443, 22)。
    • 不要直接暴露 Python 服务的端口(如 8000)。
  2. HTTPS 证书

    • 使用 Let’s Encrypt 免费证书(可通过 Certbot 或宝塔一键申请)。
  3. 定期更新系统和安全补丁

    apt upgrade -y  # Debian/Ubuntu
    yum update -y   # CentOS
  4. 备份数据

    • 定期备份数据库和重要文件。

📌 如何选择?

  • 如果你是初学者 → 选 宝塔面板,省时省力。
  • 如果你熟悉 Linux 和 DevOps → 选 Docker,便于维护和扩展。
  • 如果你追求极致性能和稳定性 → 选 systemd + Gunicorn,资源占用最低。

如有具体框架(如 Django、Flask、FastAPI),可提供更多信息,我可以给出更详细的配置示例。

未经允许不得转载:轻量云Cloud » 阿里云轻量应用服务器怎么部署python?