myN*_*unt 0 linux node.js systemd npm
环境: CentOS 8、Node.js、Digital Ocean Droplet
我的 Systemd 设置使用以下命令启动节点应用程序。它按预期工作。
$ sudo systemctl start myapp
Run Code Online (Sandbox Code Playgroud)
文件 1: /etc/systemd/system/myapp.service
[Unit]
Description = My App
After = network.target
[Service]
ExecStart = /root/start-myapp.sh
Restart=on-failure
[Install]
WantedBy = multi-user.target
Run Code Online (Sandbox Code Playgroud)
文件2: /root/start-myapp.sh
#!/bin/sh
/usr/bin/node /srv/myapp/app.js
Run Code Online (Sandbox Code Playgroud)
但是,当我不使用 Systemd 时,我通常会使用命令npm start. 我宁愿让 Systemd 单元也用npm start.
不幸的是扔了一个错误,当我换app.js到npm start的/root/start-myapp.sh,
/usr/bin/node /srv/myapp/npm start
Run Code Online (Sandbox Code Playgroud)
我通过从切换路径作了一次尝试node来npm,但它产生的同样的错误。
/usr/bin/npm /srv/myapp/npm start
Run Code Online (Sandbox Code Playgroud)
问题:如何让我的 Systemd 单元文件使用命令启动我的应用程序npm start?
小智 6
我在 Debian 上运行类似的设置,我的服务如下所示:
...
[Service]
Environment=NODE_PORT=3000
Type=simple
User=www-data
Restart=on-failure
WorkingDirectory=/var/www/<your-code-directory>
ExecStart=npm start
...
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
5340 次 |
| 最近记录: |