¿Cuál es la forma correcta de iniciar un servicio mongod en linux / OS X?

136

He instalado mongodb y he podido ejecutarlo, trabajar con él, hacer cosas simples de tipo DB read / write. Ahora estoy tratando de configurar mi Mac para ejecutar mongod como servicio.

Obtengo "Comando no encontrado" en respuesta a:

 init mongod start

En respuesta a:

~: service mongod start
service: This command still works, but it is deprecated. Please use launchctl(8) instead.
service: failed to start the 'mongod' service

Y si lo intento:

~: launchctl start mongod
launchctl start error: No such process

Así que obviamente estoy dando vueltas un poco. El siguiente paso parece ser escribir caracteres aleatorios hasta que algo funcione. La orden que hace el trabajo es: mongod --quiet &No estoy seguro, tal vez esa es la forma en que se supone que lo haga? ¿Tal vez debería quitar el 'modo silencioso' y agregarlo > /logs/mongo.logal final de la línea de comando?

Estoy construyendo un entorno de desarrollo en una Mac con la intención de hacer lo mismo en un servidor Linux. Simplemente no estoy seguro de los comandos Bash. Todas las otras búsquedas que hago tratando de obtener la respuesta me dan consejos para las máquinas con Windows.

¿Quizás alguien conoce la versión de Linux de los comandos?

Muchas gracias

Alex C
fuente
Lo he hecho en Windows con este enlace ( stackoverflow.com/questions/2438055/… ), no estoy seguro si es lo mismo en Mac OS.
Scott
Gracias Scott, no, también había visto y probado las cosas de tu hiloerror command line: unknown option install
Alex C

Respuestas:

129

Con versiones recientes de la edición de la comunidad mongodb, esto es sencillo.

Cuando instala a través de brew, le dice qué hacer exactamente. No es necesario crear un nuevo archivo de control de inicio.

$ brew install mongodb
==> Downloading https://homebrew.bintray.com/bottles/mongodb-3.0.6.yosemite.bottle.tar.gz ### 100.0%
==> Pouring mongodb-3.0.6.yosemite.bottle.tar.gz
==> Caveats
To have launchd start mongodb at login:
  ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents
Then to load mongodb now:
  launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
Or, if you don't want/need launchctl, you can just run:
  mongod --config /usr/local/etc/mongod.conf
==> Summary
🍺  /usr/local/Cellar/mongodb/3.0.6: 17 files, 159M
Brendan W. McAdams
fuente
Hace mongodnecesidad de información de la pantalla a través del servidor de ventanas; ¿necesita ser un agente de lanzamiento o es suficiente para convertirlo en un demonio de lanzamiento ?
Marius Butuc
23
Atención a los usuarios de OSX: instalé mongo a través de homebrew e incluyó /usr/local/Cellar/mongodb/2.4.5-x86_64/homebrew.mxcl.mongodb.plist(y estaba configurado correctamente para mi instalación). Simplemente copié homebrew.mxcl.mongodb.plisten LaunchAgents y seguí el resto de estas instrucciones (en sustitución homebrew.mxcl.mongodbde org.mongodb.mongod) y funciona muy bien.
jacob
55
Será mejor que te desplaces hacia abajo para obtener la respuesta de Mario Alemi;)
octaviano
/Library/LaunchAgents/homebrew.mxcl.mongodb.plist: No
existe
En primer lugar: MongoDB tiene su propio Homebrew Tap oficial que debe usar para instalar la edición comunitaria. $ brew tap mongodb/brewluego instalar usando $ brew install mongodb-community. En cuanto a los servicios, si ejecuta $ brew services Homebrew ahora tiene ese Tap incluido, por lo que no necesita hacer nada. Además, sobre los servicios de inicio, si solo necesita MongoDB después de iniciar sesión (como servidor de desarrollo, no como servidor de producción), use el ~/Library/LaunchAgents/directorio y no el sistema; /Library/LaunchDeamonseste último requiere privilegios de root.
cseder
152

Editar: ahora debe usar brew services start mongodb, como en la respuesta de Gergo ...

Cuando instales / actualices mongodb, brew te dirá qué hacer:

Para iniciar, inicie mongodb al iniciar sesión:

    ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents

Entonces para cargar mongodb ahora:

    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist

O, si no desea / no necesita launchctl, simplemente puede ejecutar:

    mongod

Funciona perfectamente

