在腾讯云轻量应用服务器(Lighthouse)上部署 Python 项目,通常有以下几种主流方案。你可以根据项目规模、运维能力和是否需要高可用来选择:
✅ 推荐流程概览
- 准备环境(安装 Python、依赖等)
- 上传代码(Git / SCP / 直接打包)
- 配置运行环境(虚拟环境 + 依赖安装)
- 启动服务(Gunicorn/Nginx/Uvicorn + systemd/supervisor)
- 域名与 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)、是否含前端、是否用数据库等,提供定制化部署脚本吗?欢迎补充细节 😊
云知识