Cómo instalar Apache en Ubuntu 22.04 LTS

En esta ocasión explicamos cómo instalar y configurar Apache en Ubuntu 22.04 LTS Jammy Jellyfish paso a paso de tal manera que puedas usar el servidor web más popular en Internet para mostrar contenido desde tu servidor o VPS Ubuntu.

Dispones de adaptaciones de este tutorial para otras versiones de Ubuntu e incluso otros sistemas operativos que puedes encontrar con nuestro buscador.

Antes de instalar Apache en Ubuntu 22.04 LTS Jammy Jellyfish

Si quieres seguir los pasos de esta guía de instalación del servidor web Apache en Ubuntu 22.04 LTS Jammy Jellyfish solo hay que cumplir estos requerimientos básicos:

  • Una máquina Ubuntu 22.04 LTS Jammy Jellyfish actualizada.
  • Acceso a línea de comandos con privilegios de sudo.
  • Conexión a Internet.

En este tutorial trabajaremos sobre una máquina Ubuntu 22.04 LTS que responde a los dominios ubuntu2204.local.lan y ubuntu2204.net, de modo que configuraremos servidores virtuales y seguridad SSL.

Si ya tienes todo preparado es hora de regular la altura más idónea para tu mesa, abrir una terminal de comandos y un navegador web.

Cómo instalar Apache en Ubuntu 22.04 LTS

Vamos a instalar el servidor web Apache en Ubuntu 22.04 LTS Jammy Jellyfish desde los repositorios de la propia distribución, por lo que los actualizamos:

~$ sudo apt update

E instalamos el paquete apache2 con apt:

~$ sudo apt install -y apache2

Tras la descarga e instalación de este paquete y sus dependencias se crea un nuevo servicio en Ubuntu 22.04 LTS, el servicio apache2 o apache2.service que queda iniciado y habilitado para su arranque automático junto al sistema.

Podemos comprobar el estado del servicio Apache en cualquier momento con el comando systemctl:

~$ systemctl status apache2

como instalar el servidor web apache en ubuntu 22.04 lts jammy jellyfish

El servicio queda escuchando peticiones para el protocolo HTTP estándar en el puerto 80 TCP, como podemos comprobar con el comando ss:

~$ ss -ntl
State    Recv-Q   Send-Q     Local Address:Port     Peer Address:Port  Process
...
LISTEN   0        511                    *:80                  *:*

Si necesitas saber qué versión exacta del servidor web Apache está corriendo en tu máquina Ubuntu 22.04 LTS puedes saberlo con el comando apachectl:

~$ apachectl -v
Server version: Apache/2.4.52 (Ubuntu)
Server built:   2022-03-25T00:35:40

Configurar el firewall de Ubuntu 22.04 LTS para Apache

Si tienes activado el firewall UFW en Ubuntu 22.04 LTS y quieres conectar al servidor web Apache desde red será necesario añadir la regla correspondiente.

Para el protocolo HTTP estándar:

~$ sudo ufw allow http

Y si tienes planeado configurar la seguridad SSL para trabajar con el protocolo HTTPS:

~$ sudo ufw allow https

Cómo probar el servidor web

Para comprobar el funcionamiento del servidor web Apache en Ubuntu 22.04 LTS Jammy Jellyfish desde un navegador bastará con introducir la dirección del servidor (IP, nombre DNS, dominio, localhost en caso de acceder localmente, etc.).

Por ejemplo, la máquina Ubuntu 22.04 LTS sobre la que hemos realizado este tutorial es accesible en el subdominio ubuntu2204.local.lan y en el dominio ubuntu2204.net, por lo que podemos usar http://ubuntu2204.local.lan y http://ubuntu2204.net como URL para acceder:

instalar el servidor web apache en ubuntu 22.04 lts jammy jellyfish

Cómo configurar Apache en Ubuntu 22.04 LTS

