在阿里云轻量应用服务器上部署 Python 项目,通常有几种主流方式。选择哪种方式取决于你的项目类型(Web 应用、脚本任务、API服务等)和你对运维复杂度的接受程度。
以下是 4 种常用部署方案,从简单到专业排列:
✅ 推荐方案概览
| 方案 | 适用场景 | 难度 | 优点 |
|---|---|---|---|
| 1. 宝塔面板 (BT Panel) | 新手、静态网站+Python混合、快速上线 | ⭐ | 图形化界面,一键部署,可视化监控 |
| 2. Docker + Nginx + Gunicorn | 中大型项目、需要环境隔离、微服务 | ⭐⭐⭐ | 环境一致性强,易于扩展和迁移 |
| 3. systemd + Gunicorn/Uvicorn | 生产环境标准做法、无容器需求 | ⭐⭐ | 资源占用少,稳定可靠,官方推荐 |
| 4. 直接运行 (不推荐生产) | 测试、临时调试 | ⭐ | 最简单,但无法后台运行,易被中断 |
🚀 方案一:使用宝塔面板(最适合新手)
这是最友好的方式,通过图形界面管理服务器。
步骤:
-
安装宝塔面板
- 登录阿里云控制台 → 进入轻量应用服务器 → 点击“远程连接”或 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 - 安装完成后,记录
面板地址、用户名、密码。
-
登录宝塔面板
- 浏览器访问面板地址,用账号密码登录。
- 推荐安装 Nginx 和 MySQL(如果需要数据库)。
-
添加站点
- 点击“网站” → “添加站点” → 填写域名或 IP → 创建。
-
部署 Python 项目
- 在宝塔左侧菜单找到 “软件商店” → 搜索 “Python项目管理器” 并安装。
- 回到“网站”列表,点击你刚创建的站点 → 点击 “Python项目”。
- 点击“添加项目”:
- 项目名称:自定义
- 启动文件:如
app.py或wsgi.py - 项目路径:指向你的代码目录
- Python版本:选择已安装的版本(如 Python 3.9)
- 依赖包:可自动安装
requirements.txt
- 启动后,宝塔会自动配置反向X_X(Nginx),外部即可通过 IP/域名访问。
💡 提示:如果项目是 FastAPI/Flask/Django,确保使用了 WSGI/ASGI 服务器(如 Gunicorn/Uvicorn)。
🐳 方案二:Docker 部署(推荐用于生产环境)
适合希望环境隔离、便于迁移的团队。
步骤:
-
安装 Docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun systemctl start docker systemctl enable docker -
编写 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变量。 -
构建镜像
docker build -t my-python-app . -
运行容器
docker run -d -p 8000:8000 --name my-app my-python-app -
配置 Nginx 反向X_X(可选但推荐)
- 安装 Nginx:
apt install nginx或yum 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
- 安装 Nginx:
⚙️ 方案三:systemd + Gunicorn(原生 Linux 服务)
适合追求轻量、高性能的生产环境。
步骤:
-
安装 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) -
测试运行
gunicorn --bind 0.0.0.0:8000 app:app确认可以正常访问后,按
Ctrl+C停止。 -
创建 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 -
启用并启动服务
systemctl daemon-reload systemctl start myproject systemctl enable myproject systemctl status myproject -
配置 Nginx 反向X_X
与 Docker 方案类似,将proxy_pass改为http://unix:/var/www/myproject/myproject.sock;
❌ 方案四:直接运行(仅用于测试)
cd /your/project/path
python3 app.py
⚠️ 缺点:关闭终端进程就结束;无法多用户并发;没有错误日志管理。严禁用于生产环境。
🔐 安全建议(所有方案通用)
-
防火墙设置:
- 在阿里云控制台 → 轻量应用服务器 → 防火墙规则中,只开放必要端口(如 80, 443, 22)。
- 不要直接暴露 Python 服务的端口(如 8000)。
-
HTTPS 证书:
- 使用 Let’s Encrypt 免费证书(可通过 Certbot 或宝塔一键申请)。
-
定期更新系统和安全补丁:
apt upgrade -y # Debian/Ubuntu yum update -y # CentOS -
备份数据:
- 定期备份数据库和重要文件。
📌 如何选择?
- 如果你是初学者 → 选 宝塔面板,省时省力。
- 如果你熟悉 Linux 和 DevOps → 选 Docker,便于维护和扩展。
- 如果你追求极致性能和稳定性 → 选 systemd + Gunicorn,资源占用最低。
如有具体框架(如 Django、Flask、FastAPI),可提供更多信息,我可以给出更详细的配置示例。
轻量云Cloud