MongoDB вручную готовится к выскочке, но не работает

647
huggie

Я на Ubuntu 14.04.1 LTS.

$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.04.1 LTS Release: 14.04 Codename: trusty 

Вместо использования предоставляемой системой MongoDB (2.4) я хочу использовать 2.6, поэтому я скачал исполняемый файл MongoDB и просто поместил его в нужные мне места. Тогда я в основном скопировал скрипт upstart с пакетом 2.4:

description "MongoDB"  start on runlevel [2345] stop on runlevel [!2345]  limit nofile 64000 64000  kill timeout 300 # wait 300s between SIGTERM and SIGKILL.  pre-start script mkdir -p /data/db/ end script  script ENABLE_MONGODB="yes" if [ -f /etc/default/mongodb ]; then . /etc/default/mongodb fi if [ "x$ENABLE_MONGODB" = "xyes" ]; then exec start-stop-daemon --start --quiet --chuid mongodb \ --exec /usr/local/bin/mongod -- --config /etc/mongodb.conf fi end script 

Когда я запускаю вручную так:

sudo /usr/local/bin/mongod --config /etc/mongodb.conf 

Работает просто отлично.

Но когда я использую sudo start mongodbпроцесс, вероятно, умирает, поскольку я не мог видеть это в ps -ef. В журнале выскочек мало что сказано (/var/log/upstart/mongodb.log):

warning: bind_ip of 0.0.0.0 is unnecessary; listens on all ips by default 

В чем может быть проблема?

0

1 ответ на вопрос

1
JakeGould

You say you did this:

Instead of using the system provided MongoDB which is 2.4, I want to use 2.6 so I downloaded MongoDB executable and just put it in the places I wanted.

That’s really not the supported and recommended way you should be installing MongoDB on your system. The MongoDB team is very well aware that official Linux repositories don’t always keep up to date with latest releases of many packages, so they provide their own PPA for MongoDB as explained here. I would recommend removing whatever you just installed and follow these steps instead.

First, import the public key used by the package management system:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 

Then create a sources list file for MongoDB:

echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list 

Now run apt-get with update to refresh the sources list:

sudo apt-get update 

And finally, install MongoDB directly from the repository like this:

sudo apt-get install -y mongodb-org 
О, это здорово! Я буду использовать это вместо Ты хоть представляешь, как проверить, как этот выскочка mongodb умирает от меня? huggie 9 лет назад 0
@ Huggie Не знаю, почему это так умирает от вас, но, честно говоря, именно поэтому вы не должны так «изобретать велосипед». Скорее всего, вы создали очень специфическую проблему для вашей системы, которую нелегко диагностировать. И, как профессиональный системный администратор Linux, иногда сценарии upstart / init.d могут отлаживаться в хороший день. Лучше просто записать это, чтобы испытать и двигаться вперед. JakeGould 9 лет назад 1
Спасибо за помощь. Я приму ваш ответ через две минуты, так как система не позволит это сделать прямо сейчас. huggie 9 лет назад 1
@ Huggie Спасибо! Также я снова заглянул в сценарий выскочки и увидел это. Посмотрите на этот кусок кода: `mongod - --config`. Что это за лишнее `--` там? Это не в вашей ручной версии команды запуска. Несмотря на это, официальная версия MongoDB из репозитория определенно будет работать, поэтому просто разместите эту заметку в качестве FYI. JakeGould 9 лет назад 0
Psst! Обратите внимание, что команда, запускаемая и получающая `--`, является` start-stop-daemon`. Подумайте, как можно предотвратить интерпретацию `--config` как опции командой _that_. Мне просто нужно было разобраться с этим на http://unix.stackexchange.com/a/187540/5132. JdeBP 9 лет назад 0