Para configurar el servidor web Apache en Ubuntu 22.04 LTS Jammy Jellyfish trabajaremos sobre los archivos ubicados bajo la ruta /etc/apache2, siendo el archivo principal apache2.conf.

Un primer ajuste rápido es el del nombre del servidor, controlado por la directiva ServerName, que si no se configura generará avisos una y otra vez al realizar ciertas operaciones. Así que podemos editar el archivo de configuración principal:

~$ sudo nano /etc/apache2/apache2.conf

Un lugar para insertar la directiva ServerName puede ser a continuación de la directiva ServerRoot, y su valor normalmente será la dirección IP o dominio principal al que responde el servidor web seguido del puerto de escucha (normalmente el 80):

...
#ServerRoot "/etc/apache2"

ServerName ubuntu2204.local.lan:80
...

Guardado el archivo, recargamos la configuración para aplicar los cambios:

~$ sudo systemctl reload apache2

Herramientas de configuración

Los archivos de configuración de módulos, sitios web y configuraciones se organizan en subdirectorios de tal manera que los directorios terminados en *-available/ contienen los archivos de configuración y en los terminados en *-enabled/ existen o no enlaces simbólicos a dichos archivos de configuración. De esta forma, solo se tienen en cuenta los archivos de configuración para los que existe un enlace simbólico en el correspondiente directorio *-enabled/.

Para no tener que crear y eliminar enlaces simbólicos manualmente existen las herramientas a2enconf, a2enmod y a2ensite que permiten activar las configuraciones (crear los enlaces), y las herramientas a2disconf, a2dismod y a2dissite para desactivarlas (eliminar los enlaces).

Tras estas operaciones habrá que recargar la configuración del servicio, aunque en el caso de la activación o desactivación de módulos de Apache será necesario reiniciar el servicio:

~$ sudo systemctl restart apache2

Servidores virtuales de Apache en Ubuntu 22.04 LTS

Una de las ventajas de trabajar con Apache en Ubuntu 22.04 LTS Jammy Jellyfish es la facilidad de configurar servidores virtuales, de modo que un mismo servidor ofrecerá distintas páginas dependiendo de la dirección utilizada para la conexión.

Las configuraciones de cada servidor virtual se guardan en el subdirectorio sites-available/.

Obviamente, para poder trabajar con distintos dominios necesitas previamente registrarlos y configurarlos en algún servicio profesional como Namecheap, el servicio que usamos en nuestro propio sitio.

Servidor virtual por defecto

Inicialmente existe un servidor virtual por defecto que atiende a cualquier petición (por eso anteriormente hemos visto que las dos direcciones del ejemplo del tutorial devolvían la página por defecto de Apache).

El archivo de configuración es 000-default.conf y examinándolo podemos ver que sus archivos web se ubican en la ruta /var/www/html, por lo que será aquí donde podremos sustituir la página web por defecto por la que queramos (o simplemente indicar otro directorio de archivos web).

Servidores virtuales adicionales

Vamos a crear un servidor virtual para el dominio ubuntu2204.net que ofrecerá un sitio web distinto. Crearemos el directorio de archivos web del nuevo sitio:

~$ sudo mkdir /var/www/ubuntu2204.net

Creamos el archivo HTML por defecto:

~$ sudo nano /var/www/ubuntu2204.net/index.html

El contenido solo será algún mensaje que nos permita comprobar que todo funciona como se espera:

<h1>Bienvenidos a ubuntu2204.net</h1>
<small>Ofrecido por Apache en Ubuntu 22.04 LTS</small>

Una vez guardado y cerrado este archivo, creamos la configuración para este servidor virtual:

~$ sudo nano /etc/apache2/sites-available/ubuntu2204.net.conf

El contenido será similar al siguiente:

<VirtualHost *:80>
        ServerName ubuntu2204.net
        DocumentRoot /var/www/ubuntu2204.net
        CustomLog ${APACHE_LOG_DIR}/access-ubuntu2204.net.log combined
        ErrorLog ${APACHE_LOG_DIR}/error-ubuntu2204.net.log
