2012-03-17 12 views
3

私は主に私のプロジェクトにnode.jsを使用しています。開発にはnodemon、プロダクションにはforeverを使用します。私の構造は、このようなものかもしれないので プロダクションのNode.jsを永遠に接続し、vhosts/nginxの代わりに接続しますか?

は、私は通常のバーチャルホストに私のプロジェクトを分割:

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.jsbootstrap.jsを使用して、定義されたvhostアプリを起動します。私はそれ自身のポートとのバーチャルホストは、今では永遠のbootstrap.jsを監視し、これが結果として持っている3000

私の問題にリスニングに耳を傾け、それぞれのバーチャルホストを持っているように

のバーチャルホストのいずれかがいずれかのために失敗した場合理由は永遠にbootstra.jsを再起動するので、他の仮想ホストも不必要に再起動します。

私の質問には、私の場合にはどのような方法がありますか?

Iかかわらず、代わりにこのような構造を有すること1つのbootstrap.jsファイルを持つ:

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

を、私はバーチャルホストを使用しない、この場合には、それらの根のjsファイルのそれぞれに対してforever startを使用しかし、私は犯罪者が何らかの形でそれを必要としていると信じています。

私は、その場合には、私はのは、nginxのを使用し、各アプリケーションのための次のような構成を持つようにバーチャルホスト接続ドロップかかわら:

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つのNode.jsプロセスで3つの異なるスケーラビリティが必要な3つの異なるアプリケーションを効果的に実行することで、問題を抱えていると思います。

child_process.forkを使用してexpress vhostsソリューションを使用して、複数のexpressのインスタンスを起動できます(すべて同じhttpサーバーを共有できます)。

+1

はい私は自分の質問に答えましたが、私はちょうどいくつかの確認が必要です、私は子供のプロセスフォークと分かち合ってくれて分かっていませんでしたが、あなたが言うように、正しいことをする最善の方法は?また、私が聞いて期待していたいくつかのタイプのものは、nginx varnishやそれに類するものになるでしょう、私はちょうどその理由を私がその質問をした理由を明らかにするために言っています:)答えに努力を取ってくれてありがとう:) – panosru

関連する問題