Una de las potencialidades más significativas de las distribuciones de Linux es la capacidad de ampliar su potencial a niveles mucho más altos de los que trae por defecto el sistema gracias a ser de código libre.
Hemos mencionado las miles de opciones de aplicaciones, programas y utilidades que encontramos en todo tipo de categoría para hacer un servidor más productivo y hoy nos centraremos en Apache CouchDB el cual es una aplicación de código libre de software noSQL.
Este análisis lo realizaremos en CentOS 7.
Apache CouchDB fue desarrollado en el año 2005 y paso a ser parte de Apache Software Foundation en el año 2008.
CouchDB cuenta con un lenguaje de consulta simple para el desarrollador, y opcionalmente puede incluir MapReduce para una recuperación de datos simple, eficiente y completa.
- Base de datos de un solo nodo: CouchDB cuenta con una excelente base de datos de un solo nodo que funciona como cualquier otra base de datos usando un servidor de aplicaciones, lo mejor es que se puede extender en cualquier momento.
- Clúster: Apache CouchDB es una base de datos agrupada que nos permite ejecutar un solo servidor de base de datos lógico en cualquier cantidad de servidores o máquinas virtuales. Un clúster CouchDB mejora la configuración de un solo nodo al otorgarle mayor capacidad y alta disponibilidad sin cambiar ninguna API interna.
- CouchDB hace uso del protocolo HTTP y el formato de datos JSON y es compatible con cualquier software que los soporte.
- Incluye Offline First Data Sync, el cual es un exclusivo protocolo de duplicación de CouchDB, siendo la base de toda una nueva generación de aplicaciones "Offline First" para aplicaciones móviles y otros entornos con infraestructuras de red actuales.
- Apache CouchDB está diseñado para servidores (desde Raspberry Pi hasta grandes instalaciones en la nube), mientras que PouchDB está diseñado para navegadores web móviles y de escritorio y Couchbase Lite está diseñado para aplicaciones nativas de iOS y Android abarcando todas las áreas de IT.
- Los nodos individuales usan una estructura de datos de solo anexión resistente a fallos. Un clúster CouchDB multinodo guarda todos los datos de forma redundante, por lo que siempre está disponible para cuando sea necesario.
1. Instalar los repositorios EPEL y Apache CouchDB en CentOs 7
Antes de instalar Apache CouchDB en CentOS 7, sera necesario agregar un nuevo repositorio EPEL (Extra Package for Enterprise Linux).
Podemos agregar el repositorio EPEL con el siguiente comando:
yum -y install epel-release
Para instalar Apache CouchDB, contamos con paquetes rpm para su instalación en RedHat o CentOS, de modo que para ello, instalaremos CouchDB desde el repositorio de Apache, dirigiéndonos al directorio /etc/yum.repos.d y crear un nuevo archivo de repos llamado "apache-couchdb.repo" usando el editor nano:
cd /etc/yum.repos.d/ nano apache-couchdb.repo
En el nuevo archivo desplegado pegaremos lo siguiente:
[bintray--apache-couchdb-rpm] name=bintray--apache-couchdb-rpm baseurl=http://apache.bintray.com/couchdb-rpm/el$releasever/$basearch/ gpgcheck=0 repo_gpgcheck=0 enabled=1
Guardamos los cambios usando la combinación de teclas siguiente:
Ctrl +O
Salimos del editor usando:
Ctrl + X
Procedemos a instalar Apache CouchDB ejecutando la siguiente línea:
yum -y install couchdb
Allí esperamos que todos los paquetes sean descargados en instalados de forma correcta. Después de que la instalación finalice, iniciaremos el servicio y lo habilitamos para que se ejecute en el inicio del sistema:
systemctl start couchdb systemctl enable couchdb
2. Verificar del servicio y los puertos de CouchDB en CentOs 7
Podemos verificar el estado actual del servicio CouchDB ejecutando la siguiente línea:
systemctl status couchdb
Es importante verificar sobre que puertos se establece la comunicación de Apache CouchDB para habilitarlos en el firewall. Para comprobar esto ejecutamos lo siguiente:
netstat -plntu
yum install net-tools
3. Habilitar el servidor HTTP de Apache CouchDB en CentOs 7
Apache CouchDB brinda el servidor HTTP para el acceso de administrador en el puerto predeterminado, como ya mencionamos, el 5984. Cuenta con una interfaz de usuario web del panel de administración denominada 'Fauxton'.
Para habilitar el servidor HTTP de Apache CouchDB debemos ir al directorio de instalación de apache couchdb /opt/couchdb y editar el archivo de configuración llamado default.ini en el directorio etc/:
cd /opt/couchdb nano etc/default.ini
En el archivo desplegada iremos a la sección "[chttpd]" y allí ingresamos nuestra dirección IP en el campo "bind_address":
Guardamos los cambios y salimos del archivo. Procedemos a reiniciar el servicio de Apache CouchDB con la siguiente línea:
systemctl restart couchdb
Procedemos a habilitar el puerto de Apache CouchDB ejecutando las siguientes líneas:
firewall-cmd --add-port=5984/tcp --permanent firewall-cmd –reload
4. Acceder y configurar cuenta de administrador en Apache CouchDB
Ahora, para acceder a Apache CouchDB, vamos a algún navegador e ingresamos la siguiente sintaxis. Este será el entorno inicial de Apache CouchDB en CentOS 7.
http://Direccion_IP:5984/_utils/
Este punto es vital por seguridad y privacidad ya que en este momento el acceso a la plataforma web de CouchDB es directo y no requiere de credenciales, por lo cual cualquier usuario está en la capacidad de crear, editar o eliminar objetos.
Para esto, pulsamos en el icono de flecha bidireccional en la parte superior derecha y luego pulsamos sobre el icono de "Databases":
Allí, pulsamos en el botón "Admin Party!" Y en la nueva ventana crearemos el usuario administrador con las respectivas credenciales. Pulsamos en el botón Create Admin para crear el usuario.
Con este método, la próxima vez que intentemos acceder de nuevo será necesario ingresar las credenciales definidas:
Apache CouchDB ofrece una API para administrar el sistema CouchDB, podremos usar la utilidad de comando 'curl' para administrar el sistema CouchDB en general.
curl -X PUT http://192.168.0.8:5984/solvetic_dbAl ejecutar esta línea es posible que veamos un error de permisos, podemos probar usando la siguiente línea:
curl -X PUT http://usuario:contraseña@192.168.0.8:5984/solvetic_db
Podremos ver que la base de datos ha sido creada de forma correcta:
curl -X GET http://usuario:contraseña@localhost:5984/_all_dbsEsto desplegará todas las bases de datos creadas en el momento. Ahora, ejecutaremos lo siguiente para obtener la información de alguna de las bases de datos desplegadas:
curl -X GET http://usuario:contraseña@localhost:5984/solvetic_db
Podemos comprender la diversidad de tareas que nos permite llevar a cabo Apache CouchDB para la gestión de nuestras bases de datos de una forma simple.