systemd service
在 Ubuntu 上,通过 systemd
注册一个服务(如 Node.js 的 serve
服务)需要执行以下步骤:
安装
serve
: 先确保已经安装了serve
,可以通过以下命令安装:npm install -g serve
创建一个服务单元文件: 在
/etc/systemd/system
目录下创建一个新的服务单元文件。假设我们要创建一个名为my-serve.service
的服务。sudo nano /etc/systemd/system/my-serve.service
配置服务单元文件: 在文件中添加以下内容,配置
serve
服务的运行方式:[Unit] Description=Serve Static Files After=network.target [Service] ExecStart=/usr/bin/serve -s /path/to/your/static/files WorkingDirectory=/path/to/your/static/files Restart=always RestartSec=10 User=www-data Group=www-data Environment=PATH=/usr/bin:/usr/local/bin Environment=NODE_ENV=production [Install] WantedBy=multi-user.target
请根据实际情况替换以下内容:
/usr/bin/serve
:serve
命令的路径,可以使用which serve
命令获取。/path/to/your/static/files
:要服务的静态文件路径。User
和Group
:运行服务的用户和组,建议使用www-data
或其他非 root 用户。
刷新
systemd
配置: 保存并关闭文件后,刷新systemd
配置以应用新的服务单元文件:sudo systemctl daemon-reload
启动并启用服务: 启动服务并设置开机自启:
sudo systemctl start my-serve.service sudo systemctl enable my-serve.service
检查服务状态: 检查服务状态以确保它运行正常:
sudo systemctl status my-serve.service
如果服务未能启动,可以查看日志了解更多信息:
journalctl -u my-serve.service
示例
假设我们有一个静态文件目录 /var/www/my-static-site
,使用 serve
提供服务。我们创建的服务单元文件内容如下:
[Unit]
Description=Serve Static Files
After=network.target
[Service]
ExecStart=/usr/local/bin/serve -s /var/www/my-static-site
WorkingDirectory=/var/www/my-static-site
Restart=always
RestartSec=10
User=www-data
Group=www-data
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
完成上述步骤后,您的 serve
服务应该能够在系统启动时自动运行,并在失败时自动重启。