阿里云 + 宝塔面板环境Python 项目从 0 到 1 部署全流

这份文档专门针对使用的 阿里云 + 宝塔面板 环境。


Python 项目从 0 到 1 部署全流程手册

第一阶段:云端环境准备

  1. 域名解析 (DNS)

    • 登录阿里云控制台,进入"云解析 DNS"。

    • 添加 A 记录 :主机记录填 agentgenerate(或其他子域名),记录值填你的服务器公网 IP 120.xx.xx.xx

  2. 安全组放行

    • 在阿里云安全组中,务必放行以下端口:80 (HTTP), 443 (HTTPS), 8888 (宝塔面板), 以及你的项目端口 8000

第二阶段:申请与部署 SSL 证书

  1. 证书申请 :在阿里云"数字证书管理服务"中申请免费证书,绑定域名 agentgenerate.xxxxx.com

  2. 获取密钥 :证书签发后,下载 Nginx 版本的证书,得到 .pem (证书) 和 .key (私钥) 文件内容。

  3. 宝塔部署 :在宝塔 Python 项目管理的 SSL 选项卡中,将内容粘贴进去并保存。

第三阶段:宝塔面板项目创建

  1. 上传代码 :将项目代码上传至服务器目录(如 /www/wwwroot/agent_generate)。

  2. 创建项目

    • 打开宝塔"Python 项目管理器",点击"添加项目"。

    • 启动方式 :选择 gunicorn

    • 项目端口 :填 8000

    • 入口文件 :选择你的主程序(如 app.py),应用名称填 app

  3. 安装依赖 :在"模块"或"终端"中安装 fastapi, uvicorn, gunicorn 等必要库。

第四阶段:配置 Nginx 反向代理 (核心关键)

在项目的"配置文件"中,确保反向代理部分配置如下,以支持 HTTPS 和正确的域名转发:

Nginx

复制代码
location / {
    proxy_pass http://127.0.0.1:8000; # 转发到本地Python端口
    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; # 告知后端当前是HTTPS
    
    # 支持 WebSocket 和长连接
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

第五阶段:服务启动与验证

  1. 重载 Nginx :修改配置文件后,必须在宝塔"软件商店"找到 Nginx,点击"服务" -> "重载配置"

  2. 重启 Python 项目:在项目管理器中点击"重启"。

  3. 最终验证

    • 访问 https://你的域名/docs 查看交互式 API 文档。

    • 如果页面显示"连接已重置",请检查 Nginx 是否重启,以及 443 端口是否被拦截。


💡 避坑小贴士

  • 不要在 root 终端直接运行 python app.py:这会因为找不到虚拟环境的依赖而报错。请始终使用宝塔界面或进入虚拟环境操作。

  • HTTPS 强制跳转:建议在宝塔 SSL 界面开启"强制 HTTPS",避免用户误入不安全的 HTTP 页面。

相关推荐
2301_7765087218 小时前
Python日志记录(Logging)最佳实践
jvm·数据库·python
2401_8796938718 小时前
用Python批量处理Excel和CSV文件
jvm·数据库·python
I'm Jie19 小时前
Swagger UI 本地化部署,解决 FastAPI Swagger UI 依赖外部 CDN 加载失败问题
python·ui·fastapi·swagger·swagger ui
2401_8463416519 小时前
Python Lambda(匿名函数):简洁之道
jvm·数据库·python
2401_8796938719 小时前
进阶技巧与底层原理
jvm·数据库·python
阿_旭19 小时前
基于YOLO26深度学习的【桃子成熟度检测与分割系统】【python源码+Pyqt5界面+数据集+训练代码】图像分割、人工智能
人工智能·python·深度学习·桃子成熟度检测
蹦哒19 小时前
Kotlin 与 Java 语法差异
java·python·kotlin
小仓桑19 小时前
【Agent智能体项目实战三】LangChain调用通义千问保姆级教程
数据库·阿里云·langchain·agent
jerryinwuhan19 小时前
python数据挖掘基础
python·数据挖掘·numpy
echome88819 小时前
Python 异步编程实战:asyncio 核心概念与最佳实践
开发语言·网络·python