Artículos sobre: Servidores Dedicados / VPS

Cómo instalar el servidor web Apache en Ubuntu

Cómo instalar el servidor web Apache en Ubuntu



El servidor HTTP Apache es el servidor web más utilizado en todo el mundo. Ofrece numerosas capacidades impresionantes, como la posibilidad de cargar módulos dinámicamente, un sólido soporte para diversos medios y una amplia compatibilidad con otros programas de uso generalizado.

Nota: Este artículo fue creado usando Ubuntu 20.04 como sistema operativo.

Requisitos previos


Asegúrese de que el índice de paquetes local del servidor está actualizado para reflejar los últimos cambios ejecutando el comando sudo apt update.
Instala UFW, o Uncomplicated Firewall para configurar el Firewall. Por lo general, ya está instalado en Ubuntu, pero en caso de que haya sido desinstalado previamente, puede instalarlo ejecutando el comando sudo apt install ufw.
Instale Apache2 ejecutando el comando sudo apt install apache2.

Configuración del cortafuegos


Antes de realizar pruebas en Apache, es necesario ajustar las configuraciones del cortafuegos para permitir la entrada externa a los puertos web estándar. Suponiendo que haya seguido las instrucciones de los requisitos previos, debería tener configurado un cortafuegos UFW para restringir el acceso a su servidor.

A lo largo del proceso de instalación, Apache se integra con UFW para proporcionar varios perfiles de aplicación, facilitando la activación o desactivación del acceso a Apache a través del cortafuegos.

Revise los perfiles de aplicación UFW introduciendo el comando sudo ufw app list.

Debería devolver una lista de perfiles de aplicación como la siguiente:
Available applications:
  Apache
  Apache Full
  Apache Secure
  OpenSSH


Como indica el resultado devuelto, hay tres perfiles disponibles para Apache:
Apache: Este perfil sólo abre el puerto 80 (tráfico web normal, no cifrado)
Apache Full: Este perfil abre tanto el puerto 80 (tráfico web normal no cifrado) como el 443 (tráfico cifrado TLS/SSL).
Apache Secure: Este perfil sólo abre el puerto 443 (tráfico cifrado TLS/SSL)

Se recomienda habilitar el perfil más restrictivo que permita el tráfico configurado. Dado que aún no hemos configurado SSL para nuestro servidor en esta guía, sólo tendremos que permitir el tráfico en el puerto 80 que se puede hacer mediante la ejecución del comando sudo ufw allow 'Apache'.

Puede verificar si el cambio se ha realizado ejecutando el comando sudo ufw status. Debe devolver una lista de tráfico HTTP permitido como el siguiente ejemplo:
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Apache                     ALLOW       Anywhere                
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Apache (v6)                ALLOW       Anywhere (v6)

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

Comprobación del servidor web


Al final del proceso de instalación, el servidor inicia Apache. El servidor web ya debería estar en funcionamiento.

Compruebe con el sistema de init systemd que el servicio se está ejecutando introduciendo sudo systemctl status apache2. Debería devolver un mensaje como este:
● apache2.service - The Apache HTTP Server

     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2024-03-14 18:38:12 UTC; 18h ago
     Docs: https://httpd.apache.org/docs/2.4/
     Main PID: 29435 (apache2)
     Tasks: 55 (limit: 1137)
     Memory: 8.0M
     CGroup: /system.slice/apache2.service
          ├─29435 /usr/sbin/apache2 -k start
          ├─29437 /usr/sbin/apache2 -k start
          └─29438 /usr/sbin/apache2 -k start


Como confirma esta salida, el servicio se ha iniciado correctamente. Sin embargo, la mejor forma de comprobarlo es solicitar una página a Apache.

Puede acceder a la página de inicio predeterminada de Apache para confirmar que el software funciona correctamente a través de su dirección IP. Si no conoce la dirección IP de su servidor, puede obtenerla de varias maneras desde la línea de comandos. Intente introducir el comando hostname -I, Obtendrá varias direcciones separadas por espacios. Puedes probar cada una en tu navegador web yendo a http://<Your Server IP> para determinar si funcionan. Debería ver la página web por defecto de Ubuntu Apache:



Default Ubuntu Apache Web Page

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

Gestión del proceso Apache


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

Para parar su servidor web, introduzca sudo systemctl stop apache2..
Para iniciar el servidor web cuando está parado, introduzca sudo systemctl start apache2.
Para detener y volver a iniciar el servicio, introduzca sudo systemctl restart apache2.
Si simplemente está haciendo cambios en la configuración, Apache puede a menudo recargarse sin que se caigan las conexiones. Para ello, introduzca el comando sudo systemctl reload apache2.
Por defecto, Apache está configurado para iniciarse automáticamente cuando el servidor arranca. Si esto no es lo que desea, desactive este comportamiento introduciendo sudo systemctl disable apache2.
Para rehabilitar el servicio para que se inicie al arrancar, introduzca sudo systemctl enable apache2. Apache debería iniciarse automáticamente cuando el servidor arranque de nuevo.

Configuración de hosts virtuales (recomendado)


