我爲我的項目主要使用node.js,我使用nodemon
進行開發,使用forever
進行生產。Node.js在永久和連接的虛擬主機/ 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.js
和bootstrap.js
啓動我定義的虛擬主機應用程序。
這樣一來我有每個虛擬主機在偵聽3000
我的問題它自己的端口和虛擬主機現在是,永遠監控的bootstrap.js,這有結果聽,如果有任何虛擬主機的失敗對於任何永遠的原因會重新啓動bootstra.js,這會導致其他虛擬主機不必要的重啓。
我的問題是在我的情況下最好的辦法是什麼?
我雖然代替具有一個bootstrap.js文件到具有這樣的結構:
admin.js
front.js
api.js
apps/
admin/
front/
api/
並使用forever start
那些根js文件中的每一個,在這種情況下,我將不被使用的虛擬主機但我相信鬼魂是某種方式,我需要他們。
不過,我覺得,在情況下,我滴連接的虛擬主機使用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的爲我的靜態內容而不是節點,這對節點來說是不必要的開銷。
您認爲如何?我是否正確或者你可以更好地向我推薦一些東西?
謝謝!
yes以某種方式我回答了我自己的問題,我只需要一些確認,我並不真正瞭解子進程fork並感謝分享,但正如您所說,在多個節點應用程序之間共享相同的http服務器isn'做正確的最佳方式?還有一些類型的替代品我期望聽到的將是像nginx vs varnish或類似的東西,我只是說,爲了更清楚我做這個問題的原因:)感謝您付出努力回答:) – panosru 2012-03-21 23:16:31