2015-04-25 114 views
1

我正在创建http项目,我想知道什么是非服务器文件的最佳方式?主服务器不会改变太多,而是写入server.js文件中的所有代码,我想将它的应用程序逻辑写入其他文件中。我们每次更新这些文件时都不要重新启动服务器,我们该怎么办?我正在考虑每5分钟做一次interval刷新文件,但是有没有更好的方法来做到这一点?在不重新启动服务器的情况下运行新的/更新的应用程序文件

例(server.js):

var http = require('http'); 

// Load the initial app 
require('./app/main.js'); 

// Reload the app every 5 minutes 
setInterval(function(){ 
    delete require.cache[require.resolve('./app/main.js')]; 
    require('./app/main.js'); 
}, 300000); 

// Listen and handle requests 
var server = http.createServer(requestHandler); 
server.listen(8000); 

所以,这就是我如何重新加载无需重新启动服务器应用程序的想法,但有没有更好的办法?

+0

通常情况下,你不能用新文件替换正在运行的模块文件。通常有状态,使用中的模块句柄等等......我想可以写入一个重新加载,但是无论如何,在重新加载期间你必须暂停服务器的活动,因为它将处于部分初始化状态,直到重新加载完成。如果所有这些定制开发实际上都值得避免偶尔的服务器重启,我会感到非常惊讶。它确实会使开发复杂化。 – jfriend00

+0

如果您想要实现超高可用性,那么通常的做法是使用负载均衡器和多个服务器进程。从负载平衡器中取出一个服务器进程,对其进行更新,重新启动,将其重新放回负载平衡器中,然后执行另一个。 – jfriend00

回答

1

如果您正在讨论重新开发,您应该查看nodemon。 https://github.com/remy/nodemon

+0

如果可能,我正在寻找开发和生产 –

+0

生产是一个完整的其他故事,取决于您使用哪种策略来发布新版本。通常我没有看到人们使用重新启动代码,而是进行新的部署。 – Transcendence

+0

我们目前不使用节点,而且我们正在学习,因此我不确定“新部署”对节点的真正含义。我们目前使用PHP,其运行和工作方式有所不同。 –

相关问题