mongodb用のubuntuのアップスタートスクリプト


11

Linuxとmongodbは初めてです。私はすでにubuntuにmongodbをインストールしていますが、別のポートでもう1つのインスタンスを実行したいと思います。他の質問やフォーラムからわかったように、upstartスクリプトが必要です。 /programming/7300109/ubuntu-start-upstart-second-instance-of-mongodb

しかし、サーバーでupstartスクリプトを見つけられない、または見つけられません。upstartスクリプトを作成した場合、サービスとして開始するためにどこに見つければよいですか。

または、同じサーバーでポートが異なるmongodbの別のインスタンスを起動するための適切で簡単な方法は他にもありますか?

回答:


8

10genリポジトリまたはデフォルトのDebian / Ubuntuリポジトリから実行していますか?公式の10genリポジトリを使用することをお勧めします。

このリンクをチェックしてください-[Ubuntuへの10gen MongoDB How-To Install:] http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/。この変更の前に以前のmongodbインストールをアンインストールすることをお勧めします。これにより、リポジトリソース(/etc/apt/source.list内)の変更も必要になりますが、これについても上記のリンクで詳しく説明しています。sysvinitではなくupstartを使用することをお勧めします。処理の概要はハウツーに記載されています。

10gen Ubuntuセットアップでは、構成ファイルは/etc/mongodb.confにあります。

別のmongodプロセスを実行する方法はいくつかあります。1つは単にcliから実行することです。

sudo -u mongodb mongod --dbpath /var/tmp/mongotest --logpath /var/tmp/mongotest_log --port 3001 &

( 'ps'を使用して)生成されます

mongodb   2210  3.3  1.5 259012 15300 pts/0    Dl   11:48   0:00 mongod --dbpath /var/tmp/mongotest --logpath /var/tmp/mongotest_log --port 3001

そして、cli-> mongod --port 3001を介して接続できます

別の方法は/etc/mongodb.confのコピーを作成することです-

sudo cp /etc/mongodb.conf /etc/mongodbnew.conf and editing the following lines in the new file - 


# mongodbnew.conf

dbpath=/var/lib/mongodbnew

#where to log
logpath=/var/log/mongodb/mongodbnew.log

port = 27018

dbpath(mongodbファイルが保存されている場所)を/ var / lib / mongodbから/ var / lib / mongodbnewに変更しました。ログのパスがmongodb.logからmongodbnew.logに変更され、ポートがデフォルトの27017から27018に変更されました(行のコメントを解除するには、#も削除する必要があります)。

また、この構成ファイルの新しい名前を反映するように先頭行を変更しました。

データディレクトリも存在しないため作成する必要があります。このディレクトリがないと、mongodプロセスが開始されず、所有者とグループがmongodbであることを確認します-

sudo mkdir /var/lib/mongodbnew
sudo chown -R mongodb:mongodb mongodbnew/

さらに、ログファイルの権限を作成および変更します-

sudo touch /var/log/mongodb/mongodbnew.log && sudo chown mongodb:mongodb /var/log/mongodb/mongodbnew.log

CLIから新しいバックグラウンドでmongodプロセスを開始するには、次のように入力します。

sudo -u mongodb /usr/bin/mongod --config /etc/mongodbnew.conf &

以下を画面に送信します-

「すべての出力は/var/log/mongodb/mongodbnew.logに送られます」

mongodプロセスが「ps」で実行されていることを確認します-

sysadmin@ubuntu:/var/lib$ ps auwx | grep mongo | egrep -v 'grep|sudo'
mongodb    921 11.3  1.5 627672 15608 ?        Ssl  10:56   4:30 /usr/bin/mongod --config /etc/mongodb.conf
mongodb   2137  7.8  1.5 627672 15880 pts/0    Sl   11:36   0:00 /usr/bin/mongod --config /etc/mongodbnew.conf

接続できることを確認するには、Mongoシェルを実行します-

$ mongo --port 27018
MongoDB shell version: 2.0.5
connecting to: 127.0.0.1:27018/test
> 

lsofを使用すると、2つのmongodプロセスが表示されます。元のプロセスは27017にバインドされ、新しいプロセスは27018にバインドされています。

$ sudo lsof -i :27017
COMMAND PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mongod  921 mongodb    6u  IPv4   9066      0t0  TCP *:27017 (LISTEN)
sysadmin@ubuntu:/var/lib$ sudo lsof -i :27018
COMMAND  PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mongod  2137 mongodb    6r  IPv4  11923      0t0  TCP *:27018 (LISTEN)

2つのプロセスが起動時に実行されるようにするには、元のinit構成ファイルをコピーします-

sudo cp /etc/init/mongodb.conf /etc/init/mongodbnew.conf

その結果、次のような2つのファイルが生成されます-

$ ls -lart /etc/init/mongo*
-rw-r--r-- 1 root root 536 May  8 15:51 /etc/init/mongodb.conf
-rw-r--r-- 1 root root 554 Jun 11 11:43 /etc/init/mongodbnew.conf

viを使用して新しいmongodbnew.confファイルを編集するか、次のようにしてください-


## Ubuntu upstart file at /etc/init/mongodbnew.conf

limit nofile 20000 20000

kill timeout 300 # wait 300s between SIGTERM and SIGKILL.

pre-start script
    mkdir -p /var/lib/mongodbnew/
    mkdir -p /var/log/mongodbnew/
end script

start on runlevel [2345]

ランレベルで停止[06]

script
  ENABLE_MONGODB="yes"
  if [ -f /etc/default/mongodbnew ]; then . /etc/default/mongodbnew; fi
  if [ "x$ENABLE_MONGODB" = "xyes" ]; then exec start-stop-daemon --start --quiet --chuid mongodb --exec                /usr/bin/mongod -- --config /etc/mongodbnew.conf; fi

終了スクリプト

私はこれをUbuntu 12.04でテストしましたが、再起動後も含めてうまく機能するようです。明らかに本番環境では実行していません。上記にタイプミスがあるが、情報が多く、見落としている可能性がある場合は、お詫びします。

最後に、cliから複数のmongodインスタンスを開始する例を示しているので役立つレプリカセットのリンクを示します-http ://www.mongodb.org/display/DOCS/Replica+Set+Tutorial



2

上記の回答で、stop-start-daemonが同じ名前の新しいプロセスを2回以上起動しないという問題に遭遇しました。ただし、--name起動スクリプトの行を変更し/etc/init/て新しい名前を含めることができるようにする引数があります。このようなもの:

if [ "x$ENABLE_MONGODB" = "xyes" ]; then exec start-stop-daemon --start --quiet --chuid mongodb --name mongodb-shard2 --exec /usr/bin/mongod -- --config /etc/mongodb-shard2.conf; fi

この場合、--name引数によってこのインスタンスは一意になり、他のmongodインスタンスとは別に起動できます。


0

upstart スクリプトは /etc/init/


thnxは、mongodb.confがありますが、それはインスタンスを実行しているデフォルトのデフォルトのconfファイルである

たぶん構成のために/ etc / default / mongodbをソースし、start-stop-daemonを使用してmongodbを開始するmongodb.confを確認した

このファイルをコピーし、別のポートでmongodbを起動するようにコマンドを変更できます。ログファイルなどを変更できるように、おそらく完全に新しい構成ファイルを指定することをお勧めします
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.