Я установил MongoDB на виртуальную машину Ubuntu Server внутри VMware, следуя этим инструкциям: http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/. Все работает нормально, и я могу получить доступ к MongoDB через обычный порт 27017
./mongo 172.16.150.131:27017
Теперь я хочу создать набор фиктивных реплик и еще один экземпляр db для тестирования моего приложения. Я привык выполнять следующие команды на четырех отдельных терминалах на моем локальном компьютере:
./mongod --port 27027 --dbpath ~/mongodb/solo
./mongod --port 27028 --dbpath ~/mongodb/rs0-0 --replSet rs0
./mongod --port 27029 --dbpath ~/mongodb/rs0-1 --replSet rs0
./mongod --port 27030 --dbpath ~/mongodb/rs0-2 --replSet rs0
Как я могу это сделать в виртуальной машине? Я подключаюсь к своей виртуальной машине по SSH, и после выполнения команд и закрытия терминалов (в OS X) они все еще должны работать.
Я попытался:
service mongodb --port 27027 --dbpath ~/mongodb/solo
service mongodb ~/mongodb/solo/mongodb.conf
Но оба получают следующую ошибку (в разных контекстах):
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mongodb --config=~/mongodb/solo/mongodb.conf
The script you are attempting to invoke has been converted to an Upstart
job, but --config=~/mongodb/solo/mongodb.conf is not supported for Upstart jobs.
Как мне заставить это работать? Впервые работаю с Ubuntu в качестве сервера. Спасибо.
Контекст - цель состоит в том, чтобы создать свою базу данных в виртуальной машине, чтобы создать некоторую задержку при тестировании моего приложения, но в основном я могу просто приостановить виртуальную машину вместо копирования и вставки сценариев в разные терминалы для настройки MongoDB всякий раз, когда я перезагружаю свой ноутбук.
Когда вы устанавливаете с помощью пакета Ubuntu, он создает задание выскочки, и это то, что вы запускаете / останавливаете с помощью службы в системе Ubuntu. Конечно, запускается только один mongod
и по умолчанию имеет одну конфигурацию. Эту выскочку можно найти здесь (по умолчанию):
/etc/init/mongodb.conf
Это не следует путать с /etc/mongodb.conf
это расположение по умолчанию для файла конфигурации для службы MongoDB.
Если вы хотите иметь возможность запускать / останавливать дополнительные экземпляры автоматически или хотите, чтобы выскочка управляла ими, вам просто нужно создать дублирующиеся задания, которые указывают на разные файлы конфигурации (или иметь разные параметры, указанные в самом файле задания). Начните с просмотра файла в init, о котором я упоминал выше, а затем посмотрите здесь дополнительную информацию о развертывании собственных заданий выскочки:
http://upstart.ubuntu.com/cookbook/
Другой вариант, конечно, - просто вызвать дополнительные mongod
экземпляры напрямую. Например:
/usr/bin/mongod --fork --config=~/mongodb/solo/mongodb.conf
В --fork
опция (если она не указана в файле конфигурации) необходима для перехода в фоновый режим и не будет убита при выходе из системы и завершении работы оболочки.