Despliegue y Configuración Inicial de MongoDB en Entornos CentOS 6

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.

Etiquetas: MongoDB centos SysVinit iptables selinux

Publicado el 7-12 20:55