Phusion Passenger:启动 Web 应用程序时出错 - 使用 Plesk nginx 部署 Probot 应用程序 (NodeJS)
Phusion Passenger: Error starting web application - Deploying Probot app (NodeJS) with Plesk nginx
我正在尝试使用 NodeJS 扩展 1.3.6-117
将 GitHub Probot App(NodeJS 应用程序)部署到我的网络服务器 运行 Plesk 18.0.27 U1
。当 运行 我的本地计算机上的 probot 应用程序时,该应用程序启动正常并且可以通过本地主机访问。
Plesk 显然正在使用 Phusion Passenger application server 来为 NodeJS 应用程序提供服务。
访问已部署的网站时,出现以下错误:
Screenshot: Passenger problem location
并且在 /var/log/nginx/error.log
中:
[ E 2020-05-30 10:06:31.7393 21506/Th age/Cor/App/Implementation.cpp:221 ]: Could not spawn process for application /var/www/vhosts/example.org/node_root: A timeout occurred while spawning an application process.
Error ID: 5f02dec5
Error details saved to: /tmp/passenger-error-y6AeCv.html
[ E 2020-05-30 10:06:31.7466 21506/T5 age/Cor/Con/CheckoutSession.cpp:276 ]: [Client 1-2] Cannot checkout session because a spawning error occurred. The identifier of the error is 5f02dec5. Please see earlier logs for details about the error.
到目前为止我测试过的东西
- 我增加了在 nginx 中启动应用程序的超时时间
passenger_start_timeout 300;
- 我在 Plesk 中为此网站禁用了 php 和 proxy_mode(Nginx 代理对 Apache 的请求默认,但 passenger 仅在 nginx 上 运行)
- 我写了一个自定义启动脚本来禁用乘客自动安装并将节点 dotenv 文件中的网络服务器端口设置为
PORT="passenger"
#!/usr/bin/env node
const { Probot } = require('Probot')
// @ts-ignore
if (typeof(PhusionPassenger) !== 'undefined') {
//@ts-ignore
PhusionPassenger.configure({ autoInstall: false });
}
Probot.run(process.argv)
开始提问
是我的应用失败了还是乘客无法绑定应用的端口?
是否有更详细的日志或启用详细输出的选项?
提前致谢!
经过长时间的研究,我自己弄明白了。发布我的解决方案以防有人遇到同样的问题。
正在设置passenger log level。您可以将 passenger_log_level 7
放入您的 nginx 配置中 /etc/nginx/conf.d/phusion-passenger.conf
(对于 Plesk)
我将应用程序作为独立的乘客服务器启动,并获得了实际的应用程序 stdout 输出。示例:cd
在您的节点应用程序根文件夹和 运行 passenger start --startup-file lib/startup.js --nodejs /opt/plesk/node/12/bin/node --log-level 3 --app-type node
.
此时我发现在我上面提到的启动脚本中找不到模块Probot
。因此,我更深入地研究了 probot 应用程序的实际启动方式,并偶然发现了 probot run
命令。默认情况下,probot 应用程序不是 运行 和 node ./lib/index.js
,而是 probot run ./lib/index.js
。
- 使用自定义 passenger app start command。我添加了 nginx 选项
passenger_app_start_command "/opt/plesk/node/12/bin/npm start";
来设置自定义启动命令以使用 package.json
启动脚本中定义的 probot run
命令,而不是 passenger[=43= 中的默认 node ./lib/startup.js
]
我学到了很多关于这些工具的知识,希望这会节省一些人的周末 :D
我正在尝试使用 NodeJS 扩展 1.3.6-117
将 GitHub Probot App(NodeJS 应用程序)部署到我的网络服务器 运行 Plesk 18.0.27 U1
。当 运行 我的本地计算机上的 probot 应用程序时,该应用程序启动正常并且可以通过本地主机访问。
Plesk 显然正在使用 Phusion Passenger application server 来为 NodeJS 应用程序提供服务。
访问已部署的网站时,出现以下错误:
Screenshot: Passenger problem location
并且在 /var/log/nginx/error.log
中:
[ E 2020-05-30 10:06:31.7393 21506/Th age/Cor/App/Implementation.cpp:221 ]: Could not spawn process for application /var/www/vhosts/example.org/node_root: A timeout occurred while spawning an application process.
Error ID: 5f02dec5
Error details saved to: /tmp/passenger-error-y6AeCv.html
[ E 2020-05-30 10:06:31.7466 21506/T5 age/Cor/Con/CheckoutSession.cpp:276 ]: [Client 1-2] Cannot checkout session because a spawning error occurred. The identifier of the error is 5f02dec5. Please see earlier logs for details about the error.
到目前为止我测试过的东西
- 我增加了在 nginx 中启动应用程序的超时时间
passenger_start_timeout 300;
- 我在 Plesk 中为此网站禁用了 php 和 proxy_mode(Nginx 代理对 Apache 的请求默认,但 passenger 仅在 nginx 上 运行)
- 我写了一个自定义启动脚本来禁用乘客自动安装并将节点 dotenv 文件中的网络服务器端口设置为
PORT="passenger"
#!/usr/bin/env node
const { Probot } = require('Probot')
// @ts-ignore
if (typeof(PhusionPassenger) !== 'undefined') {
//@ts-ignore
PhusionPassenger.configure({ autoInstall: false });
}
Probot.run(process.argv)
开始提问
是我的应用失败了还是乘客无法绑定应用的端口?
是否有更详细的日志或启用详细输出的选项?
提前致谢!
经过长时间的研究,我自己弄明白了。发布我的解决方案以防有人遇到同样的问题。
正在设置passenger log level。您可以将
passenger_log_level 7
放入您的 nginx 配置中/etc/nginx/conf.d/phusion-passenger.conf
(对于 Plesk)
我将应用程序作为独立的乘客服务器启动,并获得了实际的应用程序 stdout 输出。示例:
cd
在您的节点应用程序根文件夹和 运行passenger start --startup-file lib/startup.js --nodejs /opt/plesk/node/12/bin/node --log-level 3 --app-type node
.
此时我发现在我上面提到的启动脚本中找不到模块Probot
。因此,我更深入地研究了 probot 应用程序的实际启动方式,并偶然发现了 probot run
命令。默认情况下,probot 应用程序不是 运行 和 node ./lib/index.js
,而是 probot run ./lib/index.js
。
- 使用自定义 passenger app start command。我添加了 nginx 选项
passenger_app_start_command "/opt/plesk/node/12/bin/npm start";
来设置自定义启动命令以使用package.json
启动脚本中定义的probot run
命令,而不是 passenger[=43= 中的默认node ./lib/startup.js
]
我学到了很多关于这些工具的知识,希望这会节省一些人的周末 :D