Phusion Passenger: ошибка при запуске веб-приложения - развертывание приложения Probot (NodeJS) с помощью Plesk nginx

Я пытаюсь развернуть GitHub Probot App (приложение NodeJS) на своем веб-сервере, на котором запущен Plesk 18.0.27 U1 с Расширение NodeJS 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;
  • Я отключил php и proxy_mode в Plesk для этого веб-сайта (по умолчанию 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)

Стартовые вопросы

Не работает ли мое приложение или пассажир не может привязать порт приложения?

Есть ли более подробные журналы или возможность включить подробный вывод?

Заранее спасибо!


person dreiekk    schedule 30.05.2020    source источник


Ответы (1)


После долгих исследований я понял это сам. Публикация моего решения на случай, если кто-то столкнется с той же проблемой.

  1. Установка уровня журнала пассажиров. Вы можете указать 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 run. По умолчанию пробное приложение запускается не с node ./lib/index.js, а с 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

person dreiekk    schedule 31.05.2020