Ваш подход в порядке, и Nginx / Phusion Passeger по умолчанию работает в режиме production
.
Я еще не пробовал запускать приложения Node, но сделал это для Python. Я предполагаю, что для узла это работает так же. Однако мне не нужно было указывать passenger_app_type
и passenger_startup_file
, поскольку Phusion Passenger использует настройки приложения Python по умолчанию, такие как:
passenger_app_type wsgi;
passenger_startup_file passenger_wsgi.py;
passenger_wsgi.py
или в вашем случае app.js
является точкой входа в приложение, поэтому она должна быть создана в папке приложения, в вашем случае: /var/www/myapp/web
В этом файле вам необходимо импортировать ваше фактическое приложение Node. Поэтому оставьте файл конфигурации таким, какой он есть, но убедитесь, что в app.js
вы импортируете и запустите приложение Node. Имя приложения wsgi должно быть «application», поэтому в моем случае (Python app) passenger_wsgi.py
содержит только одну строку:
from app import MyApp as application
Возможно, ваш app.js
уже ваше приложение Node, поэтому вам не нужно импортировать ваше приложение туда, это зависит от того, как вы его настроили ...
Вы можете просмотреть журнал ошибок в nginx расположение по умолчанию /var/log/nginx/error.log
, но увидеть содержимое, которое вам, вероятно, нужно использовать:
sudo vi /var/log/nginx/error.log
Откройте файл и очистите его или пометьте последнюю строку «START NEW LOG», чтобы вы знали, где начинается новый журнал, когда вы в следующий раз откроете журнал для просмотреть это. Перезагрузите сервер с помощью:
$ sudo service nginx restart
Затем go в своем браузере и откройте страницу: http://www.yourdomain.com, затем go вернитесь на свой сервер и просмотрите ошибку Nginx log.
Что вы видите в журнале? Иногда полезно, чтобы ваш Node-скрипт или файл точки входа (приложение. js) распечатывали некоторую информацию, например переменные окружения и т. Д. c, чтобы убедиться, что она использует правильные значения и что все настроено так, как вы ожидаете. Так что для Python я бы сделал в app.py
или прямо в passenger_wsgi.py
:
import sys
import os
def application(environ, start_response):
start_response("200 OK", [("Content-Type", "text/plain")])
ret = ["%s: %s\n" % (key, value)
for key, value in environ.items()]
ret.append('sys.version: {}\n'.format(sys.version))
ret.append('sys.executable: {}\n'.format(sys.executable))
ret.append('sys.path: {}\n'.format(sys.path))
return ret
Но вам нужно перевести его на JavaScript или TypeScript, поскольку ваше приложение является приложением Node. Поэтому в следующий раз, когда вы откроете свое приложение в браузере, вы увидите напечатанные параметры среды и системы. Затем вам нужно сравнить его с тем, что вы видите, когда запускаете приложение локально на сервере в терминале (не используя браузер и URL). Надеюсь, это поможет