как установить mogodb в службе upstart с аутентификацией

Я создал суперпользователя tom в mongodb v2.6.11 с именем пользователя и паролем, и теперь я хочу добавить это в службу запуска ubuntu

по поиску узнал, что мне нужно редактировать ниже файл

так выглядит мой /etc/init/mongod.conf

 pre-start script mkdir -p /var/lib/mongodb/ mkdir -p /var/log/mongodb/ end script start on runlevel [2345] stop on runlevel [06] script ENABLE_MONGOD="yes" CONF=/etc/mongod.conf DAEMON=/usr/bin/mongod DAEMONUSER=${DAEMONUSER:-mongodb} if [ -f /etc/default/mongod ]; then . /etc/default/mongod; fi # Handle NUMA access to CPUs (SERVER-3574) # This verifies the existence of numactl as well as testing that the command works NUMACTL_ARGS="--interleave=all" if which numactl >/dev/null 2>/dev/null && numactl $NUMACTL_ARGS ls / >/dev/null 2>/dev/null then/etc/init/mongod.conf NUMACTL="$(which numactl) -- $NUMACTL_ARGS" DAEMON_OPTS=${DAEMON_OPTS:-"--config $CONF"} else NUMACTL="" DAEMON_OPTS="-- "${DAEMON_OPTS:-"--config $CONF"} fi if [ "x$ENABLE_MONGOD" = "xyes" ] then exec start-stop-daemon --start --chuid $DAEMONUSER --exec $NUMACTL $DAEMON $DAEMON_OPTS fi end script и pre-start script mkdir -p /var/lib/mongodb/ mkdir -p /var/log/mongodb/ end script start on runlevel [2345] stop on runlevel [06] script ENABLE_MONGOD="yes" CONF=/etc/mongod.conf DAEMON=/usr/bin/mongod DAEMONUSER=${DAEMONUSER:-mongodb} if [ -f /etc/default/mongod ]; then . /etc/default/mongod; fi # Handle NUMA access to CPUs (SERVER-3574) # This verifies the existence of numactl as well as testing that the command works NUMACTL_ARGS="--interleave=all" if which numactl >/dev/null 2>/dev/null && numactl $NUMACTL_ARGS ls / >/dev/null 2>/dev/null then/etc/init/mongod.conf NUMACTL="$(which numactl) -- $NUMACTL_ARGS" DAEMON_OPTS=${DAEMON_OPTS:-"--config $CONF"} else NUMACTL="" DAEMON_OPTS="-- "${DAEMON_OPTS:-"--config $CONF"} fi if [ "x$ENABLE_MONGOD" = "xyes" ] then exec start-stop-daemon --start --chuid $DAEMONUSER --exec $NUMACTL $DAEMON $DAEMON_OPTS fi end script и pre-start script mkdir -p /var/lib/mongodb/ mkdir -p /var/log/mongodb/ end script start on runlevel [2345] stop on runlevel [06] script ENABLE_MONGOD="yes" CONF=/etc/mongod.conf DAEMON=/usr/bin/mongod DAEMONUSER=${DAEMONUSER:-mongodb} if [ -f /etc/default/mongod ]; then . /etc/default/mongod; fi # Handle NUMA access to CPUs (SERVER-3574) # This verifies the existence of numactl as well as testing that the command works NUMACTL_ARGS="--interleave=all" if which numactl >/dev/null 2>/dev/null && numactl $NUMACTL_ARGS ls / >/dev/null 2>/dev/null then/etc/init/mongod.conf NUMACTL="$(which numactl) -- $NUMACTL_ARGS" DAEMON_OPTS=${DAEMON_OPTS:-"--config $CONF"} else NUMACTL="" DAEMON_OPTS="-- "${DAEMON_OPTS:-"--config $CONF"} fi if [ "x$ENABLE_MONGOD" = "xyes" ] then exec start-stop-daemon --start --chuid $DAEMONUSER --exec $NUMACTL $DAEMON $DAEMON_OPTS fi end script по pre-start script mkdir -p /var/lib/mongodb/ mkdir -p /var/log/mongodb/ end script start on runlevel [2345] stop on runlevel [06] script ENABLE_MONGOD="yes" CONF=/etc/mongod.conf DAEMON=/usr/bin/mongod DAEMONUSER=${DAEMONUSER:-mongodb} if [ -f /etc/default/mongod ]; then . /etc/default/mongod; fi # Handle NUMA access to CPUs (SERVER-3574) # This verifies the existence of numactl as well as testing that the command works NUMACTL_ARGS="--interleave=all" if which numactl >/dev/null 2>/dev/null && numactl $NUMACTL_ARGS ls / >/dev/null 2>/dev/null then/etc/init/mongod.conf NUMACTL="$(which numactl) -- $NUMACTL_ARGS" DAEMON_OPTS=${DAEMON_OPTS:-"--config $CONF"} else NUMACTL="" DAEMON_OPTS="-- "${DAEMON_OPTS:-"--config $CONF"} fi if [ "x$ENABLE_MONGOD" = "xyes" ] then exec start-stop-daemon --start --chuid $DAEMONUSER --exec $NUMACTL $DAEMON $DAEMON_OPTS fi end script и pre-start script mkdir -p /var/lib/mongodb/ mkdir -p /var/log/mongodb/ end script start on runlevel [2345] stop on runlevel [06] script ENABLE_MONGOD="yes" CONF=/etc/mongod.conf DAEMON=/usr/bin/mongod DAEMONUSER=${DAEMONUSER:-mongodb} if [ -f /etc/default/mongod ]; then . /etc/default/mongod; fi # Handle NUMA access to CPUs (SERVER-3574) # This verifies the existence of numactl as well as testing that the command works NUMACTL_ARGS="--interleave=all" if which numactl >/dev/null 2>/dev/null && numactl $NUMACTL_ARGS ls / >/dev/null 2>/dev/null then/etc/init/mongod.conf NUMACTL="$(which numactl) -- $NUMACTL_ARGS" DAEMON_OPTS=${DAEMON_OPTS:-"--config $CONF"} else NUMACTL="" DAEMON_OPTS="-- "${DAEMON_OPTS:-"--config $CONF"} fi if [ "x$ENABLE_MONGOD" = "xyes" ] then exec start-stop-daemon --start --chuid $DAEMONUSER --exec $NUMACTL $DAEMON $DAEMON_OPTS fi end script 

