Node.js в работе с навсегда и подключить альтернативу vhosts / nginx? - PullRequest
3 голосов
/ 18 марта 2012

Я использую в основном node.js для своих проектов и nodemon для разработки и forever для производства.

Я обычно делю свои проекты на vhosts, чтобы моя структура могла выглядеть примерно так:

bootstrap.js
apps/
  admin/
  front/
  api/

и мои bootstrap.js выглядят так:

// Get Express
var express = require('express');

// Create express server
var app = express.createServer();

// Configure Development Environment
app.configure('development', function() {
  //app.use(express.vhost('localhost', require('./apps/front')));
  app.use(express.vhost('localhost', require('./apps/admin')));
  app.use(express.vhost('localhost', require('./apps/api')));
  app.listen(3000);
});

// Configure Production Environment
app.configure('production', function() {
  app.use(express.vhost('example.com', require('./apps/front')));
  app.use(express.vhost('admin.example.com', require('./apps/admin')));
  app.use(express.vhost('api.example.com', require('./apps/api')));
  app.listen(80);
});

Когда я хочу запустить свои приложения, я использую forever start bootstrap.js, а bootstrap.js запускает мои определенные приложения vhost.

Таким образом, каждый vhost прослушивает свой собственный порт, а vhost прослушивает 3000.

Теперь моя проблема заключается в том, что boottrap.js этого монитора всегда и это приводит кvhost не работает по любой причине, навсегда перезапустит bootstra.js, что приведет к ненужному перезапуску других vhosts.

Мой вопрос: как лучше всего поступить в моем случае?

Я вместо этого имел один файл bootstrap.js, чтобы иметь такую ​​структуру:

admin.js
front.js
api.js
apps/
  admin/
  front/
  api/

и использовать forever start для каждого из этих корневых js-файлов, в данном случае яя не буду использовать vhost, но я считаю, что vhosts - это то, что так или иначе мне нужно.

Мне кажется, что в случае, если я уроню vhosts connect, чтобы использовать nginx и иметь следующую конфигурацию для каждого приложения:1027 *

server
{
    listen 80;
    server_name admin.example.com;

    access_log /var/log/nginx/admin.example.com.access.log;

    error_log /var/log/nginx/admin.example.com.error.log;

    root /home/panosru/domains/example.com/apps/admin/public;

    location ~* ^.+\.(svg|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|html|htm)$ {
        root /home/panosru/domains/example.com/apps/admin/public;
    }

    location / {
        proxy_pass http://admin.example.com:3001;
    }
}

Я вижу, что с nginx у меня есть еще несколько преимуществ, таких как использование nginx для обслуживания моего статического содержимого вместо узла, что будет ненужными издержками для узла.

Что высчитать?Я прав, или вы могли бы предложить мне что-то лучше вместо этого?

Спасибо!

1 Ответ

1 голос
/ 21 марта 2012

Я думаю, что вы в основном ответили на свой вопрос разумным ответом, но вы ищете несколько альтернатив ...

Я не знаком с функциональностью vhost в экспрессе. Тем не менее, я думаю, что вы напрашиваетесь на неприятности, запустив эффективно 3 разных приложения с 3 разными потребностями в масштабируемости в одном процессе Node.js.

Вы по-прежнему можете использовать решение Express vhosts, используя child_process.fork для запуска нескольких экземпляров Express (все из которых могут по-прежнему использовать один и тот же http-сервер).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...