适用于: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)
- 浏览器打开
http://你的ip:8888 - 设置面板账号与密码。建议:
- 修改默认端口(面板设置里)
- 开启二次验证与登录提醒
- 进入软件商店安装常用组件:
- nginx
- python 项目管理器 / python 管理
- (按需)mysql、redis
- (站点里内置)let’s encrypt 证书
四、创建 python 运行环境(gui)
- 打开软件商店 → python 管理,安装所需 python 版本(如 3.8/3.10/3.11)。
- 打开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 项目管理器”创建运行项目
- 新增项目,填写:
- 项目名称:
fastapi-demo(示例) - 项目路径:
/www/wwwroot/your_project - 运行用户:
www - 虚拟环境:选择你的 venv(如
venv-fastapi) - 启动方式:asgi(fastapi/starlette)或 wsgi(flask/django)
- 启动命令:见附录(不同框架不同)
- 开机自启:勾选
- 项目名称:
- 点击保存并启动,应看到“运行中”。失败请查看项目日志。
八、用 nginx 反向代理到外网域名(含 ssl)
- 网站 → 添加站点:
- 域名:
yourdomain.com - 网站目录:任意(若仅反代,可为空目录)
- 域名:
- 进入站点设置 → 反向代理:
- 目标 url:
http://127.0.0.1:8000 - 勾选启用反向代理
- 目标 url:
- 站点 → 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。
- 数据库菜单新建库与用户,将连接信息配置进项目。
十三、常见问题速查
- 面板打不开:检查 8888 端口、云安全组与系统防火墙。
- 项目启动失败/502:确认虚拟环境与依赖、启动命令模块路径是否正确,查看项目日志。
- 超时/504:业务阻塞或 worker 较少,适当提高
--workers、检查数据库/外部依赖。 - 依赖安装失败:切换国内源;有的库需系统依赖(如
build-essential、python3-dev、libmysqlclient-dev)。 - 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项目内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论