2016年答案:几乎每个 Linux 发行版都附带了 systemd,这意味着Forever、monit、PM2 等不再需要 - 您的操作系统已经处理这些任务.
Make a myapp.service
文件(显然,将“myapp”替换为您的应用程序名称):
[Unit]
Description=My app
[Service]
ExecStart=/var/www/myapp/app.js
Restart=always
User=nobody
# Note Debian/Ubuntu uses 'nogroup', RHEL/Fedora uses 'nobody'
Group=nogroup
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/var/www/myapp
[Install]
WantedBy=multi-user.target
如果您是 Unix 新手,请注意: /var/www/myapp/app.js
应该有#!/usr/bin/env node
在第一行并打开可执行模式chmod +x myapp.js
.
将您的服务文件复制到/etc/systemd/system
folder.
告诉 systemd 有关新服务的信息systemctl daemon-reload
.
开始它systemctl start myapp
.
使其能够在启动时运行systemctl enable myapp
.
查看日志journalctl -u myapp
这是取自我们如何在 Linux 2018 版上部署节点应用程序 https://certsimple.com/blog/deploy-node-on-linux,其中还包括生成 AWS/DigitalOcean/Azure CloudConfig 来构建 Linux/节点服务器(包括.service
file).