在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
相关产品推荐
相关产品推荐

