Настройка среды разработки Node.js для команды

Данное руководство покажет, как настроить среду разработки Node.js, которая позволяет быстро добавлять новых членов команды в процесс разработки приложений Node.js. Этот метод также можно применить в том случае, если разработчик хочет создать несколько версий приложения одновременно. Этот метод основан на взаимодействии Node.js с Nginx при помощи сокетов Unix вместо портов.

Предположим, у вас есть версии разработки приложения на login.dev.nodeapp.com, а сокеты хранятся в каталоге /tmp  как /tmp/login.dev.nodeapp.com.sock.

Требования

Для выполнения руководства нужны предустановленные Nginx и Node.js. Кроме того, предполагается, что у вас есть доменное имя (например, nodeapp.com), направленное на виртуальный сервер.

Примечание: В настройках домена нужно создать запись CNAME.

Настройка Nginx

Создайте конфигурационный файл Nginx /etc/nginx/sites-available/dev.nodeapp.com и внесите в него следующий код:

server {
listen 80;
server_name ~^(?<login>[a-z]+)\.dev\.nodeapp\.com$;
location / {
proxy_pass http://unix:/tmp/$login.dev.nodeapp.com.sock:$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

Создайте символьную ссылку на каталог sites-enabled и перезапустите Nginx:

ln -nfs /etc/nginx/sites-available/dev.nodeapp.com /etc/nginx/sites-enabled/dev.nodeapp.com
/etc/init.d/nginx restart

Теперь сервер Nginx может принимать запросы пользователей и направлять их к копии приложения разработчика в зависимости от URL-а. К примеру:

http://ivan.dev.nodeapp.com -> /tmp/ivan.dev.nodeapp.com.sock
http://anna.dev.nodeapp.com -> /tmp/anna.dev.nodeapp.com.sock

Изменение приложения Node.js

Примечание: Изменения, рассмотренные в руководстве, применимы к любому серверу Node.js (например, к express)

Измените поведение сервера с прослушивания портов на прослушивание сокетов:

var fs = require('fs');
var http = require('http');
var mask = process.umask(0);
var socket = '/tmp/' + process.env.USER + '.dev.nodeapp.com.sock';
if (fs.existsSync(socket)) {
fs.unlinkSync(socket);
}
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(socket, function() {
if (mask) {
process.umask(mask);
mask = null;
}
});
console.log('Server running at ' + socket);

Запустите приложение (в этом руководстве оно условно называется nodeapp.js) и откройте его по ссылке:

http://yourlogin.dev.nodeapp.com

Примечание: Когда Node.js начнёт прослушивать сокеты, он создаст специальный файл. Но если такой файл уже существует, Node.js не сможет начать их прослушивать. Потому очень важно удалить подобные файлы, созданные ранее.

Затем нужно создать сокет с полным доступом (для Nginx); это нормально на стадии разработки, но не подходит для производства.

Готово! Осталось только добавить разработчиков и создать для них пользователей.

Tags: ,

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