Как запустить узел 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 для этого, но есть некоторые различия, так как система намного сложнее и часто приводит к некоторым проблемам.