ATTEMPT 1: с помощью командной строки mongo

 sudo mongod --auth --port 27017 --dbpath /var/lib/mongodb 

но не знаете, что изменить в /etc/init/mongod.conf ?


ATTEMPT 2: с помощью /etc/mongod.conf

  1. Изменения в /etc/mongod.conf

auth = true

port = 27017

  1. $sudo mongod --config /etc/mongod.conf

  2. /var/log/mongodb/mongod.log после команды стрельбы

    2016-01-20T23:58:41.675+0530 ***** SERVER RESTARTED ***** 2016-01-20T23:58:41.677+0530 [initandlisten] MongoDB starting : pid=3168 port=27017 dbpath=/var/lib/mongodb 64-bit host=vijay 2016-01-20T23:58:41.677+0530 [initandlisten] db version v2.6.11 2016-01-20T23:58:41.677+0530 [initandlisten] git version: d00c1735675c457f75a12d530bee85421f0c5548 2016-01-20T23:58:41.677+0530 [initandlisten] build info: Linux build4.ny.cbi.10gen.cc 2.6.32-431.3.1.el6.x86_64 #1 SMP Fri Jan 3 21:39:27 UTC 2014 x86_64 BOOST_LIB_VERSION=1_49 2016-01-20T23:58:41.677+0530 [initandlisten] allocator: tcmalloc 2016-01-20T23:58:41.677+0530 [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1", port: 27017 }, security: { authorization: "enabled" }, storage: { dbPath: "/var/lib/mongodb" }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } } 2016-01-20T23:58:41.812+0530 [initandlisten] journal dir=/var/lib/mongodb/journal 2016-01-20T23:58:41.812+0530 [initandlisten] recover : no journal files present, no recovery needed 2016-01-20T23:58:41.934+0530 [initandlisten] waiting for connections on port 27017 2016-01-20T23:58:47.746+0530 [signalProcessingThread] got signal 2 (Interrupt), will terminate after current cmd ends 2016-01-20T23:58:47.746+0530 [signalProcessingThread] now exiting 2016-01-20T23:58:47.746+0530 [signalProcessingThread] dbexit: 2016-01-20T23:58:47.746+0530 [signalProcessingThread] shutdown: going to close listening sockets... 2016-01-20T23:58:47.746+0530 [signalProcessingThread] closing listening socket: 10 2016-01-20T23:58:47.746+0530 [signalProcessingThread] closing listening socket: 13 2016-01-20T23:58:47.746+0530 [signalProcessingThread] removing socket file: /tmp/mongodb-27017.sock 2016-01-20T23:58:47.746+0530 [signalProcessingThread] shutdown: going to flush diaglog... 2016-01-20T23:58:47.746+0530 [signalProcessingThread] shutdown: going to close sockets... 2016-01-20T23:58:47.746+0530 [signalProcessingThread] shutdown: waiting for fs preallocator... 2016-01-20T23:58:47.746+0530 [signalProcessingThread] shutdown: lock for final commit... 2016-01-20T23:58:47.746+0530 [signalProcessingThread] shutdown: final commit... 2016-01-20T23:58:47.838+0530 [signalProcessingThread] shutdown: closing all files... 2016-01-20T23:58:47.843+0530 [signalProcessingThread] closeAllFiles() finished 2016-01-20T23:58:47.843+0530 [signalProcessingThread] journalCleanup... 2016-01-20T23:58:47.843+0530 [signalProcessingThread] removeJournalFiles 2016-01-20T23:58:47.949+0530 [signalProcessingThread] shutdown: removing fs lock... 2016-01-20T23:58:47.949+0530 [signalProcessingThread] dbexit: really exiting now

  3. Но при закрытии терминала монгода также закрывается

