¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Red Hat Enterprise Linux - CentOS
  3. CentOS
Extrait - Red Hat Enterprise Linux - CentOS Puesta en marcha y gestión de servidores
Extractos del libro
Red Hat Enterprise Linux - CentOS Puesta en marcha y gestión de servidores Volver a la página de compra del libro

Servicios de producción usuales

Introducción

En este capítulo, examinaremos la implementación de algunos de los servicios más comunes encontrados en los servidores Red Hat Enterprise Linux.

El objetivo no es proporcionar un manual de software completo. De hecho, Internet está lleno de tutoriales bien explicados, guías y casos prácticos. En su lugar, este capítulo explica la implementación básica de estos servicios en Red Hat Enterprise Linux, de forma que pueda añadir rápida y fácilmente las opciones de configuración que mejor se adapten a su arquitectura.

Así pues, para implementar un servicio, lea toda la sección correspondiente del libro, comprenda las opciones y configúrelo. A continuación, inicie el servicio y efectúe las pruebas.

Si encuentra problemas al iniciar el servicio después de configurarlo, su primer reflejo debería ser analizar los archivos de registro localizados en /var/log. Estos archivos siempre explican lo que ocurre cuando se inicia el servicio.

Asegúrese también de que el cortafuegos del sistema no impide el acceso al servicio. Compruebe que los puertos necesarios estén abiertos.

Tenga cuidado también con SELinux, que a veces puede impedir el funcionamiento de un servicio sin razón aparente. Deberá desactivarlo para estar seguro.

Servidor web Apache

1. Presentación

Apache es un servidor HTTP producido por la Apache Software Foundation. Conocido oficialmente como Apache HTTP Server (Servidor HTTP Apache), es el servidor web más popular de Internet.

La razón de su éxito es que, además de ser de código abierto (open source), está disponible en varios sistemas operativos: UNIX y derivados (Linux, Mac OSX, Solaris, BSD) y Windows.

Apache se utiliza en productos de algunos de los nombres más importantes de la industria, como Oracle o IBM con el programa WebSphere.

Además de ser muy potente, este software cuenta con un impresionante número de módulos, que van desde la compatibilidad con diversos lenguajes como Perl, Python y PHP, hasta módulos SSL/TLS para el acceso seguro a la web, funciones de proxy y alojamiento virtual, lo que permite que una sola máquina física albergue varios sitios web.

La última versión de Apache (a la publicación de este libro) es la 2.4.57; no recomendamos utilizar versiones anteriores de este producto.

2. Configurar

a. Instalar

El nombre del servidor Apache es (sin sorpresas) httpd. Instálelo de la siguiente forma:

dnf install httpd 

Habilite el servicio httpd para que se inicie al arrancar y ejecútelo:

systemctl enable --now httpd 

Apache debe iniciarse. De hecho, la instalación predefinida ya está configurada para el funcionamiento estándar de un sitio web.

Configurar el cortafuegos

El servidor HTTP utiliza los siguientes puertos para funcionar, así que asegúrese de que estén abiertos en el cortafuegos:

http            80/tcp       # WorldWideWeb HTTP 
https           443/tcp      # http protocol over TLS/SSL 
https           443/udp      # http protocol over TLS/SSL 

Una vez que el servidor esté en funcionamiento, intente una conexión web desde otra máquina a la dirección IP del servidor:

http://<dirección_IP>/ 

Debería ver una página de prueba en la pantalla.

images/cap09_img01.png

Página de prueba del servidor Apache

Reiniciar Apache

Cuando modifique la configuración de httpd...

Servidor web Nginx

1. Presentación

Nginx, para engine x (motor x), es un competidor desconocido (outsider) de httpd Apache. Este servidor, creado en 2004, fue diseñado con el objetivo declarado de superar a Apache y pretende ser más rápido para las siguientes tareas:

  • Sitio web clásico

  • Reverse Proxy, proxy inverso (explorado más adelante): actúa como un servidor front-end (frontal o del lado del usuario) para filtrar y procesar los flujos HTTP/S entrantes antes de redirigirlos a los servidores web internos.

  • Equilibrio de la carga: distribución de los flujos entrantes a varios servidores para mejorar la distribución del rendimiento.

  • Caché HTTP: guarda localmente las páginas visitadas con más frecuencia para poder servirlas a los usuarios con mayor rapidez.

  • Proxy de correo: actúa como servidor frontal para filtrar y procesar los correos electrónicos entrantes (email) antes de redirigirlos a los servidores internos.

En las páginas siguientes, veremos la configuración mínima para un sitio web clásico, del mismo modo que Apache con el equivalente de los Virtual Host, y después exploraremos un uso muy extendido de Nginx por su facilidad de implementación, como servidor proxy inverso (Reverse Proxy).

La instalación de Nginx es sencilla:

dnf install -y nginx 

Una vez finalizada la instalación, inicie el servidor y actívelo al arrancar:

systemctl enable --now nginx 

Si lo desea, puede desactivar cualquier servidor Apache que ocupe los puertos 80 y 443 con el comando systemctl disable --now httpd.

Por último, autorice los puertos 80 y 443 con el comando firewall-cmd.

2. Dar servicio a un sitio web clásico

El servidor está instalado. Al igual que Apache, una configuración y un sitio web predefinidos ya están instalados. Lo único que queda es conectarse (después de obtener la dirección IP del servidor con el comando ip address).

images/cap09_img08.png

a. Archivos y directorios importantes

Ubicación

Uso

/etc/nginx

Directorio principal de configuración

/etc/nginx/nginx.conf

Archivo de configuración principal, describe el comportamiento general del servidor

/etc/nginx/conf.d/

Ubicación de las configuraciones secundarias. Aquí es donde almacenamos las configuraciones para nuestros sitios web.

/var/log/nginx/

Logs de nginx

/var/log/nginx/access.log...

PHP y MySQL (MariaDB)

Además de Apache, MySQL y PHP forman el famoso equipo que compone los servidores LAMP (Linux, Apache, PHP y MySQL), muy populares en la Web.

PHP es un lenguaje interpretado por el servidor web para generar páginas web dinámicas. La página web no es estática, sino que se construye bajo demanda en función de diversos parámetros.

MySQL es un potente sistema de gestión de bases de datos SQL. Cuando fue comprado por Sun Microsystems, el fundador de MySQL creó un «fork» (bifurcación) llamado MariaDB. Sin embargo, MariaDB sigue siendo altamente compatible con MySQL.

MariaDB ha sido adoptada ahora por los principales actores de la comunidad de código abierto y es el sistema de gestión de bases de datos predeterminado en RHEL.

LAMP forma parte de una arquitectura clásica cliente-servidor de 3 niveles:

  • Nivel externo (vista de usuario): es la pieza final de datos que se presenta al cliente. Aquí se trata de una página web enviada por el servidor Apache.

  • Nivel conceptual: Se trata de la parte funcional, que lleva a cabo la «actividad central» de la arquitectura, realizando diversas operaciones sobre los datos en función de lo que desee el cliente. Aquí funciona mediante el lenguaje PHP y podría consistir, por ejemplo, en la visualización de fichas de clientes y presupuestos.

  • Nivel interno (almacenamiento físico): Es la parte responsable de la gestión de datos. Almacena los datos que va a procesar la aplicación empresarial. A menudo se trata de una base de datos, en este caso MySQL/MariaDB.

Los principios aquí descritos están adaptados a RHEL 7, pero pueden transponerse fácilmente a RHEL 8 o 9.

1. Instalar PHP

 La instalación de PHP y del módulo Apache (mod_php) es muy sencilla:

dnf install php 

 Una vez instalado PHP, simplemente reinicie el servidor Apache para que tenga en cuenta el nuevo módulo.

 Así podremos generar una página PHP sencilla para probar la instalación. Cree el siguiente archivo:

Archivo /var/www/html/info.php 
<?php 
    phpinfo(); 
?> 

 A continuación, desde un cliente web, vaya al servidor web, a la página /info.php. Debería obtener una página que muestre la configuración de PHP en el sistema....

Desarrollar usando Python

1. Presentación

En cuanto a las tecnologías con las que hay que familiarizarse, tenemos que hablar de Python, un lenguaje de scripting polivalente que es una adición útil a la caja de herramientas de cualquier gestor de sistemas.

Python es un lenguaje de programación interpretado, como PHP, que no necesita ser compilado en un lenguaje que el procesador pueda entender directamente. Este lenguaje maduro, que existe desde 1991, está diseñado para ser sencillo de dominar sin dejar de ser potente.

Su versatilidad lo hace indispensable. Python puede encontrarse en aplicaciones tan diversas como:

  • Programación científica: muy popular en la comunidad científica, Python sustituye a Matlab en algunos casos porque dispone de librerías de funciones adaptadas a las ciencias para el tratamiento de datos procedentes de experimentos, matemáticas avanzadas y visualización, etc.

  • Las extensiones de software, que consisten en añadir funciones programadas en Python (como Blender, GIMP, Inkscape).

  • La herramienta de scripting web: ayudado por estructuras de desarrollo como Django, Python puede sustituir a lenguajes de scripting como PHP o JavaScript. Es así como se ha hecho un hueco entre los grandes de la Web.

  • La herramienta de scripting shell de Linux: del mismo modo que el scripting bash o sh (que también son intérpretes de comandos), Python puede ayudar a los responsables de sistemas en sus tareas cotidianas de gestión de servidores.

  • Multiplataforma: se puede encontrar en sistemas tan variados como Windows, MacOS, Android y Linux.

Es la función del lenguaje de secuencias de comandos shell la que vamos a examinar más de cerca aquí, con algunos principios básicos que hay que conocer sobre Python.

Existen dos versiones principales de Python:

  • La versión 2 (o versión legacy, heredada), está en sus últimos días, pero sigue siendo muy utilizada para scripts bien establecidos. A veces necesitará instalarla si encuentra que ciertos scripts no funcionan con la versión actual de Python.

  • La versión 3 es la versión...

DNS

1. Presentación de BIND y de DNS

El servidor BIND (Berkeley Internet Name Daemon), desarrollado bajo los auspicios del Internet Systems Consortium, es el servidor DNS más utilizado en Internet. Por ello, se ha convertido en un estándar y cada nueva versión se espera con impaciencia, sobre todo por el papel estratégico que desempeña en la red de redes.

Conceptos de DNS

Las máquinas accesibles en una red IP (normalmente Internet) tienen una dirección IP. Los humanos, en cambio, tendemos a memorizar nombres. Existen dos mecanismos para asociar una dirección IP a un nombre:

  • Cuando se devuelve una dirección IP para un nombre dado, se habla de resolución DNS. Este es el tipo de resolución más común, cuando se accede a un servidor en Internet, por ejemplo.

Ejemplo

¿Cuál es la dirección IP de la máquina www.wikipedia.org? Résolución DNS: la dirección IP de www.wikipedia.org es 91.198.174.232.

  • Cuando queremos obtener el nombre de una dirección IP conocida, utilizamos la resolución DNS inversa. Este tipo de resolución se encuentra a menudo en el resultado de un comando traceroute.

Ejemplo

¿Cuál es el nombre asociado a la dirección IP 212.27.50.197? Resolución DNS inversa: el nombre asociado a la dirección IP 212.27.50.197 es velizy-6k-1-po1.intf.routers.proxad.net.

El servicio que permite asociar un nombre a una dirección IP es el DNS (Domain Name System, Sistema de Nombres de Dominio). Las máquinas que ofrecen servicios DNS son los servidores DNS.

Esto se resuelve cuando el cliente envía una petición DNS a uno de los servidores DNS configurados localmente. Si su máquina Red Hat Enterprise Linux quiere acceder a un sitio web público, por ejemplo, envía una solicitud DNS para obtener la dirección IP a uno de los servidores DNS configurados en el archivo /etc/resolv.conf.

Su máquina Red Hat Enterprise Linux también puede ser un servidor DNS, es decir, manejar las peticiones DNS de los clientes. Puede hacerlo instalando el servidor Bind del que se habla en esta sección.

Nombre de dominio y FQDN

Un nombre de dominio se compone de dos o más partes (o segmentos) que reflejan una organización jerárquica, separadas por puntos, del tipo...

FTP

1. Presentación

FTP (File Transfer Protocol) es un protocolo de transferencia de archivos de red IP estandarizado por el IETF (Internet Engineering Task Force). Aunque es preferible utilizar protocolos de transferencia de archivos seguros como SFTP o SCP, el FTP se sigue utilizando ampliamente en Internet. Por ejemplo, Red Hat utiliza un servidor FTP para poner a disposición imágenes ISO de sus sistemas operativos, al igual que Cisco para distribuir IOS para sus enrutadores, conmutadores y cortafuegos.

