2016-09-12 11 views
5

私のリモートマシンからnodectlを使ってnode.jsスクリプトを自動的に実行する必要があります。Node.jsスクリプトがsystemctlで起動できません

私はすでに.serviceファイルを作成し、それを/etc/systemd/system/に入れました。まさにこのエラーはについては何

● 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. 

:(systemctl status laporanの出力)を以下のように、それはエラーを返し

[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 

しかし、私はサービスを開始しようとするたび:ここ.serviceファイルですか?何か不足していますか?

答えて

7

ノードアプリケーションを起動する方法はありません。

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