Как запустить узел JS на выделенном сервере?

Я делаю приложение чата и интегрирую его на веб-сайте. Когда я выполняю команду 'node index.js' на локальном сервере, все работает нормально. Но когда я пытаюсь установить узел js на выделенном сервере и пытаюсь выполнить команду nohup node index.js & через ssh, он выдает следующее сообщение.

nohup: игнорирование ввода и добавление вывода в nohup.out

Я следовал методу, указанному на этом сайте, для установки узла js на сервере https://www.a2hosting.com/kb/installable-applications/manual-installations/installing-node-js-on-managed-hosting-accounts

Может кто-то помочь мне, пожалуйста?

1 ответ

Сначала вам нужно правильно установить Node. Я написал об этом учебник: Как получить Node 6.7.0 в Linux (конечно, вы можете использовать более новые версии, просто измените версию в командах).

По сути, это что-то вроде этого - измените версию на ту, которая вам нравится:

# change dir to your home:
cd ~
# download the source:
curl -O https://nodejs.org/dist/v6.1.0/node-v6.1.0.tar.gz
# extract the archive:
tar xzvf node-v6.1.0.tar.gz
# go into the extracted dir:
cd node-v6.1.0
# configure for installation:
./configure --prefix=/opt/node-v6.1.0
# build and test:
make && make test
# install:
sudo make install
# make a symlink to that version:
sudo ln -svf /opt/node-v6.1.0 /opt/node

Я рекомендую собирать Node из исходного кода и всегда запускать make test но вы также можете установить бинарный пакет, который работает быстрее - просто убедитесь, что вы понимаете проблемы с путями и строками hashbang, если вы это сделаете - больше информации об этом и другие варианты установки описаны в моем руководстве.

Затем вам нужно убедиться, что ваше приложение запускается при каждом перезапуске сервера. Я рекомендую использовать Upstart, если вы можете.

Используя Upstart, сохраните что-то вроде этого в /etc/init/YOURAPP.conf:

# When to start the service
start on runlevel [2345]

# When to stop the service
stop on runlevel [06]

# If the process quits unexpectadly trigger a respawn
respawn

# Start the process
exec start-stop-daemon --start --chuid node --make-pidfile --pidfile /www/YOURAPP/run/node-upstart.pid --exec /opt/node/bin/node -- /www/YOURAPP/app/app.js >> /www/YOURAPP/log/node-upstart.log 2>&1

Просто измените:

  • YOURAPP на имя вашего собственного приложения
  • /opt/node/bin/node на ваш путь к node
  • /www/YOURAPP/app/app.js на путь вашего приложения Node
  • /www/YOURAPP/run туда, где вы хотите свой файл PID
  • /www/YOURAPP/log туда, где вы хотите ваши логи
  • --chuid node в --chuid OTHERUSER если вы хотите, чтобы он работал от имени другого пользователя, чем node

(не забудьте добавить пользователя с именем из --chuid выше)

С вашим /etc/init/YOURAPP.conf на месте вы можете безопасно перезапустить свой сервер, и ваше приложение все еще работает, вы можете запустить:

start YOURAPP
restart YOURAPP
stop YOURAPP

запускать, перезагружать и останавливать ваше приложение, что также происходит автоматически при загрузке или завершении работы системы.

Для получения дополнительной информации см. Эти ответы о:

Вы также можете использовать systemd для этого, но есть некоторые различия, так как система намного сложнее и часто приводит к некоторым проблемам.

Другие вопросы по тегам