在Python Twisted中,您可以使用twistd命令帮助您完成与运行应用程序相关的许多事情(例如,将其守护进程).
如何守护node.js服务器,以便即使在当前会话关闭后它也可以运行?
谢谢你的帮助
Bag*_*ggz 88
永远是你的问题的答案.
$ curl https://npmjs.org/install.sh | sh
$ npm install forever
# Or to install as a terminal command everywhere:
$ npm install -g forever
Run Code Online (Sandbox Code Playgroud)
从命令行使用Forever
$ forever start server.js
Run Code Online (Sandbox Code Playgroud)
使用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();
Run Code Online (Sandbox Code Playgroud)
小智 42
如果您需要您的进程来守护自身,而不是永远中继 - 您可以使用守护进程模块.
$ npm install daemonize2
Run Code Online (Sandbox Code Playgroud)
然后像在示例中一样编写服务器文件:
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]");
}
Run Code Online (Sandbox Code Playgroud)
请注意,这是一种低级别的方法.
Hut*_*tch 18
更新:我更新了包括pm2的最新消息:
对于许多用例,使用systemd服务是管理节点进程的最简单和最合适的方法.对于那些在单个环境中运行大量节点进程或独立运行节点微服务的人来说,pm2是一个功能更全面的工具.
https://github.com/unitech/pm2
pm2 monit或使用进程列表pm2 listpm2 logs
- 行为配置
- 源地图支持
- PaaS兼容
- 观看和重新加载
- 模块系统
- 最大内存重新加载
- 群集模式
- 热重装
- 开发流程
- 启动脚本
- 自动完成
- 部署工作流程
- Keymetrics监控
- API
act*_*cay 17
要使用启动服务systemd,请编写服务文件.
例如, /etc/systemd/system/myservice.service
[Unit]
Description=myservice-description
After=network.target
[Service]
ExecStart=/opt/myservice-location/src/node/server.js --args=here
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
Run Code Online (Sandbox Code Playgroud)
请记住在每次更改.service文件后更新systemd守护程序
$ systemctl daemon-reload
Run Code Online (Sandbox Code Playgroud)
然后使用启动服务,并使服务在重新启动时启动
$ systemctl start myservice
$ systemctl enable myservice
Run Code Online (Sandbox Code Playgroud)
rai*_*ive 12
最简单的方法就是将命令发送到后台.
$ node server.js &
Run Code Online (Sandbox Code Playgroud)
然后你可以在以后杀死进程.我通常会做以下事情:
$ killall node
Run Code Online (Sandbox Code Playgroud)
注意:我正在运行OS X.
你可以试试:
$ nohup node server.js &
Run Code Online (Sandbox Code Playgroud)
它适用于Mac和Linux.
输出将在./nohup.out文件中
但我仍然建议您使用pm2或forever,因为它们很容易用于重新启动,停止和记录.
| 归档时间: |
|
| 查看次数: |
73061 次 |
| 最近记录: |