</VirtualHost>

La configuración consiste en un bloque VirtualHost en el que configuramos lo siguiente:

  • ServerName es el dominio al que responderá este servidor virtual.
  • DocumentRoot indica la ruta a los archivos web propios de este servidor virtual.
  • CustomLog es la ruta y archivo del registro de accesos al servidor virtual.
  • ErrorLog es la ruta y archivo del registro de errores del servidor virtual.

Guardamos el archivo y activamos la configuración con a2ensite:

~$ sudo a2ensite ubuntu2204.net.conf

Y actualizamos la configuración de Apache:

~$ sudo systemctl reload apache2

Si ahora accedemos a las distintas direcciones a las que responde el servidor web, veremos que ofrece páginas distintas:

como configurar servidores virtuales de apache en ubuntu 22.04 lts jammy jellyfish

Puedes repetir el mismo proceso para añadir servidores virtuales de Apache a otros dominios o subdominios configurados para apuntar al servidor Ubuntu 22.04 LTS.

Seguridad SSL para Apache en Ubuntu 22.04 LTS

Vamos a configurar conexiones seguras SSL mediante HTTPS en Apache para Ubuntu 22.04 LTS Jammy Jellyfish, para lo que necesitaremos en primer lugar activar el módulo SSL del servidor web:

~$ sudo a2enmod ssl

Tendremos que reiniciar el servicio para que el módulo esté disponible:

~$ sudo systemctl restart apache2

Certificados y claves SSL

Con el módulo de cifrado SSL ya activo necesitamos archivos de claves de cifrado y certificados públicos para cada uno de los dominios que queramos configurar.

En el caso de estar preparando un servidor web Apache en un servidor o VPS en Internet es importante que los certificados SSL estén firmados por autoridades certificadoras, tales como los que ofrecen servicios profesionales como Namecheap.

SSL Certificate for just $8.88 with Namecheap

Para un servidor local o en pruebas podemos crear claves y certificados autofirmados con la herramienta openssl.

En los parámetros de este comando especificamos la ruta y nombre del certificado y clave (es buena idea usar el dominio con el que estarán relacionados):

~$ sudo openssl req -newkey rsa:2048 -x509 -nodes -days 365 -out /etc/ssl/certs/ubuntu2204.local.lan.crt -keyout /etc/ssl/private/ubuntu2204.local.lan.key

Este comando es interactivo y nos solicitará cierta información, siendo el dato más importante el etiquetado como «Common Name» donde debemos introducir el dominio del servidor virtual cuya conexión queremos cifrar:

...
Country Name (2 letter code) [AU]:ES
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:ubuntu2204.local.lan
Email Address []:
...

Cada dominio o subdominio requiere su propia clave de cifrado y certificado, así que de igual forma creamos certificado y clave para el dominio ubuntu2204.net del ejemplo de este tutorial:

~$ sudo openssl req -newkey rsa:2048 -x509 -nodes -days 365 -out /etc/ssl/certs/ubuntu2204.net.crt -keyout /etc/ssl/private/ubuntu2204.net.key

Para el servidor virtual por defecto existe una configuración ya preparada pero no activada, que editaremos:

~$ sudo nano /etc/apache2/sites-available/default-ssl.conf

Buscamos estas líneas:

...
                SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
                SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
...

Y cambiamos los valores por defecto por las rutas de certificado y clave que acabamos de crear:

...
                SSLCertificateFile      /etc/ssl/certs/ubuntu2204.local.lan.crt
                SSLCertificateKeyFile /etc/ssl/private/ubuntu2204.local.lan.key
...

Algunos conjuntos de certificados y claves incluyen un tercer archivo que se configuraría de modo similar con esta directiva:

...
                #SSLCertificateChainFile /etc/apache2/ssl.crt/server-ca.crt
...

Hechos los cambios y guardado el archivo lo activamos:

~$ sudo a2ensite default-ssl.conf

Y recargamos la configuración del servidor web:

~$ sudo systemctl reload apache2

Ahora accedemos de nuevo a la dirección principal, cambiando el protocolo HTTP por HTTPS.

En este ejemplo usaríamos https://ubuntu2204.local.lan como URL:

como configurar seguridad ssl para apache en ubuntu 22.04 lts jammy jellyfish

En el caso de usar certificados autofirmados el navegador mostrará un aviso indicando que no es posible comprobar la autenticidad de los mismos, pero se ofrecerá algún mecanismo para continuar con la conexión.

Si el certificado está emitido por un servicio profesional y firmado por autoridades certificadoras la conexión será directa.

seguridad ssl sobre https para apache en ubuntu 22.04 lts jammy jellyfish

En este ejemplo, aunque el navegador sigue mostrando señales del problema con el certificado, la conexión está cifrada.

Configuración SSL para los servidores virtuales adicionales

Editamos el archivo de configuración del servidor virtual que creamos anteriormente:

~$ sudo nano /etc/apache2/sites-available/ubuntu2204.net.conf

Y al final del mismo añadimos un nuevo bloque VirtualHost, en este caso para el puerto 443:

...
<VirtualHost *:443>
        ServerName ubuntu2204.net
        DocumentRoot /var/www/ubuntu2204.net

        SSLEngine on
        SSLCertificateFile /etc/ssl/certs/ubuntu2204.net.crt
        SSLCertificateKeyFile /etc/ssl/private/ubuntu2204.net.key

        CustomLog ${APACHE_LOG_DIR}/access-ubuntu2204.net.log combined
        ErrorLog ${APACHE_LOG_DIR}/error-ubuntu2204.net.log
</VirtualHost>

El bloque en sí es muy parecido al ya existente, pero ahora se añaden las directivas SSLEngine, SSLCertificateFile y SSLCertificateKeyFile con los valores adecuados.

Guardados los cambios, como el archivo ya está habilitado solo habrá que recargar la configuración de Apache:

~$ sudo systemctl reload apache2

Ahora podemos acceder a todos los servidores virtuales de Apache del servidor Ubuntu 22.04 LTS mediante HTTP o a través de conexiones SSL cifradas mediante HTTPS.

servidor web apache en ubuntu 22.04 lts focal fossa

Conclusión

Ahora que sabes cómo instalar y configurar el servidor web Apache en Ubuntu 22.04 LTS Jammy Jellyfish ya puedes servir contenido para distintos sitios web sobre la misma máquina. Y todo ello protegido mediante cifrado SSL.

Si te ha surgido alguna duda o pregunta, quieres notificar algún error o realizar una sugerencia, etc. puedes dejar un comentario. Los comentarios están moderados para evitar SPAM, pero se revisan prácticamente a diario.

¡Apoya comoinstalar.me!

¿Ya puedes servir contenido web desde tu propia máquina gracias a nuestra guía? Si es así y quieres agradecérnoslo cualquier mínima aportación contribuye mucho al mantenimiento de este sitio y la elaboración de nuevos tutoriales y artículos.

Puedes ayudarnos dejando una propina de tan solo 1 $ desde PayPal:

O, si te sientes especialmente agradecido, puedes invitarnos a un café:

¡Gracias!

Valora esta entrada

4.4/5 - (5 votos)

2 comentarios en «Cómo instalar Apache en Ubuntu 22.04 LTS»

  1. Excelente trabajo, muy bien explicado todo, de gran ayuda. Estoy montando un servidor Ubuntu para tener una copia de mi tienda on-line en local y probar cambios, módulos, etc..
    Tengo una piedra en el camino que no logro solventar y me da que es una chorrada. ¿Alguna forma de poder contactar con usted por privado?
    Ya le he invitado a dos cafés, qué menos…

    Responder
    • ¡Hola, Miguel! ¡Gracias por el apoyo! Deja tu consulta en este mismo comentario, quizás si yo no supiera resolverla podría hacerlo otro lector.

      Responder

Deja un comentario