Mario Alemi
fuente
¡No había visto esa instrucción! Esto funciona perfectamente para mí en Mac OSX 10.8.4, creo que lo instalé con Brew. El comentario de Jacob en la respuesta aceptada apuntaba a un archivo desconocido cuando lo probé.
Matt Fletcher
55
Prefiero esta solución sobre la respuesta aceptada. Copiar el plist en la respuesta anterior hace las cosas un poco más difíciles al actualizar mongo; deberá recordar actualizar las rutas según sea necesario. Sin embargo, usar un enlace simbólico como lo recomienda homebrew se encarga de esto. Usé este enfoque y los alias de la respuesta anterior (reemplazando org.mongodb.mongod con homebrew.mxcl.mongodb), y las cosas funcionan muy bien
verboze
2
¡Probé esta solución y la base de datos que estaba usando "desapareció"! Creo que esta es la razón: el plist predeterminado proporcionado por homebrew almacena la configuración mongod en /usr/local/etc/mongod.conf. Esta configuración especifica que dbpath sea / usr / local / var / mongodb en lugar del valor predeterminado / data / db. Solo quería señalar esto en caso de que le ocurriera a otra persona. Para que mi base de datos vuelva a aparecer, tuve que descargar y eliminar el enlace simbólico.
ttemple
1
Nota: Hay algo extraño en el launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plistinteriortmux
kqw
@empleo alguna idea de cómo deshacer todo esto?
Timeless del
73

El servicestoque de Homebrew integra fórmulas con el launchctladministrador. Agregarlo es fácil:

brew tap homebrew/services

Luego puede iniciar MongoDB con este comando (esto también iniciará mongodb en el arranque):

brew services start mongodb

También puedes usar stopo restart:

brew services stop mongodb
brew services restart mongodb
Gergo Erdosi
fuente
44
Me gustó la respuesta pero descubrió que brew eliminará los servicios en el futuro. los servicios de preparación comienzan mongodb Advertencia: los servicios de preparación no son compatibles y se eliminarán pronto.
smile2day
1
Esa es una noticia triste. Por ahora está en desuso, lo que significa que se eliminará en algún momento, pero aún funciona. Esperemos que alguien se ofrezca como voluntario para mantenerlo como un grifo. Actualizaré mi respuesta cuando se elimine o cuando esté disponible un toque.
Gergo Erdosi
1
robots.thoughtbot.com/…
Igor Shubovych
Ya se ha eliminado, ya que veo Error: Unknown command: servicescuando intenté de esta manera.
iplus26
1
Gracias por esta respuesta @ iplus26 todavía funciona para mí
philip oghenerobo balogun
3

Acabo de instalar MongoDB a través de Homebrew. Al final de la consola de instalación, puede ver una salida de la siguiente manera:

Para comenzar mongodb:

brew services start mongodb

O, si no desea / necesita un servicio en segundo plano, puede ejecutar:

mongod --config /usr/local/etc/mongod.conf

Entonces, los servicios de preparación comienzan mongodb , lograron ejecutar MongoDB como un servicio para mí.

Ardi Bello
fuente
2

Miré un poco por el lado de Mac. Es posible que desee utilizar el instalador aquí, ya que parece que realiza toda la configuración para que se inicie automáticamente en Mac OS. El único inconveniente es que parece que está usando una versión mongo bastante antigua.

Este enlace aquí también explica la configuración para que Mongo se inicie automáticamente como un servicio en segundo plano en la Mac.

Scott
fuente
1
El enlace ya no está disponible.
Hoppo
1
no estoy seguro de si era exactamente lo mismo, pero enlace fijo para ir al artículo que explica el mismo concepto
Scott
0

Primer paso

instale mongodb en su máquina Linux con

apt install mongodb-client && apt install mongodb-server

segundo paso es

cambie la ruta de la base de datos en lugar de la ruta predeterminada del sistema si lo desea.
así que sigue los siguientes pasos y cámbialo por ti mismo.

mongod --directoryperdb --dbpath /var/lib/mongodb/data/db --logpath /var/lib/mongodb/log/mongodb.log --logappend --rest

y en su máquina de Windows hágalo así, simplemente ponga una bandera de instalación. Tienes que recibir un mensaje exitoso.

Atentamente...

MehdiPRG
fuente
0

En macOS 10.13.6 con MongoDB 4.0

No pude conectarme a localhost desde el shell mongo

Comencé MongoDB con:

mongod --config /usr/local/etc/mongod.conf

Descubrí que el 'mongod.conf' tenía:

bindIp: 127.0.0.1

Cambié mi conexión de JavaScript de localhost a 127.0.0.1 y funcionó bien.

Lo mismo estaba ocurriendo con MongoDB Compass también.

Notificar
fuente
0

Después de instalar mongodb a través de brew, ejecuta esto para que funcione:

mongod --dbpath /usr/local/var/mongodb
usuario129916
fuente
2
Esta es la misma respuesta que @ Rejeev-Divakaran proporcionó hace más de cinco años. Asegúrese de verificar las respuestas existentes antes de enviar una nueva. Si existe uno que sugiera su mismo enfoque, la acción apropiada es votarlo, un privilegio que obtendrá después de recibir cuatro puntos de reputación más, creo.
Jeremy Caney
0
mongod --dbpath [path_to_data_directory]
Rejeev Divakaran
fuente
2
OP quiere ejecutarlo como un servicio, no de forma interactiva. Una buena respuesta debería abordar esto directamente.
paulmelnikow