Cómo instalar el servidor web Apache en Ubuntu 22.04

Introducción

El servidor HTTP Apache es el servidor web más utilizado en el mundo. Ofrece muchas funciones poderosas, incluyendo módulos cargables dinámicamente, soporte multimedia robusto y una integración extensa con otro software popular.

En esta guía, aprenderás cómo instalar un servidor web Apache en tu servidor Ubuntu 22.04.

Implementa tus aplicaciones desde GitHub usando Plataforma de Aplicaciones de DigitalOcean. Deja que DigitalOcean se encargue de escalar tu aplicación.

Prerrequisitos

Antes de comenzar con esta guía, necesitarás tener configurado un servidor Ubuntu 22.04 con un usuario no root con privilegios sudo y un cortafuegos activado para bloquear puertos no esenciales. Puedes aprender cómo hacerlo siguiendo nuestra Guía de configuración inicial del servidor para Ubuntu 22.04.

Una vez que hayas completado esto, inicia sesión como tu usuario no root y continúa con el primer paso.

Paso 1 — Instalación de Apache

Apache está disponible dentro de los repositorios de software predeterminados de Ubuntu, lo que permite instalarlo utilizando herramientas convencionales de gestión de paquetes.

Comienza actualizando el índice de paquetes local para reflejar los últimos cambios upstream:

  1. sudo apt update

Luego, instala el paquete apache2:

  1. sudo apt install apache2

Después de confirmar la instalación, apt instalará Apache y todas las dependencias necesarias.

Paso 2 — Ajuste del cortafuegos

Antes de probar Apache, es necesario modificar la configuración del cortafuegos para permitir el acceso externo a los puertos web predeterminados. Si seguiste las instrucciones en los requisitos previos, deberías tener un cortafuegos UFW configurado para restringir el acceso a tu servidor.

Durante la instalación, Apache se registra en UFW para proporcionar algunos perfiles de aplicación que pueden ser utilizados para habilitar o deshabilitar el acceso a Apache a través del cortafuegos.

Enumera los perfiles de aplicación de ufw ejecutando lo siguiente:

  1. sudo ufw app list

Tu salida será una lista de perfiles de aplicación:

Output
Available applications: Apache Apache Full Apache Secure OpenSSH

Como indica la salida, hay tres perfiles disponibles para Apache:

  • Apache: Este perfil abre solo el puerto 80 (tráfico web normal, no encriptado)
  • Apache Full: Este perfil abre tanto el puerto 80 (tráfico web normal, no encriptado) como el puerto 443 (tráfico encriptado TLS/SSL)
  • Apache Secure: Este perfil abre solo el puerto 443 (tráfico encriptado TLS/SSL)

Se recomienda habilitar el perfil más restrictivo que aún permita el tráfico que ha configurado. Dado que aún no ha configurado SSL para su servidor en esta guía, solo necesitará permitir el tráfico en el puerto 80:

  1. sudo ufw allow 'Apache'

Puede verificar el cambio revisando el estado:

  1. sudo ufw status

La salida proporcionará una lista de tráfico HTTP permitido:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Apache ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Apache (v6) ALLOW Anywhere (v6)

Como indica la salida, el perfil se ha activado para permitir el acceso al servidor web Apache.

Paso 3 — Comprobación de su Servidor Web

Al final del proceso de instalación, Ubuntu 22.04 inicia Apache. El servidor web ya estará en funcionamiento.

Asegúrese de que el servicio esté activo ejecutando el comando para el sistema de inicio systemd:

  1. sudo systemctl status apache2
Output
● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese> Active: active (running) since Tue 2022-04-26 15:33:21 UTC; 43s ago Docs: https://httpd.apache.org/docs/2.4/ Main PID: 5089 (apache2) Tasks: 55 (limit: 1119) Memory: 4.8M CPU: 33ms CGroup: /system.slice/apache2.service ├─5089 /usr/sbin/apache2 -k start ├─5091 /usr/sbin/apache2 -k start └─5092 /usr/sbin/apache2 -k start

Según lo confirmado por esta salida, el servicio se ha iniciado correctamente. Sin embargo, la mejor manera de probar esto es solicitar una página de Apache.

Puedes acceder a la página de inicio predeterminada de Apache para confirmar que el software está funcionando correctamente a través de tu dirección IP. Si no conoces la dirección IP de tu servidor, puedes obtenerla de varias formas desde la línea de comandos.

Intenta escribir lo siguiente en el símbolo del sistema de tu servidor:

  1. hostname -I

Recibirás algunas direcciones separadas por espacios. Puedes probar cada una en tu navegador web para determinar si funcionan.

Otra opción es usar la herramienta gratuita icanhazip.com. Este es un sitio web que, al ser accedido, devuelve la dirección IP pública de tu máquina tal como se lee desde otra ubicación en internet:

  1. curl -4 icanhazip.com

Cuando tengas la dirección IP de tu servidor, ingrésala en la barra de direcciones de tu navegador:

http://your_server_ip

Verás la página web predeterminada de Apache en Ubuntu 22.04 como se muestra a continuación:

Esta página indica que Apache está funcionando correctamente. También incluye información básica sobre los archivos importantes de Apache y las ubicaciones de directorios.

Paso 4 — Gestión del Proceso de Apache

Ahora que tienes tu servidor web en funcionamiento, revisemos algunos comandos básicos de gestión utilizando systemctl.

Para detener tu servidor web, ejecuta:

  1. sudo systemctl stop apache2

Para iniciar el servidor web cuando está detenido, ejecuta:

  1. sudo systemctl start apache2

Para detener y luego iniciar el servicio nuevamente, ejecuta:

  1. sudo systemctl restart apache2

Si simplemente estás realizando cambios de configuración, Apache a menudo puede recargar sin desconectar las conexiones. Para hacer esto, usa el siguiente comando:

  1. sudo systemctl reload apache2

De forma predeterminada, Apache está configurado para iniciar automáticamente cuando el servidor se inicia. Si esto no es lo que deseas, desactiva este comportamiento ejecutando:

  1. sudo systemctl disable apache2

Para volver a habilitar el servicio para que se inicie en el arranque, ejecuta:

  1. sudo systemctl enable apache2

Apache ahora se iniciará automáticamente cuando el servidor se reinicie.

Cuando utilizas el servidor web Apache, puedes usar hosts virtuales (similares a bloques de servidor en Nginx) para encapsular detalles de configuración y alojar más de un dominio desde un solo servidor. Configuraremos un dominio llamado tu_dominio, pero debes reemplazar esto con tu propio nombre de dominio.

Información: Si estás configurando un nombre de dominio con DigitalOcean, consulta nuestra Documentación de Redes.

Apache en Ubuntu 22.04 tiene un bloque de servidor habilitado de forma predeterminada que está configurado para servir documentos desde el directorio /var/www/html. Si bien esto funciona bien para un solo sitio, puede volverse complicado si estás hospedando múltiples sitios. En lugar de modificar /var/www/html, crea una estructura de directorio dentro de /var/www para un sitio tu_dominio, dejando /var/www/html en su lugar como el directorio predeterminado para ser servido si una solicitud de cliente no coincide con ningún otro sitio.

Crea el directorio para tu_dominio de la siguiente manera:

  1. sudo mkdir /var/www/your_domain

A continuación, asigna la propiedad del directorio al usuario con el que estás actualmente registrado usando la variable de entorno $USER:

  1. sudo chown -R $USER:$USER /var/www/your_domain

Los permisos de tu raíz web deberían ser correctos si no has modificado el valor de tu umask, que establece permisos de archivo predeterminados. Para asegurarte de que tus permisos son correctos y permiten al propietario leer, escribir y ejecutar los archivos mientras otorgan solo permisos de lectura y ejecución a grupos y otros, puedes ingresar el siguiente comando:

  1. sudo chmod -R 755 /var/www/your_domain

A continuación, crea una página de muestra index.html usando nano o tu editor favorito:

  1. sudo nano /var/www/your_domain/index.html

Dentro, agrega el siguiente HTML de muestra:

/var/www/your_domain/index.html
<html>
    <head>
        <title>Welcome to Your_domain!</title>
    </head>
    <body>
        <h1>Success!  The your_domain virtual host is working!</h1>
    </body>
</html>

Guarda y cierra el archivo cuando hayas terminado. Si estás usando nano, puedes hacer esto presionando CTRL + X, luego Y y ENTER.

Para que Apache sirva este contenido, es necesario crear un archivo de host virtual con las directivas correctas. En lugar de modificar el archivo de configuración predeterminado ubicado en /etc/apache2/sites-available/000-default.conf directamente, haz uno nuevo en /etc/apache2/sites-available/tu_dominio.conf:

  1. sudo nano /etc/apache2/sites-available/your_domain.conf

Agrega en el siguiente bloque de configuración, que es similar al predeterminado, pero actualizado para tu nuevo directorio y nombre de dominio:

