使用 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
进行管理,并支持开机自启、自动重启等功能。