Existen dos configuraciones típicas de servidor FTP:

  • Servidores anónimos, a los que cualquiera puede conectarse.

  • Servidores con autenticación: necesita un nombre de usuario/contraseña para acceder al contenido.

Para esto último, ahora es preferible utilizar SFTP, que es el equivalente de FTP con encriptación y autenticación SSH.

Entre las soluciones de servidor FTP disponibles en los sistemas Red Hat Enterprise Linux, se encuentra vsftpd (Very Secure FTP daemon, o demonio FTP muy seguro).

Este tiene varias ventajas:

  • Su autenticación se basa en PAM (Privileged Access Management), por lo que dispone de una amplia gama de métodos de autenticación. Los usuarios pueden identificarse mediante una base de datos MySQL, por ejemplo.

  • Utiliza usuarios virtuales, que no existen en el sistema operativo, sino que están vinculados a una cuenta del sistema única.

2. Configurar

a. Instalar

Para instalar vsftpd, escriba:

dnf install vsftpd 

La versión de vsftpd utilizada para los ejemplos es la 3.0.3.35.

Una vez finalizada la configuración, habilite vsftpd para que se inicie al arrancar la máquina:

systemctl enable vsftpd 

Después arranque el servidor manualmente con el comando:

systemctl start vsftpd 

Configurar el cortafuegos

El servidor FTP utiliza los siguientes puertos para funcionar. Asegúrese de que estén abiertos en el cortafuegos:

ftp-data       20/tcp 
ftp            21/tcp 

b. Configurar para usuarios anónimos

La configuración predeterminada de vsftpd permite conectarse en modo anónimo y en modo usuario, utilizando...

NFS

1. Presentación

NFS (Network File System) es literalmente un sistema de archivos de red. Con NFS, una máquina puede acceder a un sistema de archivos montado en un servidor remoto y verlo como un sistema de archivos local. De este modo, los archivos remotos pasan a formar parte de la estructura de la arborescencia local del servidor.

Como NFS es un protocolo UNIX/Linux, las máquinas de este tipo suelen acceder al directorio compartido.

La versión más común de NFS es la 3, que cuenta con funciones ampliadas. La versión 4 es adecuada para su uso en Internet, ya que permite atravesar fácilmente los cortafuegos.

Por defecto, en Red Hat Enterprise Linux, NFS utiliza TCP para transportar los datos, pero también se puede utilizar UDP. En una red estable, TCP es más eficiente y fiable que UDP.

2. Configurar

a. Instalar

NFS está instalado de forma predeterminada en Red Hat Enterprise Linux.

Si este no es el caso, instale el servidor y todas las herramientas:

dnf install nfs-utils 

El nombre del servicio es nfs-service.

Una vez finalizada la configuración, habilite NFS para que se inicie al arrancar la máquina:

systemctl enable nfs-server.service 

Después, inicie el servidor manualmente con el comando:

systemctl start nfs-server.service 

Configurar el cortafuegos

El servidor NFS utiliza los siguientes puertos para funcionar. Asegúrese de que estén abiertos en el cortafuegos:...

DHCP

1. Presentación

DHCP significa Dynamic Host Configuration Protocol (protocolo de configuración dinámica de anfitrión). Este protocolo está diseñado para configurar automáticamente los parámetros de red de una máquina que lo solicite.

El servidor DHCP contiene los parámetros de las máquinas de la red.

Una máquina configurada con DHCP solicita su configuración de red al servidor DHCP cuando arranca.

El servidor DHCP le asigna un contrato de arrendamiento DHCP: los parámetros que le proporciona serán válidos durante un periodo de tiempo determinado.

Red Hat Enterprise Linux contiene un servidor DHCP para IPv4 e IPv6.

2. Configurar

a. Instalar

El nombre del servidor DHCP es dhcpd, pero en yum se llama dhcp. Instálelo de la siguiente manera:

dnf install dhcp-server 

La versión de dhcpd utilizada para los ejemplos es la 4.3.0.

Habilite el servicio dhcpd para que se inicie al arrancar:

systemctl enable dhcpd 

Inicie dhcpd:

systemctl start dhcpd 

Inicie dhcpd para IPv6:

systemctl enable dhcpd6 