/etc/apache2/sites-available/your_domain.conf
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName your_domain
    ServerAlias www.your_domain
    DocumentRoot /var/www/your_domain
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Observa que hemos actualizado el DocumentRoot a nuestro nuevo directorio y ServerAdmin a un correo electrónico al que el administrador del sitio tu_dominio puede acceder. También hemos añadido dos directivas: ServerName, que establece el dominio base que coincidirá con esta definición de host virtual, y ServerAlias, que define nombres adicionales que coincidirán como si fueran el nombre base.

Guarda y cierra el archivo cuando hayas terminado.

Ahora habilita el archivo con la herramienta a2ensite:

  1. sudo a2ensite your_domain.conf

Deshabilita el sitio predeterminado definido en 000-default.conf:

  1. sudo a2dissite 000-default.conf

A continuación, prueba los errores de configuración:

  1. sudo apache2ctl configtest

Deberías recibir la siguiente salida:

Output
. . . Syntax OK

Reinicia Apache para implementar tus cambios:

  1. sudo systemctl restart apache2

Ahora Apache estará sirviendo tu nombre de dominio. Puedes probar esto navegando a http://tu_dominio, donde verás algo como lo siguiente:

Paso 6 – Familiarizarse con Archivos y Directorios Importantes de Apache

Ahora que sabes cómo gestionar el servicio de Apache en sí mismo, deberías tomarte unos minutos para familiarizarte con algunos directorios y archivos importantes.

Contenido

  • /var/www/html: El contenido web real, que por defecto solo consiste en la página predeterminada de Apache que viste anteriormente, se sirve desde el directorio /var/www/html. Esto se puede cambiar modificando los archivos de configuración de Apache.

Configuración del Servidor

  • /etc/apache2: El directorio de configuración de Apache. Todos los archivos de configuración de Apache residen aquí.
  • /etc/apache2/apache2.conf: El archivo de configuración principal de Apache. Esto se puede modificar para hacer cambios en la configuración global de Apache. Este archivo es responsable de cargar muchos de los otros archivos en el directorio de configuración.
  • /etc/apache2/ports.conf: Este archivo especifica los puertos en los que Apache escuchará. Por defecto, Apache escucha en el puerto 80 y adicionalmente en el puerto 443 cuando un módulo que proporciona capacidades SSL está habilitado.
  • /etc/apache2/sites-available/: El directorio donde se pueden almacenar los hosts virtuales por sitio. Apache no usará los archivos de configuración encontrados en este directorio a menos que estén vinculados al directorio sites-enabled. Típicamente, toda la configuración de bloque de servidor se realiza en este directorio y luego se habilita vinculándola al otro directorio con el comando a2ensite.
  • /etc/apache2/sites-enabled/: El directorio donde se almacenan los hosts virtuales por sitio habilitados. Típicamente, estos son creados vinculando los archivos de configuración encontrados en el directorio sites-available con el comando a2ensite. Apache lee los archivos de configuración y enlaces encontrados en este directorio cuando se inicia o recarga para compilar una configuración completa.
  • /etc/apache2/conf-available/, /etc/apache2/conf-enabled/: Estos directorios tienen la misma relación que los directorios sites-available y sites-enabled pero se utilizan para almacenar fragmentos de configuración que no pertenecen a un host virtual. Los archivos en el directorio conf-available pueden habilitarse con el comando a2enconf y deshabilitarse con el comando a2disconf.
  • /etc/apache2/mods-available/, /etc/apache2/mods-enabled/: Estos directorios contienen los módulos disponibles y habilitados, respectivamente. Los archivos que terminan en .load contienen fragmentos para cargar módulos específicos, mientras que los archivos que terminan en .conf contienen la configuración para esos módulos. Los módulos se pueden habilitar y deshabilitar utilizando los comandos a2enmod y a2dismod.

Registros del servidor

  • /var/log/apache2/access.log: De forma predeterminada, cada solicitud a su servidor web se registra en este archivo de registro a menos que Apache esté configurado para hacer lo contrario.
  • /var/log/apache2/error.log: De forma predeterminada, todos los errores se registran en este archivo. La directiva LogLevel en la configuración de Apache especifica cuánto detalle contendrán los registros de errores.

Conclusión

Ahora que tiene su servidor web instalado, tiene muchas opciones para el tipo de contenido que puede servir y las tecnologías que puede utilizar para crear una experiencia más rica.

Si desea desarrollar una pila de aplicaciones más completa, puede leer este artículo sobre cómo configurar una pila LAMP en Ubuntu 22.04

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-ubuntu-22-04