Хостим свое первое NodeJS-приложение

от автора

Раньше ты был счастливым front-end разработчиком — верстал странички, подключал к ним AngularJS и даже оседлал Gulp. Но истерия вокруг NodeJS не прошла мимо тебя и в один не очень прекрасный день ты решил сделать свой проект на Node. И все шло прекрасно, проект отлично работал по адресу localhost:3000 и это странное сладостное чувство «full stack разработчик» легким перышком щекотало твою душу. До тех пор, пока в твоей голове не возник вопрос о хостинге.
Ведь тебе никто не сказал, что мифический «full stack» должен знать не только front и back, но и уметь настроить сервер, установить нужные пакеты, задеплоить и собрать проект.
То чувство, когда тебя предали… Вытесняя тяжелые мысли ты стал искать статьи в интернете и наткнулся на этот текст.

Статья рассчитана на новичков. Просьба убрать от экрана слабонервных беременных админов.
А теперь серьезно — где захостить свой небольшой проект на NodeJS? Своего сервера (и тем более админа) — у вас нет. Heroku, Nodejitsu и другие варианты — слишком дорого. Решение:

1. Арендуем любой VDS-хостинг (есть даже бесплатные), желательно с шаблоном CentOS 6.

2. Подключаемся к нашему VDS по SSH. Если ваш щедрый провайдер установил ISPmanager, то можно воспользоваться веб Shell-клиентом (в разделе «Инструменты»).

3. Вводим команду yum repolist и убеждаемся, что пакет NodeJS доступен в репозитории EPEL. Если его нет, то добавляем:

rpm -ivh http://epel.mirror.net.in/epel/6/i386/epel-release-6-8.noarch.rpm yum install npm --enablerepo=epel 

4. Чтобы проверить установку, введи команду node и какой-нибудь «hello world»-код

[root@habr ~]# node > console.log("Hello world") Hello world undefined 

Хорошо, установка прошла успешно. Дважды нажмем «Ctrl + C».

5. Теперь давай попробуем запустить не просто скрипт, а веб-приложение. Создай папку (например sample) и загрузи в нее test.js любым удобным способом (vim, git, ISP, FTP) со следующим кодом:

http = require('http'); http.createServer(function (req, res) { 	res.writeHead(200, {'Content-Type': 'text/plain'}); 	res.end('Hello World!'); }).listen(3000); console.log('Server running at port 3000'); 

6. Теперь запустим код используя Node-команду:

[root@habr sample]# node test.js Server running at port 3000 

7. Программа работает на порту 3000. Открой браузер и убедитесь, что по адресу http://IPaddress:3000 ты получаешь нужную страницу. Если страница недоступна, то отключи firewall (Iptables) на сервере:

[root@habr sample]# service iptables stop [root@habr sample]# chkconfig iptables off 

Теперь все должно работать отлично. Однако при каких-либо сбоях, сайт не сможет восстановить работу самостоятельно. Чтобы приложение «пробуждалось» после падения, используй демонизатор forever.

8. Установи пакетный менеджер npm:

wget https://npmjs.org/install.sh sh install.sh 

и сразу же пакет forever:

[root@habr sample]# npm install forever -g 

9. Запустим тестовое приложение с помощью forever

[root@habr sample]# forever start test.js 

Список запущенных через forever приложений можно получить командой forever list. Можно перезапускать и останавливать приложения по их ID:

[root@habr sample]# forever restart 1 [root@habr sample]# forever stop 1 [root@habr sample]# forever stopall [root@habr sample]# forever restartall 

Используй опцию -w для автоматического перезапуска после изменения файлов:

[root@habr sample]# forever start test.js -w 

10. Чтобы приложение работало по адресу site.ru, а не по site.ru:3000 в своем js-файле нужно слушать порт 80

listen(80) 

Если у тебя есть ISPmanager, то скорее всего ты получили VDS с установленным Apache. Отключи его в разделе Система-Службы, чтобы Node могла спокойно слушать 80 порт.

На этом пожалуй все. Тебе еще многое предстоит узнать — о том, насколько безумно отключать iptables, почему плохо запускать приложения из под рута, зачем нужен nginx если node и сам умеет отдавать статику и десятки других очень увлекательных вопросов. Но это всё потом. А сейчас быстрей беги менять свой статус на Facebook — вместо в активном поиске front-end разработчик напиши Full stack web developer.

ссылка на оригинал статьи https://habrahabr.ru/post/281705/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *