You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在cPanel中用a2wsgi部署FastAPI遇子进程终止问题求助

cPanel部署FastAPI遇子进程Signal 15终止问题解决

问题现象

  • 部署FastAPI到cPanel子域名时,持续收到错误:[UID:1293][19858] Child process with pid: 20085 was killed by signal: 15, core dump: 0
  • 保留默认passenger_wsgi.py的application函数时,访问子域名正常显示"It works!";删除该函数并配置FastAPI后触发错误
  • 终端执行uvicorn main:app显示启动成功,但curl http://localhost:8000无响应且挂起
  • 访问子域名时进程超时后自动终止,需手动清理残留进程

环境信息

  • cPanel Python应用环境:Python 3.8.12
  • 依赖:uvicorn、fastapi已通过终端pip正常安装
  • 代码存放路径:子域名api.mydomain.com根目录

已尝试的无效操作

  • 单独使用子域名部署
  • 参考Stack Overflow及GitHub相关问题排查
  • 更换uvicorn启动端口

解决方案

1. 切换为Passenger ASGI模式(核心修复)

cPanel默认Passenger配置为WSGI模式,而FastAPI是ASGI框架,需切换到ASGI适配:

  • 在子域名根目录创建passenger_asgi.py文件,内容如下:
from main import app
application = app
  • 删除或重命名原passenger_wsgi.py(避免Passenger优先加载WSGI入口)

2. 确认依赖安装在虚拟环境内

cPanel的Python应用会创建独立虚拟环境,需确保依赖安装到对应环境:

  • 进入cPanel的"Python应用"界面,找到对应应用,点击"进入终端"
  • 在虚拟环境终端内执行:
pip install uvicorn fastapi

3. 验证部署

  • 重启cPanel的Python应用(在应用界面点击"重启"按钮)
  • 访问子域名api.mydomain.com,应正常返回"Hello World!"

额外说明

  • Signal 15是SIGTERM信号,此处因Passenger无法识别ASGI应用启动状态,超时后终止子进程,切换到ASGI入口即可解决
  • 终端内uvicorn挂起属于cPanel终端环境的网络限制,不影响Passenger托管的正常部署

内容的提问来源于stack exchange,提问作者mdkb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 16:06:44