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:
Luego, instala el paquete 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:
Tu salida será una lista de perfiles de aplicación:
OutputAvailable applications:
Apache
Apache Full
Apache Secure
OpenSSH
Como indica la salida, hay tres perfiles disponibles para Apache:
Apache
: Este perfil abre solo el puerto80
(tráfico web normal, no encriptado)Apache Full
: Este perfil abre tanto el puerto80
(tráfico web normal, no encriptado) como el puerto443
(tráfico encriptado TLS/SSL)Apache Secure
: Este perfil abre solo el puerto443
(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
:
Puede verificar el cambio revisando el estado:
La salida proporcionará una lista de tráfico HTTP permitido:
OutputStatus: 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
:
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:
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:
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:
Para iniciar el servidor web cuando está detenido, ejecuta:
Para detener y luego iniciar el servicio nuevamente, ejecuta:
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:
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:
Para volver a habilitar el servicio para que se inicie en el arranque, ejecuta:
Apache ahora se iniciará automáticamente cuando el servidor se reinicie.
Paso 5 — Configuración de Virtual Hosts (Recomendado)
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:
A continuación, asigna la propiedad del directorio al usuario con el que estás actualmente registrado usando la variable de entorno $USER
:
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:
A continuación, crea una página de muestra index.html
usando nano
o tu editor favorito:
Dentro, agrega el siguiente HTML de muestra:
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
:
Agrega en el siguiente bloque de configuración, que es similar al predeterminado, pero actualizado para tu nuevo directorio y nombre de dominio:
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
:
Deshabilita el sitio predeterminado definido en 000-default.conf
:
A continuación, prueba los errores de configuración:
Deberías recibir la siguiente salida:
Output. . .
Syntax OK
Reinicia Apache para implementar tus cambios:
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 puerto80
y adicionalmente en el puerto443
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 directoriosites-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 comandoa2ensite
./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 directoriosites-available
con el comandoa2ensite
. 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 directoriossites-available
ysites-enabled
pero se utilizan para almacenar fragmentos de configuración que no pertenecen a un host virtual. Los archivos en el directorioconf-available
pueden habilitarse con el comandoa2enconf
y deshabilitarse con el comandoa2disconf
./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 comandosa2enmod
ya2dismod
.
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 directivaLogLevel
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