СоХабр закрыт.

С 13.05.2019 изменения постов больше не отслеживаются, и новые посты не сохраняются.

H Установка и запуск node.js на VDS (Debian) в фоновом режиме (sid) в черновиках Из песочницы

image


Итак, недавно мне довелось познакомиться с node.js. Хочу рассмотреть как можно установить и запустить node.js на Debian в фоновом режиме.

Я приобрел недорогой VDS (Virtual Dedicated Server) и без проблем установил на него node.js, без лишней «воды» сразу приступаем к делу.

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

Устанавливаем node.js
apt-get install python g++ make
cd /usr/src
mkdir node_js
cd $_
wget http://nodejs.org/dist/node-latest.tar.gz
tar -xf node-latest.tar.gz
cd node-v*
./configure --prefix=/opt/nodejs
make
make install


После установки создаем тестовый файл нашего сервера (server.js):
var http = require('http');
http.createServer(function (request, response) {
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.end('Node.js its work');
}).listen(8888);
console.log('Server running');



Внимание: для примера, я расположил файл server.js в папке с самим node.js (/opt/nodejs/bin/server.js).

Запуск сервера:
/opt/nodejs/bin/node server.js


Ошибиться тут очень тяжело, поэтому у Вас все должно сработать. Проверить сервер можно зайдя по адресу к примеру ваш_айпи: порт
Например: 127.0.0.1:8888

Однако теперь, если мы закроем консоль наш сервер перестанет работать. Чтобы этого не было, необходимо запустить его в фоновом режиме (режиме sid).

Я видел много споров и вариантов решения данной проблемы, но сам себя могу отнести к новичкам в использовании unix систем, поэтому я просто прочитал споры на эту тему и выбрал для себя более-менее подходящий вариант:

Запуск сервера node.js в фоновом режиме:
nohup /opt/nodejs/bin/node /opt/nodejs/bin/server.js > /dev/null 2>&1 & 

В ответ получим номер (например 5817) нашей команды. Все проверяем сервер, он запущен в фоновом режиме

Подробнее про nohup:
Утилита эта принадлежит пакету coreutils, а задача её сводится к тому, чтобы запустить какую-то программу независимо от шелла, перенаправив стандартный ввод на /dev/null, а стандартный вывод — в nohup.out. Эта утилита нам поможет держать процесс node.js в фоновом режиме (напоминает службу в windows).

Проверим, что у нас есть по node.js
ps aux | grep node


Там можно будет увидеть все нужные нам запущенные программы, у каждой есть свой номер

Удалить программу сервера node.js
kill 5817


Внимание: данный способ писался под ОС Debian, под другие *nix системы принцип будет тот же, а вот команды скорее всего другие!

комментарии (3)

0
farcaller ,  

Адекватных вариантов для запуска демонов в линусках так много, а вы нашли самый неподходящий для этой задачи. Попробуйте глянуть на runit или supervisord, они максимально просты в освоении.

0
nepster09 ,  

Вариант, но тут рассматривается самый простой и примитивный пример. На форумах я натыкался на горы вопросов «где найти хостинг с поддержкой node.js», «почему такие большие цены на хостинги с поддержкой node.js» и др. Вот собственно пост для самых самых новичков, которые только узнали про существования node.js.

Я не советую и не агитирую использование nohup, я показываю начальный этап. Как вариант следующих шаг обучения может быть runit или supervisord.

0
JIghtuse ,   * (был изменён)

Охо-хо.

Во-первых, если у вас jessie/sid (у меня первый), то установка делается следующим образом:

$ sudo aptitude install nodejs
$ nodejs --version
v0.10.26
$

Во-вторых, make install — не слишком здравый способ установки, в Debian есть checkinstall.
С Hello World ошибиться действительно сложно, было бы странно, если бы он не работал.

Пост рекомендую спрятать или хотя бы повешать плашку Tutorial.