Linuxとmongodbは初めてです。私はすでにubuntuにmongodbをインストールしていますが、別のポートでもう1つのインスタンスを実行したいと思います。他の質問やフォーラムから理解したように、upstartスクリプトが必要です。 https://stackoverflow.com/questions/7300109/ubuntu-start-upstart-second-instance-of-mongodb
しかし、サーバーでupstartスクリプトを見つけられない、または見つけられません。upstartスクリプトを作成した場合、サービスとして開始するには、どこにそれを見つければよいですか。
または、同じサーバーでポートが異なるmongodbの別のインスタンスを起動するための適切で簡単な方法は他にもありますか?.
10genリポジトリまたはデフォルトのDebian/Ubuntuリポジトリから実行していますか?公式の10genリポジトリを使用することをお勧めします。
このリンクをチェックしてください-[Ubuntuへの10gen MongoDBのインストール方法:] http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/ 。この変更の前に、以前のmongodbインストールをアンインストールすることをお勧めします。これにより、リポジトリソース(/etc/apt/source.list内)の変更も必要になりますが、これについても上記のリンクで詳しく説明しています。 sysvinitではなくupstartを使用することをお勧めします。処理の概要はハウツーに記載されています。
10gen Ubuntuセットアップでは、構成ファイルは/etc/mongodb.confにあります。
別のmongodプロセスを実行する方法はいくつかあります。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
(mongodbファイルが格納されている)dbpathを/ 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 Shellを実行します-
$ 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 。
上記の回答で、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インスタンスとは別に起動できるようにします。
upstart
スクリプトは/etc/init/
にあります