Mongo init

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type script d'init SysV (legacy)
Équivalent moderne unité systemd mongod.service
Voir aussi MongoDB · Mongo cli

Script d'init SysV historique pour démarrer/arrêter le démon mongod, typique d'une installation MongoDB manuelle (décompression d'archive, sans paquet système) sur une distribution ancienne à base de chkconfig/init.d (RHEL5/6 et équivalents).

Sur une distribution récente, ce script n'est plus nécessaire : les paquets officiels mongodb-org fournissent une unité systemd, pilotable directement avec systemctl enable --now mongod. Le contenu ci-dessous est conservé pour les environnements legacy encore basés sur ce modèle.

Mise en place

chmod 755 /etc/init.d/mongodb
chown root:root /etc/init.d/mongodb
chkconfig --add mongodb
chkconfig mongodb on

Bug corrigé : la source utilisait un tiret cadratin (—add) au lieu du double tiret attendu par chkconfig (--add) — probablement une conversion typographique automatique lors d'une copie de texte ; la commande telle quelle échoue.

Pour une installation par archive décompressée (pas de paquet), ajouter les binaires au PATH du compte d'exploitation, dans ~/.bash_profile :

PATH=$PATH:$HOME/bin:/usr/local/mongodb/bin

Script

#!/bin/bash
#
# mongodb     Startup script for the mongodb server
#
# chkconfig: - 64 36
# description: MongoDB Database Server
#
# processname: mongodb
#

# Source function library
. /etc/rc.d/init.d/functions

if [ -f /etc/sysconfig/mongodb ]; then
	. /etc/sysconfig/mongodb
fi

prog="mongod"
mongod="/usr/local/mongodb/bin/mongod"
RETVAL=0

start() {
	echo -n $"Starting $prog: "
	daemon $mongod "--fork --logpath /var/log/mongodb.log --logappend 2>&1 >>/var/log/mongodb.log"
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
	return $RETVAL
}

stop() {
	echo -n $"Stopping $prog: "
	killproc $prog
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
	return $RETVAL
}

reload() {
	echo -n $"Reloading $prog: "
	killproc $prog -HUP
	RETVAL=$?
	echo
	return $RETVAL
}

case "$1" in
	start)
		start
		;;
	stop)
		stop
		;;
	restart)
		stop
		start
		;;
	condrestart)
		if [ -f /var/lock/subsys/$prog ]; then
			stop
			start
		fi
		;;
	reload)
		reload
		;;
	status)
		status $mongod
		RETVAL=$?
		;;
	*)
		echo $"Usage: $0 {start|stop|restart|condrestart|reload|status}"
		RETVAL=1
esac

exit $RETVAL

Notes de compatibilité

Ce script cible le modèle SysV/chkconfig (RHEL5/6 et équivalents anciens). Sur une distribution gérée par systemd (RHEL7+, Debian récent...), utiliser directement l'unité fournie par le paquet officiel :

systemctl enable --now mongod
systemctl status mongod

Voir aussi

  • MongoDB — panorama général, installation
  • Mongo cli — shell d'administration