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.

Erhan A
fonte

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 .

Mark Hillick
fonte
O link para install-mongodb-on-debian-ou-ubuntu-linux foi alterado para docs.mongodb.org/manual/tutorial/install-mongodb-on-debian e docs.mongodb.org/manual/tutorial/install-mongodb no Ubuntu .
Fernando Kosh
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.

Michael Peterman
fonte
0

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

jjwchoy
fonte
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