使用 systemd 管理 Next.js 应用

前端项目里的 systemd 管理 nextjs 项目

可以,systemd 非常适合管理 Next.js 应用,尤其是在服务器上作为后台服务运行时。你可以创建一个 systemd 服务单元(Unit) 来管理 Next.js 应用的启动、停止、自动重启等。


步骤:使用 systemd 管理 Next.js 应用

1. 创建 systemd 服务文件

/etc/systemd/system/ 目录下创建一个 .service 文件,例如:

sudo nano /etc/systemd/system/nextjs.service

然后填入以下内容:

[Unit]
Description=Next.js Application
After=network.target

[Service]
User=your_user           # 运行 Next.js 的用户(建议非 root)
Group=your_user
WorkingDirectory=/path/to/your/nextjs/app  # Next.js 项目目录
ExecStart=/usr/bin/npm run start           # 运行命令
Restart=always                             # 进程崩溃自动重启
Environment=NODE_ENV=production            # 设置环境变量
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=nextjs

[Install]
WantedBy=multi-user.target

2. 重新加载 systemd

sudo systemctl daemon-reload

3. 启动 Next.js 应用

sudo systemctl start nextjs

4. 设置开机自启

sudo systemctl enable nextjs

5. 查看运行状态

sudo systemctl status nextjs

6. 停止、重启服务

sudo systemctl stop nextjs
sudo systemctl restart nextjs

其他说明

  • 如果 Next.js 运行在 PM2

    可以用 ExecStart=/usr/bin/pm2 start nextjs 代替 npm run start,并在 /etc/systemd/system/nextjs.service 里适配 pm2 的管理方式。

  • 如果 Next.js 监听特定端口(如 3000),需要防火墙放行

  sudo ufw allow 3000
  • 日志查看 sh journalctl -u nextjs -f

这样,你的 Next.js 应用就可以由 systemd 进行管理,并支持开机自启、自动重启等功能。