宝塔(BT面板)部署Python项目图形化完整步骤

 更新时间:2025年12月01日 09:08:34   作者:wow_DG  
这篇文章主要介绍了宝塔(BT面板)部署Python项目的完整步骤,包括安装宝塔面板、创建Python运行环境、上传项目代码、安装依赖、配置反向代理、设置静态文件和跨域等步骤,需要的朋友可以参考下

适用于:Linux 服务器(Ubuntu/CentOS 等)+ 宝塔面板(Linux 版)。全程 GUI 操作为主, FastAPI 可复制配置。

一、准备工作

  • 一台云服务器(推荐:Ubuntu 20.04/22.04 或 CentOS 7/8)。
  • 放通安全组端口:22(SSH)、8888(面板首次登录口)、80/443(网站)。
  • 有域名并完成解析(可选,用于 HTTPS)。

二、安装宝塔面板(一次性命令)

这一步需 SSH 进入服务器;安装成功后其余基本用 GUI。若下述命令失效,请到宝塔官网下载最新脚本。

# Ubuntu/Debian 常见
wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh

# CentOS 常见
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh

安装完成后终端会显示:面板地址(如 http://你的IP:8888)、初始账号/密码或初始化向导。若 8888 访问不到,检查云安全组与系统防火墙。

查看宝塔面板信息命令

bt default

运行后会显示类似如下信息:

外网面板地址: http://xxx.xxx.xxx.xxx:8888/xxxxxx
内网面板地址: http://xxx.xxx.xxx.xxx:8888/xxxxxx
username: xxxxxxxx
password: xxxxxxxx

三、首次进入宝塔面板(GUI)

  1. 浏览器打开 http://你的IP:8888
  2. 设置面板账号与密码。建议:
    • 修改默认端口(面板设置里)
    • 开启二次验证登录提醒
  3. 进入软件商店安装常用组件:
    • Nginx
    • Python 项目管理器 / Python 管理
    • (按需)MySQLRedis
    • (站点里内置)Let’s Encrypt 证书

四、创建 Python 运行环境(GUI)

  1. 打开软件商店 → Python 管理,安装所需 Python 版本(如 3.8/3.10/3.11)。
  2. 打开Python 项目管理器,点击创建虚拟环境,选择上面安装的 Python 版本,命名如 venv-fastapi

五、上传或获取项目代码(GUI)

  • 方式一(上传压缩包):面板 文件 → 上传 → 解压到 /www/wwwroot/your_project
  • 方式二(Git 拉取):在面板终端或 Git 插件中执行 git clone 到上述目录

建议目录(FastAPI 示例):

/www/wwwroot/your_project
├─ app/
│  └─ main.py           # 入口(app = FastAPI())
├─ requirements.txt
└─ .env                 # 可选,存放环境变量

六、安装依赖(GUI)

进入 Python 项目管理器 → 虚拟环境 → 选择 venv,点击安装依赖,选择项目 requirements.txt

国内环境可改为国内 PyPI 源以加速。

七、用“Python 项目管理器”创建运行项目

  1. 新增项目,填写:
    • 项目名称fastapi-demo(示例)
    • 项目路径/www/wwwroot/your_project
    • 运行用户www
    • 虚拟环境:选择你的 venv(如 venv-fastapi
    • 启动方式:ASGI(FastAPI/Starlette)或 WSGI(Flask/Django)
    • 启动命令:见附录(不同框架不同)
    • 开机自启:勾选
  2. 点击保存并启动,应看到“运行中”。失败请查看项目日志

八、用 Nginx 反向代理到外网域名(含 SSL)

  1. 网站 → 添加站点
    • 域名yourdomain.com
    • 网站目录:任意(若仅反代,可为空目录)
  2. 进入站点设置 → 反向代理
    • 目标 URLhttp://127.0.0.1:8000
    • 勾选启用反向代理
  3. 站点 → SSL
    • 选择 Let’s Encrypt,验证域名并签发
    • 开启强制 HTTPS

此时访问 https://yourdomain.com 即转发到后端服务。

九、静态文件与跨域(可选)

静态文件(Nginx)

location /static/ {
    alias /www/wwwroot/your_project/app/static/;
    expires 30d;
    access_log off;
}

跨域(后端或 Nginx):FastAPI 可用 CORS 中间件;或在 Nginx 添加响应头按需处理。

十、环境变量与密钥(可选)

  • 在“项目 → 启动命令”前添加:
    export ENV=prod SECRET_KEY='your-secret' && gunicorn ...
    
  • 或放 .env,配合 python-dotenv 读取。

十一、日志监控与开机自启

  • Python 项目管理器 → 日志 查看启动/错误日志。
  • 运行状态观察资源使用。
  • 勾选开机自启即可随系统启动。

十二、数据库与 Redis(可选)

  • 软件商店安装 MySQL/Redis。
  • 数据库菜单新建库与用户,将连接信息配置进项目。

十三、常见问题速查

  1. 面板打不开:检查 8888 端口、云安全组与系统防火墙。
  2. 项目启动失败/502:确认虚拟环境与依赖、启动命令模块路径是否正确,查看项目日志。
  3. 超时/504:业务阻塞或 worker 较少,适当提高 --workers、检查数据库/外部依赖。
  4. 依赖安装失败:切换国内源;有的库需系统依赖(如 build-essentialpython3-devlibmysqlclient-dev)。
  5. HTTPS 失败:确保域名解析到当前服务器,80/443 放通且未被占用。

附录 A:FastAPI 可复制配置

假设:Python 3.8.19、项目在 /www/wwwroot/your_project

目录与示例代码

/www/wwwroot/your_project
├─ app/
│  └─ main.py
├─ requirements.txt
└─ .env   (可选)

app/main.py

from fastapi import FastAPI
app = FastAPI()

@app.get("/")
def hello():
    return {"msg": "Hello from FastAPI on Baota!"}

requirements.txt

fastapi
uvicorn
gunicorn
python-dotenv

Python 项目管理器表单

  • 项目名称:fastapi-demo
  • 项目路径:/www/wwwroot/your_project
  • 运行用户:www
  • 虚拟环境:选择已创建的 venv(基于 Python 3.8.19)
  • 启动方式:ASGI / 自定义命令
  • 启动命令:
    gunicorn -k uvicorn.workers.UvicornWorker app.main:app -b 127.0.0.1:8000 --workers 2 --timeout 60
    
  • 开机自启:勾选

Nginx 反代(站点 → 反向代理)

  • 目标 URL:http://127.0.0.1:8000
  • 启用反向代理:勾选
    (SSL 在站点 → SSL 里申请并开启“强制 HTTPS”)

静态(可选)

location /static/ {
    alias /www/wwwroot/your_project/app/static/;
    expires 30d;
    access_log off;
}

总结 

到此这篇关于宝塔(BT面板)部署Python项目的文章就介绍到这了,更多相关宝塔部署Python项目内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python实现图片九宫格分割

    python实现图片九宫格分割

    一张图片分成的九宫图,大家知道是怎么做到吗?这篇文章就为大家详细介绍了python实现图片九宫格分割功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • Windows10下Tensorflow2.0 安装及环境配置教程(图文)

    Windows10下Tensorflow2.0 安装及环境配置教程(图文)

    这篇文章主要介绍了Windows10下Tensorflow2.0 安装及环境配置教程(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • python调用C/C++动态库的实践案例

    python调用C/C++动态库的实践案例

    python是动态语言,c++是静态语言,下面这篇文章主要介绍了python调用C/C++动态库的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-09-09
  • 基于python select.select模块通信的实例讲解

    基于python select.select模块通信的实例讲解

    下面小编就为大家带来一篇基于python select.select模块通信的实例讲解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • python opencv实现gif图片分解的示例代码

    python opencv实现gif图片分解的示例代码

    这篇文章主要介绍了python opencv实现gif图片分解的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Python3显示当前时间、计算时间差及时间加减法示例代码

    Python3显示当前时间、计算时间差及时间加减法示例代码

    这篇文章主要给大家介绍了关于Python3显示当前时间、计算时间差及时间加减法的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python3具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • Jupyter Notebook/VSCode导出PDF中文不显示的解决

    Jupyter Notebook/VSCode导出PDF中文不显示的解决

    这篇文章主要介绍了Jupyter Notebook/VSCode导出PDF中文不显示的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • OpenCV基础HSV颜色空间*args与**kwargs滑动条传参问题

    OpenCV基础HSV颜色空间*args与**kwargs滑动条传参问题

    这篇文章主要介绍了OpenCV基础中HSV颜色空间*args与**kwargs滑动条传参问题的详细解析,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-10-10
  • Python获取文件夹下所有文件的方法教程

    Python获取文件夹下所有文件的方法教程

    使用Python获取文件夹下所有文件可采用os模块或pathlib模块,os模块通过os.listdir和os.walk方法实现文件遍历,而pathlib模块通过Path类和其iterdir与rglob方法实现,两种方法各有优势,可根据具体需求选择使用,需要的朋友可以参考下
    2024-11-11
  • python爬虫之请求模块urllib的基本使用

    python爬虫之请求模块urllib的基本使用

    urllib是python内置的HTTP请求库,是一个用来处理网络请求的python标准库,下面这篇文章主要给大家介绍了关于python爬虫之请求模块urllib的基本使用,需要的朋友可以参考下
    2022-04-04

最新评论