ПОПЫТКА 3

  1. Изменения в /etc/mongod.conf

auth = true

port = 27017

  1. ПЕРЕЗАПУСТИТЬ КОМПЬЮТЕР

  2. /var/log/mongodb/mongod.log после RESTARTING COMPUTER

    2016-01-21T00:40:13.011+0530 ***** SERVER RESTARTED ***** 2016-01-21T00:40:13.014+0530 [initandlisten] MongoDB starting : pid=1012 port=27017 dbpath=/var/lib/mongodb 64-bit host=vijay 2016-01-21T00:40:13.014+0530 [initandlisten] db version v2.6.11 2016-01-21T00:40:13.014+0530 [initandlisten] git version: d00c1735675c457f75a12d530bee85421f0c5548 2016-01-21T00:40:13.014+0530 [initandlisten] build info: Linux build4.ny.cbi.10gen.cc 2.6.32-431.3.1.el6.x86_64 #1 SMP Fri Jan 3 21:39:27 UTC 2014 x86_64 BOOST_LIB_VERSION=1_49 2016-01-21T00:40:13.014+0530 [initandlisten] allocator: tcmalloc 2016-01-21T00:40:13.014+0530 [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1", port: 27017 }, security: { authorization: "enabled" }, storage: { dbPath: "/var/lib/mongodb" }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } } 2016-01-21T00:40:13.439+0530 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /var/lib/mongodb/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating 2016-01-21T00:40:13.439+0530 [initandlisten] dbexit: 2016-01-21T00:40:13.439+0530 [initandlisten] shutdown: going to close listening sockets... 2016-01-21T00:40:13.439+0530 [initandlisten] shutdown: going to flush diaglog... 2016-01-21T00:40:13.439+0530 [initandlisten] shutdown: going to close sockets... 2016-01-21T00:40:13.439+0530 [initandlisten] shutdown: waiting for fs preallocator... 2016-01-21T00:40:13.439+0530 [initandlisten] shutdown: lock for final commit... 2016-01-21T00:40:13.439+0530 [initandlisten] shutdown: final commit... 2016-01-21T00:40:13.439+0530 [initandlisten] shutdown: closing all files... 2016-01-21T00:40:13.439+0530 [initandlisten] closeAllFiles() finished 2016-01-21T00:40:13.439+0530 [initandlisten] shutdown: removing fs lock... 2016-01-21T00:40:13.439+0530 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor 2016-01-21T00:40:13.440+0530 [initandlisten] dbexit: really exiting now

  3. Наблюдение : Unable to create/open lock file: /var/lib/mongodb/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating я нашел эту ошибку в журнале. Не знаю, вызвало ли это mongodb terminate.if это вызывает mongo STOP при запуске компьютера, а затем, как установить permisssion?

