0

我正在尝试将GitHub Probot 应用程序18.0.27 U1(NodeJS 应用程序)部署到我的使用 NodeJS Extension运行 Plesk的网络服务器1.3.6-117。在我的本地机器上运行 probot 应用程序时,该应用程序启动得很好,并且可以通过 localhost 访问。

Plesk 显然使用Phusion Passenger 应用程序服务器来服务 NodeJS 应用程序。
访问已部署的网站时,出现以下错误:

截图:乘客问题定位

并在/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 中禁用了phpproxy_mode (默认情况下,Nginx 代理向 Apache 请求,但乘客仅在 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)

开始问题

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

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

提前致谢!

4

1 回答 1

3

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

  1. 设置乘客日志级别。您可以passenger_log_level 7输入您的 nginx 配置/etc/nginx/conf.d/phusion-passenger.conf(对于 Plesk)

  2. 我将应用程序作为独立的乘客服务器启动,并获得了实际的应用程序标准输出输出。示例: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.jsbut运行probot run ./lib/index.js

  1. 使用自定义乘客应用启动命令。我添加了 nginx 选项passenger_app_start_command "/opt/plesk/node/12/bin/npm start";来设置自定义启动命令以使用启动脚本中probot run定义的命令而不是乘客package.json的默认命令node ./lib/startup.js

我学到了很多关于这些工具的知识,希望这能拯救别人的周末:D

于 2020-05-31T00:02:40.467 回答