簡體   English   中英

Node.js 腳本無法使用 systemctl 啟動

[英]Node.js script failed to start with systemctl

我需要使用 systemctl 從我的遠程機器自動運行我的 node.js 腳本。

我已經制作了一個 .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.

這個錯誤究竟是什么? 我錯過了什么嗎?

我認為這不是您啟動節點應用程序的方式。 您只是在此處指定 JavaScript 文件:

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

如果節點在路徑中,您還需要指定節點可執行文件,如下所示。

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

如果 node 不在可執行路徑上,則必須提供它:

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

為了清楚說明您放置節點可執行路徑錯誤的錯誤。 要獲得正確的路徑,您可以使用

$ which node // /usr/bin/node

在我的情況下它不同我得到/usr/bin/node作為路徑所以在你ExecStart 從命令行復制節點路徑

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM