sudo yum -y update
sudo yum -y install wget emacs-nox vim
En caso de que al acceder por ssh a la máquina virtual marque un error con el locale, se puede corregir agregando dos líneas al archivo /etc/locale.conf
LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8
Dependiendo del idioma de instalación, puede que lo más correcto sea LANG=es_MX.UTF-8
y LC_ALL=es_MX.UTF-8
.
En caso de que el firewall esté activo (sudo systemctl status firewalld
), se deberán abrir los puertos de tomcat en el firewall
sudo firewall-cmd --zone=public --add-port=27017/tcp --permanent
sudo firewall-cmd --zone=public --add-port=27018/tcp --permanent
sudo firewall-cmd --zone=public --add-port=27019/tcp --permanent
sudo firewall-cmd --zone=public --add-port=28017/tcp --permanent
sudo firewall-cmd --reload
Para verificar sudo firewall-cmd --list-all
Para algunas operaciones, es requerido que la seguridad de linux sea más laxa, para esto requerimos editar el archivo /etc/selinux/config
y dejarlo parecido a lo siguiente
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=permissive
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
Reiniciar después de modificar el SELinux
Creamos el archivo /etc/yum.repos.d/mongodb-org-3.4.repo
con el siguiente contenido:
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
sudo yum install -y mongodb-org
sudo systemctl enable mongod
sudo systemctl start mongod
MongoDB requiere que el sistema le permita tener un número grande de archivos abiertos por proceso, para esto debemos editar el archivo /etc/security/limits.d/20-nproc.conf
y agregamos al final
mongod soft nproc 32000
Despues de editar el archivo, requerimos reinicar mongodb:
sudo systemctl restart mongod
Mongo recomienda que el paginado no sea transparente, crear un script de inicialización y un profile.
Creamos el archivo /etc/init.d/disable-transparent-hugepages
con el siguiente contenido:
#!/bin/bash
### BEGIN INIT INFO
# Provides: disable-transparent-hugepages
# Required-Start: $local_fs
# Required-Stop:
# X-Start-Before: mongod mongodb-mms-automation-agent
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Disable Linux transparent huge pages
# Description: Disable Linux transparent huge pages, to improve
# database performance.
### END INIT INFO
case $1 in
start)
if [ -d /sys/kernel/mm/transparent_hugepage ]; then
thp_path=/sys/kernel/mm/transparent_hugepage
elif [ -d /sys/kernel/mm/redhat_transparent_hugepage ]; then
thp_path=/sys/kernel/mm/redhat_transparent_hugepage
else
return 0
fi
echo 'never' > ${thp_path}/enabled
echo 'never' > ${thp_path}/defrag
re='^[0-1]+$'
if [[ $(cat ${thp_path}/khugepaged/defrag) =~ $re ]]
then
# RHEL 7
echo 0 > ${thp_path}/khugepaged/defrag
else
# RHEL 6
echo 'no' > ${thp_path}/khugepaged/defrag
fi
unset re
unset thp_path
;;
esac
Habilitando el script:
sudo chmod 755 /etc/init.d/disable-transparent-hugepages
sudo chkconfig --add disable-transparent-hugepages
sudo /etc/init.d/disable-transparent-hugepages start
Creamos el directorio /etc/tuned/no-thp
sudo mkdir /etc/tuned/no-thp
Creamos el archivo /etc/tuned/no-thp/tuned.conf
con el siguiente contenido:
[main]
include=virtual-guest
[vm]
transparent_hugepages=never
Habilitamos el profile
sudo tuned-adm profile no-thp
Por seguridad debemos crear un usuario administrador:
use admin
db.createUser(
{
user: "admin",
pwd: "ADMIN_PASSWORD",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
Creamos un usuario de conexión para la aplicación
use BASE_DATOS
db.createUser(
{
user: "USUARIO_BASE",
pwd: "PASSWORD_USUARIO",
roles: [ { role: "readWrite", db: "BASE_DATOS" } ]
}
)
De ser necesario, se puede cambiar el rolereadWrite
por read
para un acceso de sólo lectura.
Por seguridad debemos habilitar la seguridad en MongoDB, para esto requerimos editar el archivo /etc/mongod.conf
y agregar la sección secyruty (por default está comentada) de la siguiente forma:
security:
authorization: "enabled"
En este archivo es muy importante el uso de espacios
Después se debe reiniciar el servicio:
sudo systemctl restart mongod
Prueba conexión:
mongo --port 27017 -u "USUARIO_BASE" -p "PASSWORD_USUARIO" --authenticationDatabase "BASE_DATOS"
Se debe crear el usario previo a habilitar la seguridad.