UNIXサーバーにmongodbとphpドライバーをインストールしました。
私の質問は、mongodbが実行されているかどうかをどのように知ることができますか?ステータスを確認する簡単なコマンドラインクエリはありますか?シェルから一度起動すると、シェルを終了しても実行され続けます(これは事実ではないようです)。 mongodb接続を永続的にし、サーバーの再起動時に自動起動するにはどうすればよいですか?
走れる:
-bash-3.2 $ su
パスワード:
[root @ xxx]#cd/var/lib
[root @ xxx]#./mongodb-linux-i686-1.6.5/bin/mongod
./ mongodb-linux-i686-1.6.5/bin/mongod --helpおよび起動オプションのヘルプ
Wed Feb 23 08:06:54 MongoDB starting:pid = 7271 port = 27017 dbpath =/data/db/32-bit**注:MongoDB 32ビットを使用する場合、約2ギガバイトのデータに制限されます
** http://blog.mongodb.org/post/137788967/32-bit-limitations を参照**警告:OpenVZで実行しています。これは壊れていることが知られています!!!
2月23日水曜日08:06:54 dbバージョンv1.6.5、pdfileバージョン4.5
Wed Feb 23 08:06:54 git version:0eb017e9b2828155a67c5612183337b89e12e291
Wed Feb 23 08:06:54 sys info:Linux domU-12-31-39-01-70-B4 2.6.21.7-2.fc8xen#1 SMP Fri
Feb 15 12:39:36 EST 2008 i686 BOOST_LIB_VERSION = 1_37
Wed Feb 23 08:06:54 [initandlisten]ポート27017での接続待機
Wed Feb 23 08:06:54 [websvr]ポート28017でリッスンするWeb管理インターフェイス
別のシェルを開くと、mongodbに接続できます。
-bash-3.2 $ cd/var/lib
-bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
MongoDBシェルバージョン:1.6.5
接続先:テスト
db.foo.find()
{"_id":ObjectId( "4d63d7d3eb95985ab19c8feb")、 "a":1}
ただし、最初のシェルを閉じると接続できません。
-bash-3.2 $ cd/var/lib
-bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
MongoDBシェルバージョン:1.6.5
接続先:テスト
Wed Feb 23 08:25:10 Error:サーバーに接続できませんでした127.0.0.1(anon):1154
exception:接続に失敗しました
次のいずれかで確認してください。
ps -edaf | grep mongo | grep -v grep # "ps" flags may differ on your OS
または
/etc/init.d/mongodb status # for MongoDB version < 2.6
/etc/init.d/mongod status # for MongoDB version >= 2.6
または
service mongod status
mongodが実行されているかどうかを確認します(これを行うには、rootになるか、すべての前にSudo
を付ける必要があります)。 「grep」コマンドも常に別のプロセスとして表示されることに注意してください。
ログファイル/var/log/mongo/mongo.logをチェックして、問題が報告されているかどうかを確認します。
私が見つけます:
ps -ax | grep mongo
より一貫性を保つため。返される値を使用して、実行中のmongodのインスタンスの数を検出できます。
Mongodbが実行されているかどうかをすばやく確認するために、この簡単なncトリックが通知されます。
nc -zvv localhost 27017
上記のコマンドは、localhostのデフォルトポートで実行していることを前提としています。
自動起動するには、 このスレッド をご覧ください。
正しい、シェルを閉じるとMongoDBが停止します。 mongodプロセスに対して--fork
コマンドライン引数を使用してみてください。代わりにデーモンとして実行されます。私はUnixの第一人者ではありませんが、マシンの起動時に自動起動するようにする方法があるはずです。
例えば.
mongod --fork --logpath /var/log/mongodb.log --logappend
Mongoの起動と停止 の完全なドキュメントをご覧ください。
これはうまくいくはずです...
pgrep mongod
Mongodbの現在の実行ステータスを確認するには、Sudo service mongodb status
を使用します
おそらく、開発サーバーを適切にシャットダウンしなかった、または同様の理由によるものと思われます。修正するには、ロックを解除し、サーバーを次のように起動します:Sudo rm /var/lib/mongodb/mongod.lock ; Sudo start mongodb
私はこれがPHP用であることを知っていますが、ここでノードの解決策を探しました。モンゴスキンの使用:
mongodb.admin().ping(function(err) {
if(err === null)
// true - you got a conntion, congratulations
else if(err.message.indexOf('failed to connect') !== -1)
// false - database isn't around
else
// actual error, do something about it
})
他のドライバーを使用すると、接続を試みることができ、失敗した場合は、mongoサーバーがダウンしていることがわかります。 Mongoskinは遅延接続するため、実際に呼び出し(pingなど)を行う必要があります。 PHPの場合、try-to-connectメソッドを使用できます。スクリプトを作成してください!
PHP:
$dbIsRunning = true
try {
$m = new MongoClient('localhost:27017');
} catch($e) {
$dbIsRunning = false
}