2016-11-29 2 views
0

私はexpress-generatorで生成するnodejsサーバを持っています。 私はサーバを稼働させるためにsystemdサービスを作成しようとしています。システムdノードjエクスプレスジェネレータを作成

[Unit] 
Description=Node.js Example Server  

[Service] 
ExecStart=/usr/bin/node /opt/nodeserver/server.js 
Restart=always 
StandardOutput=syslog    
StandardError=syslog     
SyslogIdentifier=nodejs-example 
Environment=NODE_ENV=production PORT=1337 

[Install] 
WantedBy=multi-user.target 

コマンドnode server.jsを使用してサーバーを実行できないため、サービスを実行できません。 私はサーバーを実行できる唯一の方法:npm server.js。 サービスはノードではなくnpmコマンドでサーバを実行するように指示できますか?

+0

[私の答え](http://stackoverflow.com/questions/40861258/create-systemd-nodejs-express-generator/40863613#40863613)が役に立ちましたか?コメントはありますか? – rsp

答えて

0

Systemdに問題があることがあります。可能であれば、SysVまたはUpstartのinitスクリプトを書く方が簡単です。私はそれらの答えのいくつかの問題について説明します:[1][2]。アプリケーションに

  1. 変更作業ディレクトリを
  2. 例えば

startコマンドを実行します:

は今、何を行うことができますすることだろうが、そのスタートアップスクリプトを自分で書くことです

#!/bin/sh 
cd /your/application/path 
npm start 

(またはnpm server.jsまたはあなたのコマンドがinstea npm startのD)

また、あなたがそれを必要とする場合は、正しいPATHを設定することが有用であり得る:

#!/bin/sh 
PATH="/opt/node/bin:$PATH" 
export PATH 
cd /your/application/path 
npm start 

(あなたnodenpmがインストールされている場所/opt/node/binがどこにあるか)

あなたがそのようなを保存した場合例えば、スクリプト/opt/nodeserver/server.shその後、あなたが使用することができるはず:

ExecStart=/bin/sh /opt/nodeserver/server.sh 

あなたにsystemdスクリプトで(ここでは問題を引き起こすにsystemdでより多くの落とし穴がある場合を除きます)。

関連する問題