如何将node.js服务器作为守护进程启动?
在这种情况下,你应该将额外的参数添加到ExecStart=
属性的服务文件中。例如,假设你的服务器需要使用端口号作为参数,你可以按照下面的方式进行配置:
[Unit]
Description=myservice-description
After=network.target
[Service]
ExecStart=/opt/myservice-location/src/node/server.js --port=8080
Restart=always
User=me
Group=group
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/opt/myservice-location
[Install]
WantedBy=multi-user.target
在ExecStart=
属性中,添加了--port=8080
作为服务器启动的额外参数。你可以根据你的需求添加任何额外的参数。记得在修改myservice.service
文件后更新服务管理器守护进程。
$ systemctl daemon-reload
然后,启动服务并将其设置为开机自启动。
$ systemctl start myservice $ systemctl enable myservice
这样,你的Node.js服务器将以守护进程的方式启动,并使用指定的额外参数进行配置。
如何将Node.js服务器作为守护进程启动?
如果您需要使进程自行守护,而不依赖于 forever,您可以使用 daemonize 模块。
首先,安装 daemonize2 模块:
$ npm install daemonize2
然后,按照以下示例编写您的服务器文件:
var daemon = require("daemonize2").setup({ main: "app.js", name: "sampleapp", pidfile: "sampleapp.pid" }); switch (process.argv[2]) { case "start": daemon.start(); break; case "stop": daemon.stop(); break; default: console.log("Usage: [start|stop]"); }
需要注意的是,这是一种较低级的方法。
在 app.js 文件中应该放置什么内容?在我的情况下,它立即退出。
在重新启动时会发生什么?
case 'restart': daemon.on('stopped', () => { daemon.start(); }); daemon.stop(); break;
以上是解决该问题的方法。
如何将node.js服务器作为守护进程启动?
问题的原因是用户想要将node.js服务器作为守护进程启动,以便在计算机重启后自动重新启动服务器。
解决方法是使用Forever工具。用户可以通过以下步骤安装Forever:
1. 打开终端并执行以下命令:
$ curl https://npmjs.org/install.sh | sh
2. 安装Forever:
$ npm install forever
或者如果想要在全局范围内使用Forever的命令,可以执行以下命令:
$ npm install -g forever
使用Forever的方法有两种:
1. 通过命令行使用Forever:
$ forever start server.js
2. 在Node.js中使用Forever的实例:
var forever = require('forever'); var child = new forever.Forever('your-filename.js', { max: 3, silent: true, args: [] }); child.on('exit', this.callback); child.start();
需要注意的是,如果想要在计算机重启后仍然自动启动服务器,需要将`forever start server.js`添加到启动脚本(例如`rc.local`)中。
另外,一些用户建议使用pm2工具代替Forever。他们认为pm2在负载均衡方面表现更好。以下是使用pm2启动服务器的示例命令:
pm2 start app.js -i 0 --name "myapp"
以上就是如何将node.js服务器作为守护进程启动的解决方法。希望对你有帮助!