Окружающая среда: CentOS 8, Node.js, цифровая капля океана
Моя установка Systemd запускает приложение узла с помощью следующей команды. Работает как положено.
$ sudo systemctl start myapp
Файл 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
Файл 2: /root/start-myapp.sh
#!/bin/sh
/usr/bin/node /srv/myapp/app.js
Однако, когда я не использую Systemd, я обычно запускаю свое приложение с помощью Node Package Manager с помощью команды npm start
. Я бы предпочел, чтобы модуль Systemd также запускал приложение с npm start
.
К сожалению, это вызвало ошибку, когда я изменил app.js
к npm start
в /root/start-myapp.sh
,
/usr/bin/node /srv/myapp/npm start
Я сделал еще одну попытку, переключив путь с node
к npm
но возникла та же ошибка.
/usr/bin/npm /srv/myapp/npm start
Вопрос: Как получить файл модуля Systemd для запуска приложения с помощью команды npm start
?
Я запускаю аналогичную установку в Debian, и мой сервис выглядит так:
...
[Service]
Environment=NODE_PORT=3000
Type=simple
User=www-data
Restart=on-failure
WorkingDirectory=/var/www/<your-code-directory>
ExecStart=npm start
...
Надеюсь это поможет!