Je peux démarrer MongoDB en tant que $Sudo service mongod start
. Quand je commence sans Sudo
cela me donne cette erreur:
/etc/init.d/mongod: line 58: ulimit: open files: cannot modify limit: Operation not permitted
/etc/init.d/mongod: line 60: ulimit: max user processes: cannot modify limit: Operation not permitted
Starting mongod: runuser: may not be used by non-root users
1) Maintenant, j'ai changé la propriété de l'utilisateur non root sur tous les mongo directores que j'ai pu trouver, c'est-à-dire /var/lib/mongo
, var/log/mongodb
, data/db
, var/run/mongodb
$Sudo chown -R nonRootUser:nonRootUser [directory]
2) J'ai supprimé mongod.lock
des dossiers
3) J'ai exécuté --repair
aussi
Cela me donne toujours la même erreur.
J'ai aussi essayé
$mongod --fork --logpath /var/log/mongodb.log
about to fork child process, waiting until server is ready for connections.
forked process: 18566
ERROR: child process failed, exited with error number 1
le fichier mongod.log dit ceci:
2016-03-17T15:03:49.053+0000 I NETWORK [initandlisten] waiting for connections on port 27017
2016-03-17T15:03:54.144+0000 I CONTROL [signalProcessingThread] got signal 15 (Terminated), will terminate after current cmd ends
C'est Amazon Linux. Je peux le démarrer comme ceci $ mongod, mais je veux l'exécuter en tant que démon afin qu'il fonctionne en continu.
Le nonRootUser est un nouvel utilisateur que j'ai créé en plus de ec2-user. Peut-être qu'il y a des problèmes de configuration liés à l'exécution de processus démon si vous n'êtes pas utilisateur ec2?
MISE À JOUR: Changement de propriétaire de tout pour ec2-user, obtenant toujours exactement les mêmes erreurs qu'auparavant.
Vous mentionnez que vous avez utilisé le programme d'installation rpm
pour installer MongoDB sur l'AMI Amazon Linux. Lorsque vous effectuez cette opération, l'utilisateur mongod
est créé sur le système et tous les fichiers appropriés sont créés et détenus par l'utilisateur mongod
. Lors du démarrage de MongoDB installé par rpm
, la commande doit être exécutée par root
ou exécutée à l'aide de Sudo
. En effet, le script init doit exécuter une commande change user pour que le processus mongod
puisse être forké en tant qu'enfant de l'utilisateur mongod
.
Le fait de ne pas utiliser root
ou Sudo
pour démarrer le service entraîne les erreurs que vous avez citées ci-dessus.
/etc/init.d/mongod: line 58: ulimit: open files: cannot modify limit: Operation not permitted
/etc/init.d/mongod: line 60: ulimit: max user processes: cannot modify limit: Operation not permitted
Starting mongod: runuser: may not be used by non-root users
Donc, pour fonctionner en tant que service, vous devez utiliser Sudo
ou root
. Il n'y a pas de moyen simple de contourner cela, sauf en accordant à l'utilisateur mongod
un shell, en lui attribuant un mot de passe, en se connectant en tant qu'utilisateur, puis en exécutant le service. Cela entraînera toujours des erreurs lors de la tentative de modification de ulimits
et n'est généralement pas recommandé.
Pour démarrer MongoDB sans l'exécuter en tant que service, puisque vous avez utilisé le rpm
, le binaire mongod
doit se trouver dans votre chemin, donc ce qui suit devrait fonctionner
mongod --dbpath /path/to/data --logpath /path/to/mongod.log --fork
Notez que cette opération l'exécutera en tant qu'utilisateur actuellement connecté, ce qui signifie que tous les fichiers de données ainsi que mongod.log
doit être accessible en écriture par cet utilisateur. Idéalement, ces fichiers devraient appartenir à cet utilisateur.
Après avoir modifié les autorisations sur les répertoires et les fichiers, n'oubliez pas de déconnecter et reconnectez-vous.
Je ne peux toujours pas l'exécuter en tant que
$ service mongod start
il ne peut être exécuté qu'en tant que root.
Mais vous pouvez également l'exécuter en tant que démon comme ceci:
$ mongod --fork --logpath to/logpath
Juste pour être sûr, j'ai créé un répertoire data/log pour logpath. Et oui, vous pouvez créer d'autres utilisateurs en plus de l'utilisateur ec2 sur Amazon Linux et ils peuvent également exécuter mongodb
Une autre alternative est de tiliser l'archive tar au lieu d'un programme d'installation :
téléchargement depuis https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.3.tgz (utilisez wget
)
extrait (tar xaf mongodb-linux...tgz
) et déplacer éventuellement vers un autre répertoire
créer un répertoire de données (mkdir ~/data
)
mongod --dbpath ~/data --fork