Нет абсолютно никакой необходимости возиться с файлами запуска (которые вам действительно не следует делать, если вы точно не знаете, что вы делаете) или установить дополнительное программное обеспечение для управления MongoDB.

Я бы предпочел прочитать обширную документацию MongoDB о параметрах файла конфигурации .

Единственное, что вам нужно сделать, это установить

 auth=true 

для устаревших файлов конфигурации или

 security: authorization: enabled 

для файлов конфигурации YAML в /etc/mongod.conf

В качестве альтернативы можно использовать supervisor :

 apt install supervisor 

Настройка для процесса mongodb:

создайте файл myupstartservice.conf адресу /etc/supervisor/conf.d и поставьте ниже код

 [program:mongo] command=/usr/bin/mongod --auth --config /etc/mongod.conf autostart=true autorestart=true user=root priority=100 

затем контрольная служба

service supervisor restart

некоторые ссылки

Спасибо @Markus W mahalberg расширяет ваш ответ в подробных шагах

Правильный способ Mongodb для установки mongo при запуске с аутентификацией


Шаги :

1: sudo apt-get install mongodb-orgв новом терминале

2: sudo mongod --port 27017 --dbpath /var/lib/mongodb

3: mongo --port 27017в новом терминале

4: use admin

5: Позволяет настроить суперпользователя

 db.createUser( { user: "tom", pwd: "jerry", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" }, { role: "dbAdminAnyDatabase", db: "admin" }, { role: "clusterAdmin", db: "admin" } ] }) 

6: Позволяет настроить для службы «Запуск» для « /etc/mongod.conf изменения» в /etc/mongod.conf и установить

auth = true

port = 27017

7: sudo /etc/init.d/mongod stop ИЛИ sudo service mongod stopв новом терминале

8: sudo /etc/init.d/mongod start ИЛИ sudo service mongod start

9: restart your pc и перед перезапуском компьютера, пожалуйста, оставьте этот файл /var/log/mongodb/mongod.log и сохраните

Теперь давайте проверим TWO вещи. Аутентификация и mongodb работают при запуске

1: проверка настройки проверки подлинности

mongo --port 27017 -u "tom" -p "jerry" --authenticationDatabase "admin"в новом терминале

Примечание . Этот шаг является наиболее важным шагом.

это даст вывод на терминале, как

 MongoDB shell version: 2.6.11 connecting to: 127.0.0.1:27017/test > 

2: Проверьте, работает ли mongodb при запуске

Выполните команду ниже без запуска mongod поскольку mongod должен был начаться в запуске

mongo --port 27017 -u "tom" -p "jerry" --authenticationDatabase "admin"в новом терминале

Если он начнет действовать, откройте этот файл ‘/var/log/mongodb/mongod.log’.

если он содержит журнал ошибок:

Unable to create/open lock file: /var/lib/mongodb/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating

Затем примените эти разрешения и перезапустите и снова проверьте

 sudo chown -R mongodb:mongodb /var/lib/mongodb/. sudo chown -R mongodb:mongodb /var/log/mongodb/mongod.log sudo /etc/init.d/mongod stop` OR `sudo service mongod stop sudo /etc/init.d/mongod start` OR `sudo service mongod start 

Если он не содержит выше журнала ошибок, вам следует успешно запустить mongodb при запуске

1: Получено -> $cd /etc/init/

2: Через vi Или редактор nano Создать файл myservice.conf с помощью кода ниже

 description "service to start mongodb at startup" author "plutopunch :)" start on started mountall stop on shutdown respawn respawn limit 99 5 script export HOME="/home/admin" exec sudo mongod --port 27017 --auth --dbpath /var/lib/mongodb end script post-start script end script 

3: перезагрузка ПК

http://upstart.ubuntu.com/cookbook/