Phusion Passenger: Ошибка при запуске веб-приложения - Развертывание приложения Probot (NodeJS) с Plesk nginx - PullRequest
0 голосов
/ 30 мая 2020

Я пытаюсь развернуть приложение GitHub Probot (NodeJS приложение) на своем веб-сервере, на котором запущен Plesk 18.0.27 U1 с расширением NodeJS Extension 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)

Начальные вопросы

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

Есть ли более подробные журналы или опция для включения подробного вывода?

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

1 Ответ

0 голосов
/ 31 мая 2020

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

  1. Установка уровня журнала пассажира . Вы можете указать passenger_log_level 7 в своей nginx конфигурации /etc/nginx/conf.d/phusion-passenger.conf (для Plesk)

  2. Я запустил приложение как автономный пассажирский сервер и получил фактический вывод stdout приложения. Пример: cd в вашем приложении узла root -папка и запустите 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.

Использование настраиваемой команды запуска приложения для пассажиров . Я добавил nginx параметр passenger_app_start_command "/opt/plesk/node/12/bin/npm start";, чтобы настроить пользовательскую команду запуска для использования команды probot run, определенной в сценарии запуска package.json, вместо значения по умолчанию node ./lib/startup.js для пассажира

I узнал много нового об этих инструментах и ​​надеюсь, что это спасет кого-то на выходных: D

...