阿里云部署fastapi项目

安装uv

一、官方独立安装
curl -LsSf https://astral.sh/uv/install.sh | sh

安装后生效:
source $HOME/.local/bin/env

验证:
uv --version

把项目用moba或者termcc放到阿里云服务器上

执行启动命令:
uv run main.py run --env=dev
服务启动了

放开8001端口

在阿里云安全组,放开8001端口

无法打开http://39.105.218.61:8001/api/v1/docs/

默认情况下,许多 Python Web 框架只监听 127.0.0.1,这会导致公网无法访问。
让我们先检查当前是否有 Python 进程在运行,并尝试以正确的方式重新启动服务,确保监听 0.0.0.0:
ps -ef | grep python | grep -v grep

执行一下
ps -ef | grep python | grep -v grep
root 899 1 0 2025 ? 00:00:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
root 981 1 0 2025 ? 00:00:00 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal
root 703413 1 0 Apr23 ? 00:02:36 /usr/bin/python3 -Es /usr/sbin/tuned -l -P

当前没有运行 FastAPI/uvicorn 相关的 Python 进程。之前的服务可能已经停止或启动失败。

重新执行启动命令

执行启动命令:
uv run main.py run --env=dev

服务已成功启动!但请注意日志中的关键信息:
服务地址 http://localhost:8001

这表明服务仍然只监听在 localhost (127.0.0.1),因此公网 IP (39.105.218.61) 无法访问。虽然您使用了 uv run main.py,但程序内部可能硬编码了监听地址,或者 main.py 的启动逻辑默认绑定了 localhost。

我们需要修改启动方式或检查代码配置。请尝试强制指定 host 为 0.0.0.0。由于您是使用 uv run main.py 启动的,可能需要在环境变量中指定,或者直接修改启动命令。

让我们先停止当前进程,然后尝试通过设置环境变量 HOST=0.0.0.0 来重新启动:

cd /root && HOST=0.0.0.0 nohup uv run main.py --env=dev > fastapi.log 2>&1 &

sleep 3 && ss -tlnp | grep 8001

同时,为了确保服务监听 0.0.0.0,我们需要检查该项目是否支持通过环境变量或命令行参数配置 host。通常 FastAPI 项目可以通过 HOST 环境变量或 --host 参数控制。

cd /root/FastapiAdmin-master/backend && HOST=0.0.0.0 nohup uv run main.py --env=dev > /root/fastapi.log 2>&1 &

阿里云AI助手也没能解决,代码问题问下CC

阿里云部署常见问题

问题:部署到阿里云后公网无法访问 API 文档

现象:使用 uv run main.py run --env=dev 启动服务后,本地可以访问 http://localhost:8001/api/v1/docs,但公网 IP 访问 http://39.105.218.61:8001/api/v1/docs 失败。

原因分析

问题说明
安全组未开放端口阿里云安全组默认不开放自定义端口
服务绑定地址错误默认 SERVER_HOST="localhost" 只允许本地访问

解决步骤

1. 开放阿里云安全组端口
  1. 登录阿里云控制台 → ECS 实例管理
  2. 找到实例 → 安全组配置规则
  3. 点击 手动添加,添加入方向规则:
    • 端口范围:8001/8001
    • 授权对象:0.0.0.0/0(或指定你的 IP)
    • 协议类型:TCP
2. 修改服务绑定地址

编辑服务器上的配置文件 env/.env.dev

# 修改前(只允许本地访问)
SERVER_HOST = "localhost"

# 修改后(允许公网访问)
SERVER_HOST = "0.0.0.0"
3. 重启服务
# 停止原服务 (Ctrl+C)
# 重新启动
uv run main.py run --env=dev

验证:访问 http://39.105.218.61:8001/api/v1/docs 应该能正常打开 Swagger 文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

alena_citc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值