在腾讯云轻量应用服务器(Lighthouse)上部署 Python 项目,核心逻辑与通用 Linux 服务器一致,但需要结合轻量服务器的特性(如镜像选择、防火墙规则、域名备案等)来优化流程。以下是基于生产环境经验的实操指南:
一、前置准备:系统与环境初始化
-
选择基础镜像
- 登录腾讯云控制台,创建或购买轻量应用服务器。
- 推荐镜像:直接选择“预装 Python"的官方镜像(如 Ubuntu 20.04/22.04 + Python 3.8+),可节省手动安装时间。若需特定版本,建议选择标准 Ubuntu/Debian/CentOS 镜像后自行配置。
- 注意:轻量服务器默认开启安全组,首次连接需确认 SSH 端口(默认 22)和 HTTP/HTTPS 端口(80/443)已放行。
-
连接服务器
ssh root@<你的公网 IP> # 或使用腾讯云服务器助手(WebSSH)免密码登录 -
更新系统与依赖
sudo apt update && sudo apt upgrade -y # Ubuntu/Debian # CentOS: sudo yum update -y
二、Python 环境部署方案(三选一)
方案 A:使用系统自带 Python(适合快速验证)
# 检查版本
python3 --version
# 创建虚拟环境(推荐)
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
方案 B:通过 pyenv 管理多版本(推荐生产环境)
# 安装 pyenv(Ubuntu 示例)
curl https://pyenv.run | bash
echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc
# 安装目标版本
pyenv install 3.11.5
pyenv global 3.11.5
方案 C:Docker 容器化部署(隔离性好,易迁移)
# Dockerfile 示例
FROM python:3.11-slim
WORKDIR /app
COPY . .
RUN pip install --no-cache-dir -r requirements.txt
CMD ["gunicorn", "your_app:app", "-b", "0.0.0.0", "-w", "4"]
构建并运行:
docker build -t my-python-app .
docker run -d -p 8000:8000 --name app my-python-app
三、项目部署关键步骤
-
上传代码
- 方式 1:Git 拉取(需先安装 git)
git clone <你的仓库地址> cd your-project - 方式 2:SCP 传输本地文件
scp -r ./project root@<IP>:/root/project
- 方式 1:Git 拉取(需先安装 git)
-
安装依赖
source venv/bin/activate # 激活虚拟环境 pip install -r requirements.txt -
配置进程管理工具(必须!)
-
Gunicorn + Supervisor(经典组合)
sudo apt install supervisor -y sudo nano /etc/supervisor/conf.d/myapp.conf配置文件内容:
[program:myapp] command=/root/project/venv/bin/gunicorn main:app -b 0.0.0.0:8000 directory=/root/project user=root autostart=true autorestart=true stderr_logfile=/var/log/myapp.err.log stdout_logfile=/var/log/myapp.out.log启动服务:
sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl start myapp -
Systemd 管理(更现代的方案)
sudo nano /etc/systemd/system/myapp.service内容示例:
[Unit] Description=My Python App After=network.target [Service] User=root WorkingDirectory=/root/project Environment="PATH=/root/project/venv/bin" ExecStart=/root/project/venv/bin/gunicorn main:app -b 0.0.0.0:8000 Restart=always [Install] WantedBy=multi-user.target启用服务:
sudo systemctl daemon-reload sudo systemctl enable myapp sudo systemctl start myapp
-
四、域名与 HTTPS 配置(合规重点)
-
绑定域名
- 在腾讯云 DNSPod 解析域名至服务器公网 IP。
- 重要:国内访问必须完成 ICP 备案,否则域名无法解析到大陆节点。轻量服务器控制台有“备案向导”可直接提交申请。
-
Nginx 反向X_X + Let’s Encrypt
server { listen 80; server_name yourdomain.com; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }安装 Nginx 并配置 SSL:
sudo apt install nginx certbot python3-certbot-nginx -y sudo certbot --nginx -d yourdomain.com
五、轻量服务器特有注意事项
| 项目 | 说明 |
|---|---|
| 流量限制 | 按量付费型需注意带宽峰值,突发流量可能触发限速;建议开启“弹性公网 IP"应对高峰 |
| 快照备份 | 定期在控制台创建系统盘快照,防止误操作导致数据丢失 |
| 安全加固 | 修改默认 SSH 端口、禁用 root 远程登录、安装 fail2ban 防暴力破解 |
| 监控告警 | 开通腾讯云云监控,设置 CPU/内存/磁盘阈值告警 |
六、常见问题排查
- 端口不通:检查安全组规则(控制台 > 实例 > 安全组),确保 80/443/自定义端口已放行。
- 权限拒绝:确认
www-data或当前用户对项目目录有读写权限。 - 依赖报错:部分 C 扩展需安装编译依赖(如
build-essential,libpq-dev)。 - 日志查看:
journalctl -u myapp -f # Systemd 日志 tail -f /var/log/myapp.err.log # Supervisor 日志
通过以上步骤,你可实现从环境搭建到生产部署的全流程覆盖。关键点在于:虚拟环境隔离依赖、进程守护保障稳定、Nginx+SSL 满足合规要求。实际部署前建议在测试环境完整演练一遍,避免线上故障。
CLOUD云枢