Phusion Passenger:启动 Web 应用程序时出错 - 使用 Plesk nginx 部署 Probot 应用程序 (NodeJS)

Phusion Passenger: Error starting web application - Deploying Probot app (NodeJS) with Plesk nginx

我正在尝试使用 NodeJS 扩展 1.3.6-117GitHub 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.


到目前为止我测试过的东西

#!/usr/bin/env node

const { Probot } = require('Probot')

// @ts-ignore
if (typeof(PhusionPassenger) !== 'undefined') {
    //@ts-ignore
    PhusionPassenger.configure({ autoInstall: false });
}

Probot.run(process.argv)

开始提问

是我的应用失败了还是乘客无法绑定应用的端口?

是否有更详细的日志或启用详细输出的选项?

提前致谢!

经过长时间的研究,我自己弄明白了。发布我的解决方案以防有人遇到同样的问题。

  1. 正在设置passenger log level。您可以将 passenger_log_level 7 放入您的 nginx 配置中 /etc/nginx/conf.d/phusion-passenger.conf (对于 Plesk)

  2. 我将应用程序作为独立的乘客服务器启动,并获得了实际的应用程序 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

  1. 使用自定义 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