2016-09-12 4 views
5

Мне нужно запустить мой скрипт node.js автоматически с моей удаленной машины с помощью systemctl.Сценарий Node.js не запускался с systemctl

Я уже сделал файл .service и поместил его в /etc/systemd/system/. Вот файл .Service:

[Unit] 
Description=laporan 

[Service] 
ExecStart=/var/www/laporan/nodeserver/server.js 
Restart=always 
User=nobody 
Group=root 
Environment=PATH=/usr/bin:/usr/local/bin 
Environment=NODE_ENV=production 
WorkingDirectory=/var/www/laporan/nodeserver 

[Install] 
WantedBy=multi-user.target 

Но каждый раз, когда я пытаюсь запустить службу, она возвращает ошибку следующим образом (выход systemctl status laporan):

● laporan.service - laporan 
    Loaded: loaded (/etc/systemd/system/laporan.service; enabled) 
    Active: failed (Result: start-limit) since Mon 2016-09-12 09:15:06 WITA; 11min ago 
    Process: 121690 ExecStart=/var/www/laporan/nodeserver/server.js (code=exited, status=203/EXEC) 
Main PID: 121690 (code=exited, status=203/EXEC) 

Sep 12 09:15:05 kominfomdc systemd[1]: Unit laporan.service entered failed state. 
Sep 12 09:15:06 kominfomdc systemd[1]: laporan.service start request repeated too quickly, refusing to start. 
Sep 12 09:15:06 kominfomdc systemd[1]: Failed to start laporan. 
Sep 12 09:15:06 kominfomdc systemd[1]: Unit laporan.service entered failed state. 

Что именно эта ошибка о? Я что-то упускаю?

ответ

7

Я не думаю, что это то, как вы начинаете приложение-узел. Вы просто указать файл JavaScript здесь:

ExecStart=/var/www/laporan/nodeserver/server.js 

Кроме того, необходимо указать исполняемый файл узла, что-то вроде следующего, если узел находится в пути.

ExecStart= node /var/www/laporan/nodeserver/server.js 

Однако, как вы заметили, вы должны поставить в полный путь к исполняемому файлу:

ExecStart=/usr/local/bin/node /var/www/laporan/nodeserver/server.js 
+0

получить этот вид уведомления: Путь к исполняемому файлу не является абсолютным. мой узел также находится на пути –

+0

Ну, я изменил его на 'ExecStart =/usr/local/bin/node/var/www/laporan/nodeserver/server.js', и он работает как ад. Спасибо за Ваш ответ! –

+2

Обратите внимание, что в некоторых системах узел находится в/usr/bin/node, поэтому проверьте полный путь (например,/usr/bin/node /dir/yourapp.js или/usr/local/bin/node/dir/yourapp.js), чтобы посмотреть, какой из них будет работать для вас. – Youkko

Смежные вопросы