Preparación del Sistema Operativo
Antes de proceder con la instalación del motor de base de datos, es necesario ajustar las políticas de seguridad del sistema para permitir las comunicaciones de red y la ejecución de procesos sin restriccciones innecesarias.
Para desactivar SELinux de forma permanente y aplicar el cambio en la sesión actual, ejecute los siguientes comandos:
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0
A continuación, configure las reglas del firewall para permitir el tráfico entrante en el puerto predeterminado de la base de datos y guarde la configuración:
iptables -I INPUT -p tcp --dport 27017 -j ACCEPT
service iptables save
service iptables restart
Obtención y Extracción del Binario
Descargue el paquete oficial desde los repositorios públicos y extráigalo en el directorio de optimización del sistema. Se renombrará la carpeta para matnener una estructura de rutas limpia.
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.8.tgz -P /tmp/
tar -xzf /tmp/mongodb-linux-x86_64-3.2.8.tgz -C /opt/
mv /opt/mongodb-linux-x86_64-3.2.8 /opt/mongodb_server
Creación de Estructura de Directorios y Usuario de Servicio
Por motivos de seguridad y mejores prácticas, no se debe ejecutar el servicio como root. Cree un usuario dedicaod y establezca los directorios para los datos y los registros del sistema.
mkdir -p /var/lib/mongodb/data /var/log/mongodb /var/run/mongodb
useradd -r -s /sbin/nologin mongod
chown -R mongod:mongod /var/lib/mongodb /var/log/mongodb /var/run/mongodb /opt/mongodb_server
Configuración del Motor mediante YAML
En lugar de utilizar el formato de configuración heredado, se implementa un archivo de configuración en formato YAML, que ofrece una estructura más legible y escalable. Cree el archivo en /etc/mongod.conf:
cat <<EOF > /etc/mongod.conf
storage:
dbPath: /var/lib/mongodb/data
journal:
enabled: true
systemLog:
destination: file
path: /var/log/mongodb/mongod.log
logAppend: true
net:
port: 27017
bindIp: 0.0.0.0
processManagement:
fork: true
pidFilePath: /var/run/mongodb/mongod.pid
EOF
Gestión de Servicios con SysVinit
Para integrar el motor de base de datos con el sistema de inicio de CentOS 6, se redacta un script de inicialización que maneja los ciclos de vida del proceso utilizando el usuario dedicado.
cat <<EOF > /etc/rc.d/init.d/mongod
#!/bin/bash
# chkconfig: 345 85 15
# description: MongoDB Database Server
MONGO_HOME=/opt/mongodb_server
MONGO_USER=mongod
MONGO_CONF=/etc/mongod.conf
MONGO_BIN=\${MONGO_HOME}/bin/mongod
MONGO_CLI=\${MONGO_HOME}/bin/mongo
start() {
echo "Iniciando MongoDB..."
chown \${MONGO_USER}:\${MONGO_USER} /var/run/mongodb
su - \${MONGO_USER} -c "\${MONGO_BIN} --config \${MONGO_CONF}"
}
stop() {
echo "Deteniendo MongoDB..."
su - \${MONGO_USER} -c "\${MONGO_CLI} --port 27017 --eval 'db.adminCommand({shutdown: 1})'"
}
case "\$1" in
start) start ;;
stop) stop ;;
restart) stop; sleep 2; start ;;
*) echo "Uso: \$0 {start|stop|restart}" ;;
esac
exit 0
EOF
Asigne los permisos de ejecución necesarios, registre el servicio en el sistema y arránquelo:
chmod +x /etc/rc.d/init.d/mongod
chkconfig --add mongod
chkconfig mongod on
service mongod start
Variables de Entorno Globales
Para facilitar la administración desde la línea de comandos sin necesidad de especificar rutas absolutas, inyecte la ruta de los binarios en el perfil global del sistema utilizando el directorio de perfiles modulares.
echo 'export PATH=/opt/mongodb_server/bin:$PATH' > /etc/profile.d/mongodb.sh
source /etc/profile.d/mongodb.sh
Una vez aplicado el perfil, el cliente de línea de comandos estará disponible globalmente para interactuar con el servidor recién desplegado.