En este artículo vamos a ver cómo instalar el servidor web Apache en openSUSE Leap 15 paso a paso, de forma que terminarás siendo capaz de montar varios sitios web sobre tu servidor o VPS openSUSE gracias a los servidores virtuales. Y sin olvidar la configuración de seguridad SSL.
Contenido
Antes de instalar Apache en openSUSE Leap 15
Si quieres seguir esta guía de instalación y configuración de Apache en openSUSE Leap 15 debes reunir los siguientes requisitos previos:
- Una máquina openSUSE Leap 15.1, 15.2 ó 15.3 actualizada.
- Acceso a consola con un usuario con permisos de sudo o root.
- Conexión a Internet.
Cómo instalar Apache en openSUSE Leap 15
Vamos a instalar Apache en openSUSE Leap 15 usando los paquetes disponibles en la misma distribución, por lo que previamente deberíamos actualizar la información de los repositorios del sistema:
~> sudo zypper refresh
Ahora ya podemos instalar el paquete que nos interesa, que en esta ocasión es apache2, para lo que usaremos apt:
~> sudo zypper install -y apache2
En unos instantes se descargará e instalará Apache junto con sus dependencias, tras lo cual se crea un nuevo servicio en openSUSE Leap 15, el servicio apache2.service o apache2, que por defecto no inicia tras la instalación ni queda habilitado para hacerlo en el arranque del sistema.
Para iniciar manualmente Apache por vez primera usaremos systemctl:
~> sudo systemctl start apache2
Y si queremos que Apache inicie automáticamente en cada arranque de openSUSE Leap 15 tendremos que habilitarlo también con systemctl:
~> sudo systemctl enable apache2
Podremos comprobar en cualquier momento que el servicio apache2 está en funcionamiento con el comando systemctl status apache2
:
Versión de Apache instalada en openSUSE Leap 15
Si en cualquier momento necesitas saber qué versión de Apache está instalada en openSUSE Leap 15 es tan fácil como usar el comando apachectl con el parámetro -v:
~> sudo apachectl -v Server version: Apache/2.4.43 (Linux/SUSE) Server built: 2021-06-11 15:29:06.000000000 +0000
Cómo configurar el firewall de openSUSE Leap 15 para Apache
Si tienes activado el firewall de openSUSE Leap 15, como suele ocurrir por defecto, y quieres acceder al servidor web Apache desde la red, tendrás que añadir alguna excepción.
Para permitir el protocolo HTTP estándar (puerto TCP 80), añade la siguiente regla:
~> sudo firewall-cmd --permanent --add-service=http
Si también vas a ofrecer conexiones seguras mediante el protocolo HTTPS (puerto TCP 443) entonces debes añadir también la siguiente regla:
~> sudo firewall-cmd --permanent --add-service=https
Para aplicar los cambios será necesario recargar la configuración del firewall:
~> sudo firewall-cmd --reload
Cómo probar Apache en openSUSE Leap 15
Para probar Apache en openSUSE Leap 15 es tan fácil como usar un navegador e introducir como URL la dirección IP o dominio del servidor openSUSE Leap 15, con lo que aparecerá la página web por defecto.
En este tutorial trabajamos con un servidor openSUSE Leap 15 accesible en el dominio opensuse15.local.lan, por lo que probaremos con http://opensuse15.local.lan como URL:
Más que la página por defecto lo que obtenemos es un error, ya que el directorio de este sitio web está vacío.
Este directorio se encuentra en /srv/www/htdocs/ y podemos comprobar que todo funciona correctamente si creamos un archivo index.html en esa ubicación:
~> sudo nano /srv/www/htdocs/index.html
Con cualquier contenido:
<h1>Bienvenidos a opensuse15.local.lan</h1> <small>Powered by Apache</small>
Guardados los cambios en el archivo, si probamos de nuevo a acceder desde el navegador esta vez sí veremos una página web:
Cómo configurar Apache en openSUSE Leap 15
Cuando necesites configurar Apache en openSUSE Leap 15 tendrás que trabajar sobre los archivos y subidrectorios de la ruta /etc/apache2/. El archivo principal es httpd.conf y se encarga de incluir configuraciones organizadas por subdirectorios.
Servidores virtuales de Apache en openSUSE Leap 15
Para añadir servidores virtuales a la configuración de Apache y así poder atender a distintos dominios con sitios web propios para cada uno, añadiremos archivos de configuración en el directorio /etc/apache2/vhosts.d/. El servidor por defecto atiende a las peticiones por dirección IP, al nombre de máquina y dominio principal de openSUSE 15 y a cualquier dominio que apunte al servidor y no tenga un servidor virtual propio configurado.
Si se trata de ofrecer contenido en Internet tendrás que registrar y configurar los dominios para que apunten a tu servidor openSUSE, lo que se hace habitualmente con servicios profesionales como Namecheap:
Vamos a añadir un servidor virtual para el subdominio susemania.local.lan que, si está bien configurado, debería estar apuntando al servidor openSUSE Leap 15, como se puede comprobar fácilmente si accedemos desde un navegador antes de configurar su propio servidor virtual:
Es el comportamiento esperado: un dominio que apunta al servidor y no tiene servidor virtual configurado devuelve la página por defecto.
Crearemos un directorio de documentos propio para el nuevo servidor virtual:
~> sudo mkdir /srv/www/susemania.local.lan
Creamos un archivo index.html:
~> sudo nano /srv/www/susemania.local.lan/index.html
Y como contenido valdrá cualquier cosa que nos sirva para distinguir este sitio web de la página por defecto del servidor:
<h1>Bienvenidos a susemania.local.lan</h1> <small>Powered by Apache</small>
Ahora vamos a crear un archivo de configuración para el servidor virtual, obligatoriamente con extensión .conf:
~> sudo nano /etc/apache2/vhosts.d/susemania.local.lan.conf
El contenido será el siguiente:
<VirtualHost *:80> ServerName susemania.local.lan DocumentRoot /srv/www/susemania.local.lan <Directory /srv/www/susemania.local.lan> Require all granted </Directory> ErrorLog /var/log/apache2/susemania.local.lan-error.log CustomLog /var/log/apache2/susemania.local.lan-access.log combined </VirtualHost>
La explicación de esta configuración es bastante sencilla, ya que se trata de un bloque VirtualHost que indica el puerto estándar HTTP (80 TCP) como puerto de escucha, y dentro del cual encontramos:
- La directiva ServerName que indica a qué dominio o dominios responderá el servidor virtual.
- DocumentRoot es el directorio de archivos web del servidor virtual.
- Directory es un bloque para configurar ciertas propiedades de un directorio concreto.
- En este caso, la directiva Require permite explícitamente el acceso del servidor a la ruta del bloque Directory. Hay que hacerlo así porque la configuración por defecto de Apache no permite una ruta como la que hemos indicado para el DocumentRoot (sólo permite la ubicación de la página por defecto, por tanto en cualquier servidor virtual hay que permitir el acceso).
- ErrorLog el archivo de registro de errores del servidor virtual.
- CustomLog es el archivo de registro de accesos, en este caso con el formato combined, de los varios posibles.
Guardamos los cambios.
El servidor virtual por defecto
Cuando trabajamos con servidores virtuales ocurre que la página por defecto pasa a ser el primer servidor virtual que se cargue por orden alfabético desde el directorio vhosts.d/. Como sólo existe el servidor virtual que acabamos de configurar esto quiere decir que la página por defecto desaparece, siendo redirigidos los accesos por dirección IP y dominio principal al nuevo servidor virtual. Tal vez te interese este comportamiento, pero no es lo habitual.
Para solucionar este problema, creamos una configuración para el servidor por defecto, con un nombre que sea el primero por orden alfabético dentro del directorio vhosts.d/:
~> sudo nano /etc/apache2/vhosts.d/000-default.conf
Como configuración podemos especificar lo siguiente:
<VirtualHost _default_:80> </VirtualHost>
No es necesaria ninguna configuración dentro del bloque VirtualHost, ya que se utilizará toda la configuración por defecto de Apache, aunque puedes personalizarla en este archivo si lo deseas.
Guardamos los cambios y recargamos la configuración de Apache para que tenga en cuenta los servidores virtuales:
~> sudo systemctl reload apache2
Ahora podemos acceder por dirección IP, dominio principal y dominio adicional, y Apache se comportará como esperamos:
Seguridad SSL en Apache
Para configurar la seguridad SSL de Apache en openSUSE Leap 15 y hacer uso del protocolo HTTPS habría que cargar el módulo SSL de Apache, pero la configuración por defecto ya lo carga, como podemos comprobar con el comando apachectl:
~> sudo apachectl -M Loaded Modules: core_module (static) ... ssl_module (shared) ... reqtimeout_module (shared) ~>
Pero además, hay que editar el archivo /etc/sysconfig/apache2
~> sudo nano /etc/sysconfig/apache2
Buscaremos la directiva APACHE_SERVER_FLAGS:
... APACHE_SERVER_FLAGS="" ...
Añadiremos la señal SSL:
... APACHE_SERVER_FLAGS="SSL" ...
Y guardamos los cambios.
Antes de empezar a configurar cualquier servidor virtual con seguridad SSL es necesario disponer de la clave privada, el certificado correspondiente y en ocasiones el archivo de cadena. Para sitios web en Internet es importantísimo que estos certificados estén firmados por autoridades certificadoras como Namecheap:
Para servidores en pruebas o para redes locales puedes generar certificados autofirmados para el dominio que quieras configurar, con el comando openssl.
El directorio de configuración de Apache contiene varios subdirectorios destinados a almacenar las claves privadas, certificados públicos, etc. para los distintos servidores virtuales de Apache en openSUSE Leap 15.
En este ejemplo, crearemos la clave privada y el certificado autofirmado para el servidor virtual por defecto, asociado al dominio principal opensuse15.local.lan y generando los archivos directamente en los directorios previstos:
~> sudo openssl req -newkey rsa:2048 -x509 -nodes -days 365 -out /etc/apache2/ssl.crt/opensuse15.local.lan.crt -keyout /etc/apache2/ssl.key/opensuse15.local.lan.key
Durante la generación de los archivos un cuestionario nos solicitará datos que incorporar al certificado. Aunque no es necesario cumplimentar la mayoría de los campos, sí es importante contestar en «Common Name» con el dominio del servidor virtual:
... Common Name (e.g. server FQDN or YOUR name) []:opensuse15.local.lan ...
Ahora podemos editar el archivo de configuración del servidor virtual:
~> sudo nano /etc/apache2/vhosts.d/000-default.conf
La configuración consistirá en añadir un nuevo bloque VirtualHost a continuación del original, pero esta vez indicando el puerto 443:
... <VirtualHost _default_:443> SSLEngine on SSLCertificateFile /etc/apache2/ssl.crt/opensuse15.local.lan.crt SSLCertificateKeyFile /etc/apache2/ssl.key/opensuse15.local.lan.key </VirtualHost>
Hemos añadido la directiva SSLEngine para activar el cifrado de la conexión y las directivas SSLCertificateFile y SSLCertificateKeyFile para indicar las ubicaciones del certificado y la clave privada. Cuando se necesita un archivo de cadena o chain file, hay que añadir la directiva SSLCertificateChainFile con la ubicación del archivo.
Guardados los cambios, reiniciamos el servicio web:
~> sudo systemctl restart apache2
Y accedemos al dominio principal, pero esta vez comenzando la URL por https:// en lugar de http:// para establecer una conexión segura:
En este ejemplo, al usar certificados autofirmados, el navegador nos informa de que le resulta imposible comprobar la autenticidad de los mismos. Dependiendo del navegador, de una u otra forma nos permitirá confirmar los riesgos y continuar accediendo al sitio web.
El proceso para el resto de servidores será el mismo:
- Instalar los certificados para el dominio.
- Ampliar la configuración del servidor virtual con un bloque VirtualHost adicional.
- Recargar la configuración de Apache.
Conclusión
Así de fácil es instalar y configurar Apache en openSUSE Leap 15, por lo que empezar a servir páginas web desde tu servidor o VPS openSUSE será una tarea trivial. Podrás configurar tantos servidores virtuales como dominios necesites alojar, con o sin seguridad SSL.
Si te ha quedado alguna duda, o tienes preguntas, sugerencias, etc. puedes dejar un comentario.
¡Apoya comoinstalar.me!
¿Ya tienes funcionando tu servidor web gracias a esta guía de instalación y configuración de Apache en openSUSE Leap 15? Si es así y quieres agradecérnoslo, la más mínima aportación ayuda mucho al mantenimiento de este sitio. Y también contribuyes a la elaboración de más guías y tutoriales de openSUSE Leap 15 y Apache, aunque ahora con este calor lo que más necesitamos es un ventilador de techo para la oficina.
Puedes ayudarnos dejando una propina a partir de 1 $ a través de PayPal:
O invitándonos a un café:
¡Gracias!
NOTA: Este es el ventilador en el que hemos pensado para la oficina: