Перейти к содержимому

Weinre: установка и настройка

Сегодня озадачился вопросом, как запустить node.js приложение на постоянной основе на CentOS 6 или Windows.
В данном посте речь пойдет о Weinre (WEINspector REmote) - так как наши тестеры очень хотели получить возможность его использовать централизованно.

Главная проблема состоит в том, что Node.js, несмотря на все свои преимущества, не предоставляет "в коробке" какого-либо инструментария для хостинга приложений, потому - надо изобретать свой собственный велосипед 🙂

Данная инструкция будет состоять из двух пунктов: CentOS (по сути, остальные * дистрибутивы будут схожи) и Windows.

CentOS:

Перед тем как начать собственно развертывание node.js приложения (в данном случае Weinre), необходимо установить Development tools (для компиляции):

yum -y groupinstall "Development Tools"

Далее, надо скачать наиболее актуальную версию node.js (Nodejs.org, на данный момент это v0.10.29) и собрать:

cd /usr/src 
wget ://nodejs.org/dist/v0.10.29/node-v0.10.29.tar.gz (надежнее будет склонировать сорцы git clone git://github.com/joyent/node.git)
tar zxf node-v0.10.29.tar.gz 
cd node-v0.10.29.tar.gz 
./configure 
make && make install

После выполнения этой части у нас есть готовая сборка node.js на сервере.
Далее, надо установить сам weinre:

npm -g install weinre

Следующая задача - сделать так, чтобы это счастье не требовало ручного запуска. Тут можно и нужно, по моему мнению, использовать сервисы.

Вот gist, который нужно положить в /etc/init.d/ с именем weinre и "активировать":

chkconfig weinre on 
 service weinre start

Разумеется, юзер от имени которого запускается этот сервис должен уметь писать в log, читать и запускать weinre, писать в /var/lock/subsys.
Теперь, после ребута сервера node.js приложение weinre будет запускаться и слушать входящие подключения на всех ip адресах сервера на порту 3000.

В принципе, на этом можно остановиться. А можно еще немножко поддекорировать, и сделать так, чтобы сервим работал на стандартном 80 (ну, а для тех кто увлечен безопасностью - на 443) порту.

Для этого надо установить :

 yum install nginx

Создать хост (тут зависит от версии nginx):

nano /etc/nginx/conf.d/weinre.conf

В данном файле должен быть следующий контент:

upstream app_cluster_1 {
        server 127.0.0.1:3000;
}

server {
        listen 0.0.0.0:80;
        server_name weinre.local weinre;
        access_log /var/log/nginx/nodetest.log;

        location / {
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header Host $http_host;
          proxy_set_header X-NginX-Proxy true;

          proxy_pass http://app_cluster_1/;
          proxy_redirect off;
        }
}

Что заставит выводит наше приложение по адресам http://weinre.local или http://weinre. И финальный штрих:

 service nginx reload

Данный гайд довольно таки прост и не рассматривает такие нюансы, как перезагрузка node.js приложения по изменению, а так же ротацию лог файлов, однако - это тема для будущих постов
В этой части поста были использованы следующие ресурсы:

Windows:

С Windows все значительно проще... Так как я сам это не делал, я просто оставлю ссылку на блог знаменитого человека, и вообще крутого типа: http://www.hanselman.com/blog/InstallingAndRunningNodejsApplicationsWithinIISOnWindowsAreYouMad.aspx