2017-03-19 11 views
0

システム起動時にMongodbを実行するためにSystemdユニットファイルを作成しました。また、mongodbの起動後、起動時にノードアプリケーションを実行するためのsystemdサービスを作成しました。 mongodbのサービスは正常に動作しますが、何らかの理由でNodeアプリケーションのサービスが実行しようとしたときに、「MongoError:最初の接続時にサーバー[localhost:27017]に接続できませんでした」というエラーが表示されます。 $systemctl start mongodbを使用してmongodbサービスを開始し、$/usr/bin/node /node_app_slot/server.jsを使用してノードアプリケーションを起動すると正常に動作しているようです。だから、問題は自分のノードサーバの私のsystemdユニットファイルにあるようです。ノードサーバのSystemdサービスがMongoDBに接続できません

[Unit] 
Wants=network.target mongodb.service 
After=network.target mongodb.service 

[Service] 
ExecStart=/usr/bin/node /node_app_slot/server.js 

[Install] 
WantedBy=multi-user.target 

イムインテルエジソンでこれをやってhostapdを使用してアクセスポイントモードに設定します

は私が https://gist.github.com/jwilm/5842956

そして、ここでは私のnode_server.serviceあるMongoDBのにsystemdサービスのためにこれを使用していました。 OSはYoctoで、最新のリリースで最新です。

どこが間違っているのかわかりません。誰かが私を正しい方向に導くことができたら、本当に感謝します!

ありがとうございます!

+0

のMongoDBサーバは、実際に着信接続の受け付けを開始するのはしばらく時間がかかる可能性がある場合、私は疑問に思います。あなたはどこかで睡眠を挿入して、例えば10秒後に睡眠を受け入れることができるかどうか確認できますか? – robertklep

+0

mongodbのログを見ましたか? mongodbが接続を受け入れる準備ができている場合は、nodejs要求を確認する必要があります。 – NotBad4U

+0

また、失敗した代わりに接続を再試行することもできます(おそらく指数関数的に接続試行をバックオフすることによって) – nir0s

答えて

0

systemdの構文は正しいですが、network.targetの代わりにnetwork-online.targetを使用します。

MongoDBアプリケーションを起動する前に、5秒のスリープを追加することをお勧めします。これはサーバーの起動時に発生するため、余分な5秒で実際的な違いは生じませんが、問題を解決する可能性があります。

ExecStartPre=/bin/sleep 5 

それはあなたがインターネットからのMongoDB systemdサービスファイルを貼り付け/コピーであることを好奇心であるとき、自分のsystemdサービスファイルでのMongoDB船。 OSバージョン、システムバージョン、MongoDBバージョンについては言及していませんが、付属のバージョンのMongoDBを使用していない場合は、公式のMongoDBシステム構成ファイルを参照することをお勧めします。

関連する問題