如何在CyberPanel部署AdonisJS应用 解决访问无限加载问题
CyberPanel部署AdonisJS无限加载问题修复方案
你当前的配置存在3个直接导致请求挂起的核心错误,按以下步骤修复即可:
前置校验
先确认你已经在应用根目录执行过生产构建命令:node ace build --production
构建完成后所有运行所需的产物会输出到项目下的build目录,你当前配置直接指向源码根目录的server.js是第一个核心错误——根目录的入口文件仅用于开发模式,会加载热重载、开发调试相关逻辑,在OpenLiteSpeed的进程托管环境下会直接卡死无响应。
修正vHost的App Server配置
将你当前的context块替换为以下内容:
context / { type appserver location /home/dominio.com/aplicativo/build binPath /usr/bin/node appType node startupFile server.js maxConns 100 appserverEnv { "NODE_ENV": "production", "PORT": "3000", "HOST": "127.0.0.1" } rewrite { enableREWRITE 1 rewriteRules <<<END_rules RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ http://127.0.0.1:3000/$1 [P,L] END_rules } addDefaultCharset off }
配置修改说明:
- 修正
location路径为构建后的build目录,确保OpenLiteSpeed调用的是生产环境编译后的入口文件 - 新增
appserverEnv环境变量配置,强制指定运行环境为production,同时绑定AdonisJS服务仅监听本地127.0.0.1的3000端口,避免公网直接暴露Node服务 - 补全空的rewrite规则:你当前配置中rewrite块为空,所有请求不会被转发到Node进程,OpenLiteSpeed会持续等待后端响应直到超时,表现就是页面无限加载。新增的规则会优先让Web服务器直接返回存在的静态资源(JS、CSS、图片等),不存在的路径全部转发给AdonisJS处理,符合框架的单入口路由要求。
配置生效前必做检查
- 修正目录权限,执行命令给OpenLiteSpeed运行用户授权:
chown -R nobody:nogroup /home/dominio.com/aplicativo
权限不足会导致Node进程无法读取构建产物,启动后直接挂起无响应。 - 手动验证Node服务可正常启动:进入
/home/dominio.com/aplicativo/build目录,执行NODE_ENV=production node server.js,控制台正常输出服务启动在3000端口的提示即为正常,验证完成后按Ctrl+C停掉手动启动的进程,避免端口占用。
重载服务生效
在CyberPanel面板重启OpenLiteSpeed服务,或SSH执行systemctl restart lsws,等待10秒后访问子域名测试即可。
残留问题排查
如果修复后仍有加载异常,检查两个配置项:
- 确认项目
.env文件中HOST值为127.0.0.1、PORT值为3000,不要配置为0.0.0.0或公网IP,同时确认3000端口没有被服务器上其他服务占用 - 本地执行
curl http://127.0.0.1:3000,如果能正常返回AdonisJS首页内容,说明Node服务运行正常,问题出在Web服务器转发规则,重新检查rewrite配置即可。
内容的提问来源于stack exchange,提问作者marcelo.delta
相关产品推荐
相关产品推荐