Cuando usas el servidor web Apache, puedes usar hosts virtuales (similares a los bloques de servidor en Nginx) para encapsular detalles de configuración y alojar más de un dominio desde un único servidor. Configuraremos un dominio llamado tu-dominio.com, pero deberías sustituirlo por tu propio nombre de dominio.

Apache en Ubuntu tiene un bloque de servidor habilitado por defecto que está configurado para servir documentos desde el directorio /var/www/html. Si bien esto funciona bien para un solo sitio, puede llegar a ser difícil de manejar si está alojando varios sitios. En lugar de modificar /var/www/html, vamos a crear una estructura de directorios dentro de /var/www para un sitio su-dominio.com, dejando /var/www/html en su lugar como el directorio por defecto para ser servido si una solicitud del cliente no coincide con ningún otro sitio.

Cree el directorio para su_dominio introduciendo el comando sudo mkdir /var/www/su_dominio.com.

A continuación, asigne la propiedad del directorio con la variable de entorno $USER introduciendo el comando sudo chown -R $USER:$USER /var/www/su-dominio.com.
Los permisos de sus raíces web deberían ser correctos si no ha modificado su valor umask, que establece los permisos de archivo por defecto. Para asegurarte de que tus permisos son correctos y permiten al propietario leer, escribir y ejecutar los archivos mientras que conceden sólo permisos de lectura y ejecución a grupos y otros, puedes introducir el comando sudo chmod -R 755 /var/www/tu-dominio.com.


A continuación, crea una página index.html de ejemplo utilizando nano o tu editor favorito. Si quieres usar nano, introduce el comando sudo nano /var/www/tu_dominio/index.html. Una vez dentro, podemos añadir algo de código HTML como el siguiente:
<html>
    <head>
        <title>Welcome to your-domain!</title>
    </head>
    <body>
        <h1>Success!  The your-domain.com virtual host is working!.</h1>
    </body>
</html>


Guarde y cierre el archivo cuando haya terminado.

Para que Apache pueda servir este contenido, es necesario crear un fichero de host virtual con las directivas correctas. En lugar de modificar directamente el fichero de configuración por defecto situado en /etc/apache2/sites-available/000-default.conf, vamos a crear uno nuevo en /etc/apache2/sites-available/your-domain.conf introduciendo el comando sudo nano /etc/apache2/sites-available/your-domain.conf.

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


<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName tu-dominio.com
    ServerAlias www.tu-dominio.com
    DocumentRoot /var/www/tu-dominio
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>


Fíjate que hemos actualizado DocumentRoot a nuestro nuevo directorio y ServerAdmin a un email al que pueda acceder el administrador de tu sitio-dominio. También hemos añadido dos directivas: ServerName, que establece el dominio base que debe coincidir para esta definición de host virtual, y ServerAlias, que define otros nombres que deben coincidir como si fueran el nombre base.

Guarde y cierre el archivo cuando haya terminado.

Habilitemos el archivo con la herramienta a2ensite introduciendo el comando sudo a2ensite tu_dominio.conf y deshabilitemos el sitio por defecto definido en 000-default.conf con el comando sudo a2dissite 000-default.conf.

A continuación, vamos a comprobar si hay errores de configuración introduciendo el comando sudo apache2ctl configtest, Debería volver con la frase Syntax OK.

A continuación, reinicie Apache para aplicar los cambios introduciendo el comando sudo systemctl restart apache2. Apache debería servir ahora su nombre de dominio. Puede comprobarlo navegando a http://your-domain.com, donde debería ver algo como esto:


Familiarizarse con los archivos y directorios importantes de Apache


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


Contenido


/var/www/html`: El contenido real de la web, que por defecto sólo consiste en la página por defecto de Apache que has visto antes, se sirve desde el directorio /var/www/html. Esto puede cambiarse modificando los ficheros 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 fichero principal de configuración de Apache. Puede modificarse 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 fichero especifica los puertos en los que Apache escuchará. Por defecto, Apache escucha en el puerto 80 y adicionalmente escucha 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 ficheros de configuración que se encuentren en este directorio a menos que estén enlazados al directorio sites-enabled. Normalmente, toda la configuración de los bloques del servidor se hace en este directorio, y luego se habilita enlazando al otro directorio con el comando a2ensite.
/etc/apache2/sites-enabled/: El directorio donde se almacenan los hosts virtuales habilitados por sitio. Normalmente, estos se crean enlazando a los ficheros de configuración que se encuentran en el directorio sites-available con el a2ensite. Apache lee los ficheros de configuración y los enlaces que se encuentran en este directorio cuando se inicia o se 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 ser habilitados con el comando a2enconf y deshabilitados 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 pueden activarse y desactivarse mediante los comandos a2enmod y a2dismod.

Registros del servidor


/var/log/apache2/: Este directorio debe contener al menos 2 ficheros: access.log, donde por defecto, cada petición a su servidor web se registra en este fichero de registro a menos que Apache esté configurado para hacer otra cosa, y error.log, donde por defecto, todos los errores se registran en este fichero. La directiva LogLevel de la configuración de Apache especifica el nivel de detalle de los registros de errores.


Si necesita más ayuda, cree un ticket aquí.


Hecho por: Steven C.

Actualizado el: 14/06/2024

¿Este artículo te resultó útil?

Comparte tu opinión

Cancelar

¡Gracias!