Node.js 服务器自动启动

Ben*_*Ben 0 node.js

我是 Node.js 新手,但愿意认真尝试。来自 PHP 的事情似乎有点令人困惑,因为没有 index.php,但需要执行启动脚本来启动服务器npm start

这在生产中是如何完成的?有预运行脚本吗?如果服务器由于某种原因关闭怎么办,如何在客户端不出现连接问题的情况下自动恢复它?它会自动适用于该域,还是也意味着有人必须始终访问domain.com:3000?

我是否以错误的方式思考这个问题?

Him*_*rma 5

你所问的问题非常广泛。让我介绍一下它是如何工作的。

来自 PHP 的事情似乎有点令人困惑,因为没有 index.php,但需要执行启动脚本来启动服务器 npm start。

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

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

这在生产中是如何完成的?有预运行脚本吗?

NODE_ENV=production npm start,您可以在节点代码中访问它,如下所示 process.env.NODE_ENV。这样你就可以为每个环境添加 dev,qa 标签。

我会推荐你​​看看

http://pm2.keymetrics.io/

What if the server closes for some reason, how do I get it back up automatically without having connection problems for the clients? 
Run Code Online (Sandbox Code Playgroud)

因此,您可以查看https://nodejs.org/api/cluster.html

您可以管理崩溃线程,然后打开另一个线程,因为节点是单线程。您还可以通过此管理node.js所有类型的错误。这使得node.js捕获所有异常和错误 https://nodejs.org/api/process.html
process.on

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

不,您可以选择任何您想要的港口。80,8080什么的。我建议在 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);
Run Code Online (Sandbox Code Playgroud)

希望这有帮助。