守护进程(Daemon) 是一种在后台运行的特殊程序,通常用于执行系统级的任务,如日志记录、网络服务、定时任务等。守护进程不与任何终端关联,因此即使用户注销或关闭终端,守护进程仍然会继续运行。
cron
、syslogd
等。nginx
、apache
。mysql
、mongodb
。syslogd
。cron
。在Linux系统中,可以使用 systemd
或 pm2
来管理Node.js应用的守护进程。
pm2
pm2
是一个非常流行的进程管理工具,适用于Node.js应用。
安装pm2
npm install pm2 -g
启动守护进程
pm2 start app.js --name my-app
查看运行中的应用
pm2 list
停止应用
pm2 stop my-app
重启应用
pm2 restart my-app
systemd
systemd
是Linux系统的初始化系统和服务管理器。
创建服务文件
在 /etc/systemd/system/
目录下创建一个服务文件,例如 myapp.service
:
[Unit]
Description=My Node.js Application
After=network.target
[Service]
ExecStart=/usr/bin/node /path/to/your/app.js
Restart=always
User=yourusername
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
启用并启动服务
sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp
原因:
解决方法:
sudo
提升权限。原因:
解决方法:
假设我们有一个简单的Node.js应用 app.js
:
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(port, () => {
console.log(`App listening at http://localhost:${port}`);
});
使用 pm2
启动守护进程:
pm2 start app.js --name my-app
使用 systemd
启动守护进程:
创建服务文件 /etc/systemd/system/myapp.service
:
[Unit]
Description=My Node.js Application
After=network.target
[Service]
ExecStart=/usr/bin/node /path/to/your/app.js
Restart=always
User=yourusername
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp
通过以上方法,可以有效地管理和运行Node.js应用的守护进程。
领取专属 10元无门槛券
手把手带您无忧上云