Как запустить приложение Node.js в качестве службы systemd? - PullRequest
0 голосов
/ 12 февраля 2019

Итак, у меня есть приложение node.js, которое я пытаюсь развернуть и запустить как службу systemd.

Вот файл .service:

[Unit]
Description=My app

[Service]
ExecStart=/usr/local/bin/node /var/www/html/schema.js
Restart=always
User=root
Group=nogroup
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/var/www/html

[Install]
WantedBy=multi-user.target

К сожалению, он просто не работает .... Я получаю сообщение об ошибке:

Feb 12 09:56:49 myswerth systemd[1]: Started my-app app.
-- Subject: Unit my-app.service has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit my-app.service has finished starting up.
-- 
-- The start-up result is done.
Feb 12 09:56:49 my-server systemd[23765]: Failed at step GROUP spawning /usr/local/bin/node: No such process
-- Subject: Process /usr/local/bin/node could not be executed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- The process /usr/local/bin/node could not be executed and failed.
-- 
-- The error number returned by this process is 3.
Feb 12 09:56:49 myswerth systemd[1]: my-app.service: main process exited, code=exited, status=216/GROUP
Feb 12 09:56:49 myswerth systemd[1]: Unit my-app.service entered failed state.
Feb 12 09:56:49 myswerth systemd[1]: my-app.service failed.
Feb 12 09:56:49 myswerth systemd[1]: my-app.service holdoff time over, scheduling restart.
Feb 12 09:56:49 myswerth systemd[1]: Stopped My app app.
-- Subject: Unit my-app.service has finished shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit my-app.service has finished shutting down.

I 'Я не совсем уверен, почему это вызывает эту ошибку.Я попытался получить доступ к файлу вручную и могу подтвердить, что он находится в /usr/local/bin/node, и, кроме того, я могу открыть узел, запустив его (что я могу?), Поэтому я понятия не имею, почему он не может выполнить?Я также проверил разрешения на выполнение.Все группы пользователей могут выполнять, так что я .... Я в растерянности здесь ...

1 Ответ

0 голосов
/ 12 февраля 2019

Убедитесь, что node находится в пути, запустив which node

Попробуйте следующее:

в вашем файле schema.js добавьте следующую строку вверху

#!/usr/bin/env node

это устранит необходимость указывать узел в ExecStart

Также убедитесь, что

chmod +x /var/www/html/schema.js

Дополнительные опции, которые стоит рассмотреть при добавлении в определение Сервиса:

PIDFile=/tmp/your-app-name.pid
KillSignal=SIGQUIT
WorkingDirectory=/var/www/html/

Попробуйте исправить, чтобы использовать:

Group=root
...