Laufen Sie vom 10gen-Repository oder vom Standard-Debian / Ubuntu-Repo? Ich empfehle die Verwendung des offiziellen 10gen-Repository.
Überprüfen Sie diesen Link - [10gen MongoDB How-To Install unter Ubuntu:] http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/ . Es ist am besten, die vorherige Mongodb-Installation vor dieser Änderung zu deinstallieren. Dazu müssen Sie auch Ihre Repository-Quelle (in /etc/apt/source.list) ändern. Dies wird jedoch auch im obigen Link beschrieben. Ich empfehle die Verwendung von upstart über sysvinit und die Verarbeitung wird in der Anleitung beschrieben.
Bei der Einrichtung von 10gen Ubuntu befindet sich die Konfigurationsdatei in /etc/mongodb.conf.
Es gibt verschiedene Möglichkeiten, wie Sie einen separaten Mongod-Prozess ausführen können. Eine Möglichkeit besteht darin, ihn einfach von der CLI aus auszuführen.
sudo -u mongodb mongod --dbpath /var/tmp/mongotest --logpath /var/tmp/mongotest_log --port 3001 &
welches produzieren wird (mit '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
und Sie können über den cli -> mongod --port 3001 verbinden
Eine andere Möglichkeit ist das Erstellen einer Kopie von /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
Ich habe den Datenbankpfad (in dem die Mongodb-Dateien gespeichert sind) von / var / lib / mongodb in / var / lib / mongodbnew geändert. Der Protokollpfad wurde von mongodb.log in mongodbnew.log geändert, und der Port wurde von der Standardeinstellung 27017 auf 27018 geändert (Sie müssen auch das # entfernen, um die Zeile auskommentieren zu können).
Ich habe auch die oberste Zeile geändert, um den neuen Namen dieser Konfigurationsdatei wiederzugeben.
Sie müssen auch das Datenverzeichnis erstellen, da es nicht vorhanden ist. Ohne dieses Verzeichnis wird der Mongod-Prozess nicht gestartet und es wird sichergestellt, dass der Eigentümer und die Gruppe Mongodb sind.
sudo mkdir /var/lib/mongodbnew
sudo chown -R mongodb:mongodb mongodbnew/
Erstellen und ändern Sie außerdem die Berechtigungen Ihrer Protokolldatei.
sudo touch /var/log/mongodb/mongodbnew.log && sudo chown mongodb:mongodb /var/log/mongodb/mongodbnew.log
Geben Sie Folgendes ein, um Ihren neuen Mongod-Prozess (im Hintergrund) über die CLI zu starten
sudo -u mongodb /usr/bin/mongod --config /etc/mongodbnew.conf &
die folgendes auf den Bildschirm senden -
"Alle Ausgaben gehen an: /var/log/mongodb/mongodbnew.log"
Überprüfen Sie, ob die Mongod-Prozesse mit "ps" ausgeführt werden -
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
Führen Sie die Mongo-Shell aus, um zu überprüfen, ob Sie eine Verbindung herstellen können.
$ mongo --port 27018
MongoDB shell version: 2.0.5
connecting to: 127.0.0.1:27018/test
>
Mit lsof sollten Sie jetzt Ihre beiden Mongod-Prozesse sehen, den ursprünglichen, der an 27017 gebunden ist, und den neuen, der an 27018 gebunden ist.
$ 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)
Kopieren Sie die ursprüngliche Init-Konfigurationsdatei, um sicherzustellen, dass die beiden Prozesse beim Start ausgeführt werden.
sudo cp /etc/init/mongodb.conf /etc/init/mongodbnew.conf
was zu zwei Dateien führen sollte, wie z.
$ 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
Bearbeiten Sie die neue Datei mongodbnew.conf mit vi oder wie auch immer Sie möchten -
## 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]
auf Runlevel anhalten [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
Skript beenden
Ich habe dies unter Ubuntu 12.04 getestet und es scheint gut zu funktionieren, auch nach einem Neustart. Ich habe es offensichtlich nicht in der Produktion ausgeführt. Entschuldigung, wenn es oben einen Tippfehler gibt, aber es gibt viele Informationen und ich habe möglicherweise etwas verpasst.
Schließlich ist hier ein Link zu Replikatsätzen, der Ihnen helfen könnte, da es Beispiele für das Starten mehrerer Mongod-Instanzen über die CLI gibt - http://www.mongodb.org/display/DOCS/Replica+Set+Tutorial .
Ich bin auf ein Problem mit der obigen Antwort gestoßen, bei dem stop-start-daemon einen neuen Prozess mit demselben Namen nicht mehr als einmal startet. Es gibt jedoch ein
--name
Argument, mit dem Sie die Zeile in Ihrem Startskript so ändern können/etc/init/
, dass sie einen neuen Namen enthält, damit sie beginnt. Etwas wie das: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
In diesem Fall
--name
macht das Argument diese Instanz eindeutig und ermöglicht es ihr, getrennt von anderen Mongod-Instanzen zu starten.quelle
upstart
Skripte finden Sie in/etc/init/
quelle