Node.js服务器自动启动

Node.js服务器自动启动,node.js,Node.js,我是Node.js新手,但愿意认真尝试一下。来自PHP的东西似乎有点混乱,因为没有index.PHP,但是需要执行一个启动脚本来启动服务器npm start 这在生产中是如何做到的?是否有预运行脚本?如果服务器因某种原因关闭,如何在客户端没有连接问题的情况下自动恢复?它会自动为域工作,还是意味着有人必须访问domain.com:3000 Ar我的想法是错误的吗?如果服务器因某种原因关闭,您可以使用一些模块自动重新启动服务器。其中一些永远是pm2。你所问的问题非常广泛。让我来说明它是如何工作的 来

我是Node.js新手,但愿意认真尝试一下。来自PHP的东西似乎有点混乱,因为没有index.PHP,但是需要执行一个启动脚本来启动服务器
npm start

这在生产中是如何做到的?是否有预运行脚本?如果服务器因某种原因关闭,如何在客户端没有连接问题的情况下自动恢复?它会自动为域工作,还是意味着有人必须访问domain.com:3000


Ar我的想法是错误的吗?

如果服务器因某种原因关闭,您可以使用一些模块自动重新启动服务器。其中一些永远是pm2。

你所问的问题非常广泛。让我来说明它是如何工作的

来自PHP的东西似乎有点混乱,因为没有 php,但需要执行一个启动脚本来启动 服务器npm启动

因此,在node.js中,我们有一个文件,通过该文件启动节点服务器,并决定需要什么。大多数人使用app.js、server.js、index.js

当您运行
npm start
时,这意味着您将在文件写入的文件夹
start:node app.js
中拥有
package.json
。当你运行npm start时,它会着火

这在生产中是如何做到的?是否有预运行脚本

NODE\u ENV=production npm start
,您可以像这样在节点代码中访问它
process.env.NODE\u env
。通过这种方式,您可以为每个环境添加dev、qa标签

我会推荐你去看看

因此,你可以看看

您可以管理崩溃线程,然后打开另一个线程,因为节点是单线程。 此外,您还可以通过此命令管理node.js所有类型的错误。这将使node.js捕获所有异常和错误
过程论

这是否也意味着有人必须访问domain.com:3000

不,你可以选择任何你想要的港口。不管怎样。我建议在node.js应用程序前面使用nginx。但是,为了减少兼容性,可以使用简单的节点应用程序

例如:-

var http = require('http');
var port = 3000 ; // take any 80, 8080

http.createServer(function (request, response) {
    response.writeHead(200, {
        'Content-Type': 'text/plain',
        'Access-Control-Allow-Origin' : '*'
    });
    response.end('Hello World\n');
}).listen(port);

希望有帮助。

在回答第一个问题时,您还可以选择如何运行节点应用程序。我建议你开始使用一些软件包,比如 实际上是为了这个目的而建造的

在回答第二个问题时,如果您愿意,可以将其用于使用某些容器系统的生产部署。这里有一些选择,还有更多

您的自动重启问题可以由您的容器管理器或用于部署的包来解决


若要重定向来自80或443端口的所有请求(您希望重定向到应用程序),可以尝试使用nginx

在不详细说明的情况下,您必须非常清楚以下几点:

您的节点web进程将死亡。是的,这是正确的,当有一个未捕获的异常时,它可能会死亡。因此,故障切换需要多个进程,为此有许多技术和库。其中包括:

  • web服务器后面的多个节点进程负载平衡(最常用的是nginx)
  • 节点进程的托管群集()
  • 或者(在我看来,这对生产不太好)一些进程监视器,如果节点web进程死亡,它将重新启动节点web进程:

    否节点将死亡的点是错误的。是的,如果我们不处理未捕获的异常,它将死亡,并且它们可以通过node.js中的
    process
    进行完全管理,但是使用process.on不是一个好的做法,因为我们应该解决这个错误。但是,如果你擅长它,你可以管理错误。若我们谈论服务器,每台服务器总有一天都会死掉。若你们捕捉到了所有的异常,那个么进程也不会死掉。这是我们用来制作工艺模具的方法。Process we can teamed,node.js的当前线程进程。感谢您的回答以及对PM2的参考+1.
    var http = require('http');
    var port = 3000 ; // take any 80, 8080
    
    http.createServer(function (request, response) {
        response.writeHead(200, {
            'Content-Type': 'text/plain',
            'Access-Control-Allow-Origin' : '*'
        });
        response.end('Hello World\n');
    }).listen(port);