Acabo de iniciar una nueva AWS Linux AMI 2016.09.1(HVM) y descargué la última versión de Mongodb. Estoy usando MongoDB versión 3.0.14. Actualicé /etc/mongod.conf a lo siguiente,
# mongod.conf # for documentation of all options, see: # http://docs.mongodb.org/manual/reference/configuration-options/ # where to write logging data. systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log # Where and how to store data. storage: dbPath: /var/lib/mongo journal: enabled: true # engine: # mmapv1: # wiredTiger: # how the process runs processManagement: fork: true # fork and run in background pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile # network interfaces net: port: 27017 # bindIp: 127.0.0.1 # Listen to local interface only, comment to listen on all interfaces. #security: #operationProfiling: #replication: #sharding: ## Enterprise-Only Options #auditLog: #snmp:Ejecuto Mongodb por primera vez usando el servicio,
sudo service mongod startTodo funciona bien. Cuando detengo Mongodb y reinicio,
sudo service mongod stop sudo service mongod restartObtuve el siguiente error,
Error starting mongod. /var/run/mongodb/mongod.pid exists.Esto es lo que hay en el archivo de registro, /var/log/mongodb/mongod.log,
2017-01-16T14:11:16.869+0000 I CONTROL ***** SERVER RESTARTED ***** 2017-01-16T14:11:16.872+0000 I CONTROL [initandlisten] MongoDB starting : pid=2820 port=27017 dbpath=/var/lib/mongo 64-bit hos t=ip-10-0-0-91 2017-01-16T14:11:16.872+0000 I CONTROL [initandlisten] db version v3.0.14 2017-01-16T14:11:16.872+0000 I CONTROL [initandlisten] git version: 08352afcca24bfc145240a0fac9d28b978ab77f3 2017-01-16T14:11:16.872+0000 I CONTROL [initandlisten] build info: Linux ip-10-63-190-181 3.4.43-43.43.amzn1.x86_64 #1 SMP Mon May 6 18:04:41 UTC 2013 x86_64 BOOST_LIB_VERSION=1_49 2017-01-16T14:11:16.872+0000 I CONTROL [initandlisten] allocator: tcmalloc 2017-01-16T14:11:16.872+0000 I CONTROL [initandlisten] options: { config: "/etc/mongod.conf", net: { port: 27017 }, processMan agement: { fork: true, pidFilePath: "/var/run/mongodb/mongod.pid" }, storage: { dbPath: "/var/lib/mongo", journal: { enabled: t rue } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } } 2017-01-16T14:11:16.893+0000 E NETWORK [initandlisten] Failed to unlink socket file /tmp/mongodb-27017.sock errno:1 Operation not permitted 2017-01-16T14:11:16.893+0000 I - [initandlisten] Fatal Assertion 28578 2017-01-16T14:11:16.893+0000 I - [initandlisten] ***aborting after fassert() failureHe visto varios blogs publicados sobre este problema con soluciones, pero ninguno de ellos parece funcionar. Pasé todo el día domingo tratando de resolver esto. Nunca tuve este problema antes de ejecutar una instancia anterior de AWS y Mongo.
Bien, encontré el problema. Eliminé el archivo /var/run/mongodb/mongod.pid como sugirió Dave Maples arriba. Sin embargo, MongoDB aún no se ejecutaría. Volví a mirar el archivo de registro y ahora lo vi ladrando sobre este archivo,
/tmp/mongodb-27017.sockParecía que no tenía los permisos correctos. Lo intenté,
sudo chown mongod:mongod /tmp/mongodb-27017.sockY funcionó bien. Ahora, cuando inicio/detengo/reinicio MongoDB varias veces, ya no tengo el problema. Creo que los permisos de archivo hicieron que MongoDB no se limpiara correctamente y dejó el archivo /var/run/mongodb/mongod.pid en el directorio. Esto provocó el error "Error al iniciar mongod. /var/run/mongodb/mongod.pid existe". Sin embargo, este no era el verdadero problema. El verdadero problema eran los permisos /tmp/. Al mirar el archivo de registro después de eliminar el archivo mongod.pid y reiniciar Mongod, se mostró el problema de los permisos. Así que esto es lo que solucionó el problema,
sudo rm /var/run/mongodb/mongod.pid sudo chown mongod:mongod /tmp/mongodb-27017.sockApuesto a que si hubiera probado "sudo chown mongod:mongod /tmp/mongodb-27017.sock" justo después de instalar MongoDB en el nuevo servidor antes de ejecutar MongoDB, habría evitado el problema. Desperdicié un día soleado de Florida perfectamente bueno en este.
Ok, encontré una mejor solución a lo que tenía en mi primera respuesta. Mi respuesta anterior simplemente eliminó los síntomas. Vi que varias otras personas tuvieron que elegir otros directorios. Creo que el problema es que mongod no se reinicia correctamente y deja varios directorios configurados incorrectamente cuando falla. Sospecho que se están ejecutando varios subprocesos, por lo que el directorio que se configura incorrectamente es algo aleatorio. Estoy usando la versión AWS AMI Linux de Amazon e instalando MongoDB 3.4. Encontré un muy buen script de instalación de MongoDB en
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-amazon/Así que aquí está la solución. Lo probé varias veces y funcionó cada vez. Instala mongo como lo harías normalmente. Use el script anterior si es útil. Antes de iniciar mongod, ejecute el siguiente comando,
sudo chkconfig mongod onNotará que la secuencia de comandos de instalación anterior resalta chkconfig pero en la parte inferior de la secuencia de comandos, donde es posible que no se vea. Esto asegurará que pueda reiniciar con éxito mongod cada vez. Esto debería funcionar en otras versiones de Linux.
Tiene otra opción en caso de que la asignación de usuario y grupo no funcione, pero esto depende directamente del estado del archivo sock.
Moví el mongodb-27017.sock y lo renombré, eliminé el archivo .pid e inicié el servicio y con esto funciona el proceso
sudo mv /tmp/mongodb-27017.sock /tmp/mongodb-27017.sock2 sudo rm /var/run/mongodb/mongod.pid sudo service mongod start