在腾讯云轻量应用服务器上怎么部署Python项目?

在腾讯云轻量应用服务器(Lighthouse)上部署 Python 项目,通常有以下几种主流方案。你可以根据项目规模、运维能力和是否需要高可用来选择:


✅ 推荐流程概览

  1. 准备环境(安装 Python、依赖等)
  2. 上传代码(Git / SCP / 直接打包)
  3. 配置运行环境(虚拟环境 + 依赖安装)
  4. 启动服务(Gunicorn/Nginx/Uvicorn + systemd/supervisor)
  5. 域名与 HTTPS 配置(可选但推荐)

📦 方案一:传统方式(适合中小型项目,手动管理)

步骤 1:连接服务器

ssh root@你的服务器IP
# 或使用腾讯云服务器控制台“远程连接”

步骤 2:安装基础工具 & Python

# 更新系统
apt update && apt upgrade -y

# 安装 Python 3.10+(若已有可跳过)
apt install python3.10 python3.10-venv python3-pip git -y

# 创建虚拟环境
mkdir ~/myproject
cd ~/myproject
python3.10 -m venv venv
source venv/bin/activate

# 升级 pip
pip install --upgrade pip

步骤 3:上传代码

方式 A:用 Git 克隆

git clone https://github.com/yourname/your-project.git .

方式 B:用 scp 从本地上传

# 本地执行
scp -r ./your_project root@你的服务器IP:~/myproject/

方式 C:压缩包上传后解压

# 本地打包
tar czf project.tar.gz your_project/

# 上传到服务器(本地执行)
scp project.tar.gz root@你的服务器IP:~/myproject/

# 服务器上解压
cd ~/myproject
tar xzf project.tar.gz
rm project.tar.gz

步骤 4:安装依赖

pip install -r requirements.txt
# 或手动安装关键包:pip install flask gunicorn redis ...

步骤 5:编写启动脚本(可选但推荐)

创建 start.sh

#!/bin/bash
cd /root/myproject
source venv/bin/activate
gunicorn -w 4 -b 0.0.0.0:8000 app:app

注意:将 app:app 替换为你的实际模块名和实例名(如 main:app

赋予执行权限并测试:

chmod +x start.sh
./start.sh
# 按 Ctrl+C 停止测试

步骤 6:使用 systemd 守护进程(推荐)

创建服务文件:

sudo nano /etc/systemd/system/myproject.service

内容示例:

[Unit]
Description=My Flask App
After=network.target

[Service]
User=root
WorkingDirectory=/root/myproject
Environment="PATH=/root/myproject/venv/bin"
ExecStart=/root/myproject/start.sh
Restart=always

[Install]
WantedBy=multi-user.target

启用并启动:

sudo systemctl daemon-reload
sudo systemctl enable myproject
sudo systemctl start myproject
sudo systemctl status myproject

✅ 现在服务会随系统重启自动启动!


🌐 方案二:Nginx 反向X_X + Gunicorn(生产环境标准做法)

安装 Nginx

apt install nginx -y

配置 Nginx 站点

sudo nano /etc/nginx/sites-available/myproject

示例配置:

server {
    listen 80;
    server_name your-domain.com www.your-domain.com;

    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 ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default  # 移除默认配置(可选)
sudo nginx -t && sudo systemctl reload nginx

(可选)申请 SSL 证书(Let’s Encrypt)

apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your-domain.com

🚀 方案三:Docker 部署(适合容器化、多项目隔离)

安装 Docker

curl -fsSL https://get.docker.com | sh
systemctl enable docker
systemctl start docker

编写 Dockerfile

在项目根目录创建 Dockerfile

FROM python:3.10-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

EXPOSE 8000

CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:8000", "app:app"]

构建并运行

docker build -t myproject .
docker run -d -p 8000:8000 --name myproject_container myproject

如需持久化数据或配置环境变量,可加 -v--env 参数。


🔍 常见问题排查

问题 解决方案
Permission denied 检查文件权限:chmod +x script.sh,确保用户有权访问
端口被占用 lsof -i :8000 查看进程,或用 kill -9 <PID> 终止
数据库连接失败 检查防火墙规则(安全组)、DB 监听地址是否为 0.0.0.0
静态资源不加载 确认 Nginx 配置了 static_files 或直接由 Gunicorn 托管(Flask 需 send_from_directory
日志无输出 检查 journalctl -u myproject -f 或自定义日志路径

🛡️ 安全建议

  • ✅ 修改 SSH 默认端口(22 → 非标准端口),禁用 root 登录
  • ✅ 设置强密码或改用 SSH Key 认证
  • ✅ 配置防火墙(腾讯云控制台 → 安全组)仅开放必要端口(如 80/443/自定义SSH)
  • ✅ 定期更新系统和依赖:apt upgrade, pip list --outdated

📌 补充:轻量应用服务器特有功能

  • 一键部署:部分镜像(如 Ubuntu + LAMP/LNMP)支持快速安装 Web 环境
  • 快照备份:部署前打快照,便于回滚
  • 监控告警:通过云监控设置 CPU/内存/磁盘阈值告警

需要我根据你的具体项目类型(如 Flask/Django/FastAPI)、是否含前端、是否用数据库等,提供定制化部署脚本吗?欢迎补充细节 😊