2017-10-06 6 views
0

Ubuntu 16.04 VPSに最新のノードv8.6がインストールされています。 ノードapp.jsはvar/www/back-endにあります。Ubuntu Nodejsシステム障害サービス

今私はsystemdにサービスとしてそれを実行しようとしていますが、それは失敗します。

他の質問で
Process: 8583 ExecStart=/usr/bin/nodejs /var/www/back-end/app.js (code=exited, status=1/FAILURE) 

私はノードの実行可能ファイルは、おそらく間違っているのパスについて読むが、私はnodejsた」で確認'そしてそれは'/usr/bin/nodejs 'を返してくれました。私もvar/www /バックエンドのアクセス許可をチェックし、正しく管理者に設定されています。

別の質問では、apt-getは競合によってnodejsと呼ばれ、シンボリックリンクが作成されるべきだと私は読んだが、私は確信していなかった。私はノードの最新のバージョンが必要なことに注意する必要があります。そのため、ダウングレードはオプションではありません。

何が間違っている可能性がありますか?または、私はこれを引き起こしている知っているより良いエラーを見つけることができるいくつかのログファイルがありますか?

これは私の.serviceファイルです:あなたはまた、「didnの

cd /var/www/back-end && PATH=/usr/bin:/usr/local/bin NODE_ENV=production PORT=3000 /usr/bin/nodejs /var/www/back-end/app.js 

:あなたはadminユーザーとしてCLIから実行したときに、コマンドが正常に実行されることをテストについては言及しなかった

[Unit] 
Description=Node_API 
After=mongodb.service 

[Service] 
ExecStart=/usr/bin/nodejs /var/www/back-end/app.js 
Restart=always 
RestartSec=5 
StandardOutput=syslog 
StandardError=syslog 
SyslogIdentifier=nodeapi 
User=admin 
Group=admin 
Environment=PATH=/usr/bin:/usr/local/bin 
Environment=NODE_ENV=production PORT=3000 
WorkingDirectory=/var/www/back-end 

[Install] 
WantedBy=muti-user.target 

答えて

2

/var /と/ wwwの親の方向に関するパーミッションをチェックしているだけで、スクリプトそのものです。また、adminユーザーにexecute権限を許可する必要があります(詳細はhereを参照)。

最後に、出力結果がでしたが、終了したので、スクリプトに診断を追加して、なぜ起動していないのかを理解する必要があります。あなたの設定によれば、スクリプトの出力をsyslogに送りました。そこにログを探してください。スクリプトが開始されるとすぐにconsole.log()を追加して、どのステップで死に至るかを確認するためにさらに追加し続けることができます。

また、入力ミスはWantedBy=muti-user.targetです。それは "multi-user.target"でなければなりません。

systemd-analyze verify /path/to/your/file.serviceを使用して、ファイルの構文の正当性をチェックすることもできます。

+0

これは非常に役に立ちました。アプリが実際に開始されたことに気付かず、間違った方向に完全に見えました。それはスクリプトそのものの間違いであることが判明しました。 –