我所遵循的所有Node.js教程都将所有内容放在一个文件中。它包括导入库,路由,数据库连接和启动服务器,比如express.js:
var app = require('express');
app.get('/somePath', blah blah);
app.listen(...);
现在,我有一个Nginx负载均衡器后面的4个节点服务器。然后,在所有四台服务器上更新源代码变得非常困难。
有没有办法将源代码保留在服务器创建代码之外,以便我可以将源代码作为一个包部署在服务器上?服务器创建代码不应该知道有关路由或数据库连接的任何信息。它应该只是监听文件夹中的更改,并且当新模块元文件出现时,它开始托管该Web应用程序。
就像我们如何部署由Maven打包为战争并部署到Tomcat的webapp的Java代码一样,因为Tomcat实例化不是源代码的一部分。在node.js中,似乎服务器也是源代码的一部分。
目前,包装不是我关注的问题。我关心的是如何分离逻辑以及如何将所有服务器指向一个源代码库?
答案 0 :(得分:0)
http
这样的Node.js模块(Express使用`http,因为它可能会调用或依赖本机V8 / C ++函数/库。
您也可以使用Docker并将Docker容器视为WAR。
答案 1 :(得分:0)
以下是我想到的解决方法:
将服务器保存在文件夹下," server_clusters"并将不同的节点服务器放在那里,即:node1.js,node2.js,node3.js,node4.js等(我知道,在现实世界中,集群将是不同的VM或CPU,但就目前而言,我只是想要将服务器创建逻辑与源代码分开)。这些文件将包含以下代码段:
var constants = require(' ./ prop');
var appBasePath = constants.APP_BASE_DIR;
var appFilePath = appBasePath +" / main&#34 ;;
var app = require(appFilePath);
//每个服务器只有不同的端口号,而其他所有服务器都保持不变 app.listen(8080,function(req,res){ console.log("服务器启动"); });
创建一个属性文件,该文件具有源代码的路径并导出对象。那么简单。这是上面代码
在计算机上的任何位置创建源目录项目,并在上面的常量文件中更新其主目录。源代码目录可以导出一个登陆文件,该文件将为要启动的服务器提供快速应用程序:
var express = require('表达');
var app = express();
module.exports = app;
有了这个,有多个服务器指向相同的源代码。
希望这有助于那些面临同样问题的人。 其他方法也很受欢迎。