b. Archivos y directorios importantes

Ubicación

Uso

/etc/dhcp/dhcpd.conf

Configuración del servidor DHCP

/etc/dhcp/dhcpd6.conf

Configuración del servidor DHCP en IPv6

/etc/sysconfig/dhcpd y dhcpd6

Opciones de arranque del servidor en IPv4 y en IPv6

/var/lib/dhcpd/dhcpd/dhcpd.leases y dhcpd6.leases

Base de datos de arrendamientos asignados a máquinas en IPv4 y en IPv6

c. Configurar la puesta en marcha

La configuración de inicio del servidor DHCP en IPv4 es:

/etc/sysconfig/dhcpd...

Máquinas virtuales y contenedores

1. Virtualizar usando KVM/Qemu

a. Presentación

La virtualización es una tecnología bien conocida que permite emular máquinas y sus sistemas operativos en máquinas físicas.

Por ejemplo, en una máquina física RHEL 7, se pueden ejecutar máquinas virtuales (VM, Virtual Mahines), Windows 10 y Ubuntu.

El principio de la virtualización consiste en emular una arquitectura de hardware completa. De este modo, el sistema operativo de la máquina huésped ignora que se está ejecutando en un anfitrión físico. Los procesadores modernos incorporan conjuntos de instrucciones adaptados a la virtualización (Intel VT-x o AMD-V), lo que permite a las máquinas virtuales alcanzar un rendimiento cercano al de una máquina física.

Las ventajas de la virtualización son infinitas:

  • Reducción del número de máquinas físicas.

  • Rendimiento optimizado y mejor gestión de los recursos de hardware.

  • Gestión más sencilla y flexible (normalmente remota).

  • Despliegue masivo de aplicaciones, mayor fiabilidad.

  • Etc.

La mayoría de los servidores, especialmente los servidores web, están ahora virtualizados. Coexisten con docenas o cientos de otros, en servidores rack en centros de datos especializados. Puede arrendar fácilmente un servidor privado virtual (VPS, Virtual Private Server) por unos pocos euros en Internet.

Se pueden instalar máquinas virtuales en un PC de escritorio, por ejemplo, para probar distintos entornos.

VMware es actualmente el líder del mercado, ofreciendo virtualización para centros de datos con VMware vSphere y virtualización de equipos con VMware Player.

Sin embargo, Red Hat, siempre dispuesto a estar a la vanguardia, está apostando fuerte ofreciendo servicios similares y apoyando activamente la iniciativa KVM, que exploraremos en esta sección.

Los sistemas de virtualización, que permiten simular infraestructuras de hardware en una arquitectura física real, se conocen como hipervisores.

b. Instalar el hipervisor KVM

Antes de ejecutar KVM, puede comprobar si el procesador de su máquina está optimizado para la virtualización. Busque las cadenas vmx o svm en las especificaciones del procesador:

egrep -c '(vmx|svm)' /proc/cpuinfo 

Por ejemplo:...

Conceptos de orquestación: Kubernetes/OpenShift

La contenerización basta por sí misma para poner en marcha unos cuantos servicios en unas cuantas máquinas.

Cuando los contenedores se utilizan en masa y se convierten en el centro de la estrategia corporativa, su gestión puede convertirse rápidamente en una pesadilla. Por ello, el uso de herramientas de orquestación se vuelve esencial cuando se alcanza un determinado volumen de contenedores o cuando se requiere fiabilidad.

En efecto, cuando los servicios utilizan varios contenedores repartidos en varias máquinas, resulta imposible gestionarlos individualmente. Los sistemas de orquestación de contenedores sincronizan conjuntos de contenedores interdependientes entre varios hosts, con las siguientes ventajas:

  • Los contenedores pueden lanzarse en varios hosts, ya sean máquinas físicas o virtuales.

  • Aumento o disminución del número de contenedores en función de la demanda. 

  • Gestión del almacenamiento compartido entre contenedores.

  • Distribución de la carga entre contenedores.

  • Gestión de la fiabilidad, lanzando nuevos contenedores en caso de problema.

Kubernetes es probablemente la solución de orquestación de contenedores más popular. Originalmente desarrollado por Google, ahora es de código abierto y mantenido por la comunidad.

Con un ciclo de desarrollo bastante rápido y una comunidad...