Script inicial no ubuntu para mongodb


11

Eu sou novo no linux e mongodb. Eu já instalei o mongodb no ubuntu, mas quero executar mais uma instância em uma porta diferente. Como eu entendi em outras perguntas e fóruns, deve haver um script inicial. /programming/7300109/ubuntu-start-upstart-second-instance-of-mongodb

Mas não consigo encontrar ou localizar um script inicial no meu servidor. Se eu criar um script inicial, onde devo localizá-lo para iniciar como um serviço.

ou existe outra maneira fácil e adequada de iniciar outra instância do mongodb no mesmo servidor, mas com porta diferente.

Respostas:


8

Você está executando no repositório 10gen ou no repositório padrão Debian / Ubuntu? Eu recomendo usar o repositório oficial 10gen.

Verifique este link - [Como instalar o 10gen MongoDB no Ubuntu:] http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/ . É melhor desinstalar a instalação anterior do mongodb antes dessa alteração, que também exigirá que você modifique a fonte do repositório (em /etc/apt/source.list), mas isso também é detalhado no link acima. Eu recomendo usar o upstart sobre o sysvinit e o processado é descrito em Como fazer.

Com a instalação do 10gen Ubuntu, o arquivo de configuração está em /etc/mongodb.conf.

Existem várias maneiras pelas quais você pode executar um processo mongod separado, basta executá-lo a partir do cli -

sudo -u mongodb mongod --dbpath /var/tmp/mongotest --logpath /var/tmp/mongotest_log --port 3001 &

que produzirá (usando '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

e você pode conectar via cli -> mongod --port 3001

Outra maneira é criar uma cópia do /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

Alterei o dbpath (onde os arquivos do mongodb estão armazenados) de / var / lib / mongodb para / var / lib / mongodbnew; o caminho do log mudou de mongodb.log para mongodbnew.log e a porta mudou do padrão de 27017 para 27018 (você também precisará remover o # para descomentar a linha).

Eu também alterei a linha superior para refletir o novo nome desse arquivo de configuração.

Você também precisará criar o diretório de dados porque ele não existirá e, sem ele, o processo mongod não será iniciado e garantirá que o proprietário e o grupo sejam mongodb -

sudo mkdir /var/lib/mongodbnew
sudo chown -R mongodb:mongodb mongodbnew/

Além disso, crie e altere as permissões do seu arquivo de log -

sudo touch /var/log/mongodb/mongodbnew.log && sudo chown mongodb:mongodb /var/log/mongodb/mongodbnew.log

Para iniciar seu novo processo mongod (em segundo plano) a partir do cli, digite

sudo -u mongodb /usr/bin/mongod --config /etc/mongodbnew.conf &

que envia o seguinte para a tela -

"toda a saída para: /var/log/mongodb/mongodbnew.log"

Verifique se os processos mongod estão em execução com "ps" -

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

Para verificar se você pode se conectar, execute o shell Mongo -

$ mongo --port 27018
MongoDB shell version: 2.0.5
connecting to: 127.0.0.1:27018/test
> 

Com lsof, agora você deve ver seus dois processos de mongod, o original vinculado a 27017 e o novo vinculado a 27018.

$ 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)

Para garantir que os dois processos sejam executados na inicialização, copie o arquivo de configuração init original -

sudo cp /etc/init/mongodb.conf /etc/init/mongodbnew.conf

o que deve resultar em dois arquivos, como -

$ 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

Edite o novo arquivo mongodbnew.conf usando o vi ou o que você preferir ter esta aparência -


## 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]

parar no nível de execução [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

script final

Eu testei isso no Ubuntu 12.04 e parece funcionar bem, inclusive após uma reinicialização. Obviamente, não o produzi em produção. Desculpas, se houver algum erro de digitação acima, mas houver muitas informações e eu posso ter perdido alguma coisa.

Finalmente, aqui está um link nos Conjuntos de réplicas que podem ajudá-lo, pois são exemplos de como iniciar várias instâncias mongod a partir do cli - http://www.mongodb.org/display/DOCS/Replica+Set+Tutorial .



2

Encontrei um problema com a resposta acima, em que o stop-start-daemon não inicia um novo processo com o mesmo nome mais de uma vez. No entanto, existe um --nameargumento que permite alterar a linha no script inicial /etc/init/para incluir um novo nome, para que ele seja iniciado. Algo assim:

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

Nesse caso, o --nameargumento torna essa instância única e permite que ela inicie separadamente de outras instâncias mongod.


0

upstart scripts são encontrados em /etc/init/


thnx, há uma mongodb.conf mas é arquivo conf padrão para default instância em execução

Eu só tinha uma olhada no meu mongodb.conf que fontes / etc / default / mongodb presumivelmente para configuração e, em seguida, começa o MongoDB usando start-stop-daemon

você pode copiar este arquivo e modificar o comando para iniciar o mongodb com uma porta diferente. você provavelmente vai querer especificar um novo arquivo de configuração embora assim que você pode mudar arquivos de log etc
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.