En este artículo veremos cómo instalar el servidor web en Rocky Linux 8 paso a paso, de forma que podrás ofrecer contenido web desde tu servidor o VPS Rocky con seguridad SSL y servidores virtuales.
Contenido
Antes de instalar Apache en Rocky Linux 8
Para poder seguir los pasos de esta guía de instalación del servidor web Apache en Rocky Linux 8 debes cumplir estos mínimos requerimientos:
- Una máquina Rocky Linux 8 actualizada.
- Un usuario con permisos de sudo.
- Acceso a Internet.
Como seguramente ya cumples estos requisitos, pasaremos a regular la altura de nuestro escritorio y a abrir una terminal de comandos.
Cómo instalar Apache en Rocky Linux 8
Vamos a instalar el servicio web Apache en Rocky Linux 8 desde los repositorios de la distribución, por lo que el primer paso será actualizar la información de los mismos:
~$ sudo yum update
El paquete que necesitamos es httpd, que instalaremos con yum:
~$ sudo yum install -y httpd
Tras la descarga e instalación de este paquete y sus dependencias disponemos de un nuevo servicio en Rocky Linux 8, el servicio httpd.service o simplemente httpd. Este servicio no queda en ejecución ni habilitado para su inicio automático en cada arranque del sistema.
Si queremos que Apache inicie automáticamente con Rocky Linux 8, debemos habilitar el servicio:
~$ sudo systemctl enable httpd
Y si queremos empezar a trabajar ya con el servidor web, tendremos que iniciarlo manualmente:
~$ sudo systemctl start httpd
Es fácil comprobar el estado del servicio en cualquier momento, empleando para ello el comando systemctl status httpd
:
Versión instalada
Si necesitas conocer la versión exacta de Apache instalada puedes usar el comando httpd:
~$ httpd -v Server version: Apache/2.4.37 (rocky) Server built: Jun 11 2021 15:35:05
Configuración del firewall
Si quieres acceder desde red al servicio web de la máquina Rocky Linux 8 será necesario configurar el firewall añadiendo la regla correspondiente:
~$ sudo firewall-cmd --permanent --add-service={http,https}
Para aplicar la nueva configuración hay que recargar los ajustes del firewall:
~$ sudo firewall-cmd --reload
Cómo probar el servicio
Es hora de probar el servidor web desde un navegador, para lo que introducimos la dirección IP, nombre DNS, dominio, etc. de la máquina Rocky Linux 8 (o localhost si accedemos localmente).
Para acceder por dominio a un servidor Rocky Linux 8 en Internet deberás tener registrado y configurado dicho dominio a través de algún servicio de registro como Namecheap (el servicio que usamos en comoinstalar.me, por ejemplo):
Por ejemplo, la máquina Rocky Linux 8 sobre la que hemos preparado este tutorial es accesible en el subdominio rocky8.local.lan, así que podemos usar http://rocky8.local.lan como URL:
Podremos ver la página de prueba del sitio web por defecto. En realidad es una página de error, ya que el directorio donde se guardan los archivos del sitio web es /var/www/html/ y tras la instalación no contiene archivos.
Si colocamos algún contenido web en dicho directorio, con un archivo index.html, podremos apreciar el cambio al recargar la página:
Cómo configurar Apache en Rocky Linux 8
Para configurar el servicio Apache en Rocky Linux 8 hay que saber que sus archivos de configuración se organizan bajo la ruta /etc/httpd/, siendo el archivo principal /etc/httpd/conf/httpd.conf, desde el que se incluyen el resto de archivos.
Para aplicar cambios de configuración será necesario recargar la configuración del servicio:
~$ sudo systemctl reload httpd
Algunos ajustes requieren reiniciar el servicio:
~$ sudo systemctl restart httpd
Seguridad SSL
Si quieres ofrecer conexiones seguras a tus usuarios es necesario configurar el protocolo seguro HTTPS con seguridad SSL. Para cifrar las conexiones se necesitan claves privadas y certificados SSL que, en el caso de sitios disponibles desde Internet, deberían estar firmados por autoridades certificadoras, como los certificados que puedes conseguir a través de servicios profesionales como Namecheap:
En redes locales o para servidores en pruebas basta con usar certificados autofirmados generados por nosostros mismos en la máquina Rocky Linux 8 con el comando openssl:
~$ sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/pki/tls/private/rocky8.local.lan.key -out /etc/pki/tls/certs/rocky8.local.lan.crt
Este comando crea la clave privada y el certificado público guardándolos en las rutas y con los nombres especificados en los parámetros keyout y out respectivamente.
Además, incorpora de forma interactiva cierta información pública entre la que debería figurar, en el apartado «Common Name«, el dominio al que responde el servidor web:
... Common Name (eg, your name or your server's hostname) []:rocky8.local.lan ...
El siguiente paso será instalar el módulo SSL de Apache para Rocky Linux 8:
~$ sudo yum install -y mod_ssl
Este módulo posee su propia configuración, guardada en el archivo ssl.conf:
~$ sudo nano /etc/httpd/conf.d/ssl.conf
En este archivo debemos configurar las rutas del certificado y de la clave privada que acabamos de instalar o crear, buscando las directivas SSCertificateFile y SSLCertificateKeyFile:
... SSLCertificateFile /etc/pki/tls/certs/localhost.crt ... SSLCertificateKeyFile /etc/pki/tls/private/localhost.key ...
Sustituiremos los valores por defecto por los correspondientes a nuestros archivos de certificado y clave:
.. SSLCertificateFile /etc/pki/tls/certs/rocky8.local.lan.crt ... SSLCertificateKeyFile /etc/pki/tls/private/rocky8.local.lan.key ...
Dependiendo del origen de nuestros certificados, en ocasiones puede existir adicionalmente un archivo de cadena cuya ruta debería configurarse igualmente a través de la directiva SSLCertificateChainFile:
... #SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt ...
En este caso la directiva está desactivada, pero si existiese dicho archivo de cadena la activaríamos (eliminando el carácter # inicial) y le daríamos el valor adecuado:
... SSLCertificateChainFile /etc/pki/tls/certs/rocky8.local.lan-server-chain.crt ...
Ya podemos guardar los cambios y reiniciar el servicio:
~$ sudo systemctl restart httpd
Ahora el servicio web está disponible tanto a través del protocolo estándar HTTP como del protocolo seguro HTTPS.
Siguiendo con el ejemplo de este tutorial, probaremos la conexión segura HTTPS cambiando http:// por https:// en la URL que utilizamos anteriormente, quedando ahora https://rocky8.local.lan como nueva URL.
Si usamos certificados autofirmados el navegador no podrá comprobar la autenticidad de los mismos, por lo que mostrará una alerta:
Normalmente se ofrece alguna forma de poder continuar con la conexión:
En el caso de usar certificados firmados por autoridades certificadoras se establece la conexión directamente y no se muestra ningún tipo de alerta o aviso.
Servidores virtuales
Una de las características más potentes a la hora de trabajar con Apache en Rocky Linux 8 es la posibilidad de ofrecer distintos sitios web accesibles a través de dominios o nombres DNS independientes, como si cada sitio web se tratase de un servidor distinto.
Para trabajar con servidores virtuales necesitaremos disponer previamente de los distintos dominios que vamos a utilizar registrados y configurados para apuntar al servidor Rocky Linux 8. Recuerda que en el caso de un servidor Rocky Linux 8 en Internet, podemos registrar y configurar dichos dominios en servicios como Namecheap:
Si el servicio es para una red local entonces dichos dominios y subdominios deberán estar configurados en el servidor DNS local.
En este tutorial crearemos un servidor virtual adicional al sitio web por defecto, accesible en el dominio midominio.com. En principio, al acceder a través de cualquier dominio que apunte a la máquina Rocky Linux 8 se obtiene la misma página por defecto:
Configuración inicial
Vamos a crear un directorio para guardar las configuraciones de los distintos servidores virtuales que podamos llegar a tener:
~$ sudo mkdir /etc/httpd/vhosts.d
Para que los archivos contenidos en este nuevo directorio sean tenidos en cuenta, realizaremos algún ajuste en httpd.conf:
~$ sudo nano /etc/httpd/conf/httpd.conf
Al final del archivo añadiremos la siguiente directiva IncludeOptional:
... IncludeOptional vhosts.d/*.conf
Ya podemos guardar y cerrar este archivo.
Como este servidor ya contiene un sitio web por defecto, nos aseguraremos en que siga siendo el sitio por defecto creando una configuración de servidor virtual:
~$ sudo nano /etc/httpd/vhosts.d/000-default.conf
Hemos elegido el nombre 000-default.conf porque en el caso de cargar todas las configuraciones de un directorio, se hace por orden alfabético. De esta forma nos aseguramos de que este archivo sea leído en primer lugar. Su contenido será únicamente un bloque VirtualHost vacío:
<VirtualHost *:80> </VirtualHost>
El bloque está vacío para que se use toda la configuración por defecto (que es la que se aplicaba antes de estos cambios).
Configuración del servidor virtual
Empezaremos creando un directorio o DocumentRoot para los archivos web del nuevo servidor virtual:
~$ sudo mkdir /var/www/midominio.com
En este directorio crearemos un archivo index.html como contenido:
~$ sudo nano /var/www/midominio.com/index.html
Este archivo simplemente contendrá un mensaje que nos ayude a identificar el sitio:
<h1>midominio.com</h1> <small>Powered by Apache</small>
Ahora crearemos el archivo de configuración del servidor virtual para el dominio midominio.com en el directorio de configuraciones que creamos en pasos anteriores:
~$ sudo nano /etc/httpd/vhosts.d/midominio.com.conf
El contenido mínimo será similar al siguiente:
<VirtualHost *:80> ServerName midominio.com DocumentRoot /var/www/midominio.com <Directory /var/www/midominio.com> </Directory> ErrorLog /var/log/httpd/error-midominio.com.log CustomLog /var/log/httpd/access-midominio.com.log combined </VirtualHost>
Dentro del bloque VirtualHost indicamos el dominio al que responderá el servidor virtual, su directorio de contenido web, un bloque Directory en el que podríamos añadir configuraciones especiales para el contenido de este servidor virtual y archivos de registro de errores y accesos propios del servidor virtual.
Guardamos los cambios y recargamos la configuración del servicio:
~$ sudo systemctl reload httpd
Ahora accedemos al sitio web por defecto y al servidor virtual y veremos que obtenemos distintas páginas:
Justo lo que queríamos.
Servidores virtuales con seguridad SSL
Para añadir seguridad SSL a los servidores virtuales de Apache en Rocky Linux 8 en primer lugar habrá que tener instalados los archivos de clave y certificado SSL asociados al dominio del servidor virtual (autofirmados o firmados, según el caso).
Hecho esto, editamos la configuración del servidor virtual:
~$ sudo nano /etc/httpd/vhosts.d/midominio.com.conf
Y añadimos al final del archivo un nuevo bloque VirtualHost:
... <VirtualHost *:443> ServerName midominio.com DocumentRoot /var/www/midominio.com SSLEngine on SSLCertificateFile /etc/pki/tls/certs/midominio.com.crt SSLCertificateKeyFile /etc/pki/tls/private/midominio.com.key <Directory /var/www/midominio.com> </Directory> ErrorLog /var/log/httpd/error-midominio.com.log CustomLog /var/log/httpd/access-midominio.com.log combined </VirtualHost>
El contenido es muy similar al bloque VirtualHost existente, salvo que ahora indicamos el puerto estándar HTTPS (el 443), activamos el módulo SSL y configuramos los archivos de certificado y clave para el dominio del servidor virtual.
Guardamos los cambios y recargamos la configuración del sistema:
~$ sudo systemctl reload httpd
Ya podemos acceder a las versiones HTTPS del sitio por defecto y el servidor virtual, y obtendremos sus correspondientes páginas a través de conexión SSL:
Conclusión
Ahora que sabes cómo instalar y configurar el servidor web Apache en Rocky Linux 8 ya puedes desarrollar y ofrecer contenido web tanto en red local como a través de Internet. Podrás aprovechar toda la capacidad de tu servidor Rocky Linux 8 mediante el uso de servidores virtuales de Apache para ofrecer distintos sitios web, y tus visitantes disfrutarán de conexiones seguras.
Si tienes alguna duda, pregunta, sugerencia, etc. puedes dejar un comentario. Los comentarios están moderados (no te imaginas la cantidad de SPAM que recibimos), pero se revisan prácticamente a diario.
¡Apoya comoinstalar.me!
¿Ya tienes servidor web funcionando en tu propia máquina? Si es así tal vez quieras agradecérnoslo contribuyendo al mantenimiento de este sitio y la creación de nuevos artículos y tutoriales.
Puedes ayudarnos dejando a partir de 1 $ de propina desde PayPal:
O, si te sientes especialmente agradecido, puedes invitarnos a un cappuccino:
¡Gracias!
Saludos. Cómo puedo cargar mi sitio web desarrollado en PHP en el servidor virtual, ya que el servidor principal está en WordPress. Gracias.
Hola, Mario. Primero necesitas tener configurado el dominio o subdominio correspondiente de modo que apunte al servidor. Después deberás configurar el servidor virtual indicando dicho dominio y la ruta a los archivos de tu sitio web. Al final tendrás dos dominios con dos sitios (el WordPress y el que has desarrollado tú), que no es otra cosa que lo que muestra esta guía.