Назад | Перейти на главную страницу

Настройка mongodb через выскочку - как передать параметры?

Я установил 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 опция (если она не указана в файле конфигурации) необходима для перехода в фоновый режим и не будет убита при выходе из системы и завершении работы оболочки.