Apache

Introducción

El servidor Apache HTTP es el servidor web más utilizado en el mundo. Proporciona muchas funciones potentes que incluyen módulos cargables dinámicamente, soporte de medios sólido y una amplia integración con otro software popular.

En esta guía, explicaremos cómo instalar un servidor web Apache en su servidor Debian 9.

requisitos previos

Antes de comenzar esta guía, debe tener un usuario no root normal con privilegios sudo configurado en su servidor. Además, deberá habilitar un firewall básico para bloquear puertos no esenciales.

Cuando tenga una cuenta disponible, inicie sesión como su usuario no root para comenzar.

Paso 1: Instalación de Apache

Apache está disponible en los repositorios de software predeterminados de Debian, lo que permite instalarlo mediante herramientas de administración de paquetes convencionales.

Comencemos por actualizar el índice del paquete local para reflejar los cambios más recientes:

sudo apt update

Luego, instale el apache2:

sudo apt install apache2

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

Paso 2: Ajustar el cortafuegos

Antes de probar Apache, es necesario modificar la configuración del firewall para permitir el acceso externo a los puertos web predeterminados. Suponiendo que siguió las instrucciones de los requisitos previos, debe tener un firewall UFW configurado para restringir el acceso a su servidor.

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

Enumere los ufwperfiles de aplicación escribiendo:

sudo ufw app list

Verá una lista de los perfiles de aplicación:

OutputAvailable applications:
  AIM
  Bonjour
  CIFS
. . . 
 WWW
 WWW Cache
 WWW Full
 WWW Secure
. . . 

Los perfiles de Apache comienzan con WWW:

  • WWW : este perfil abre solo el puerto 80 (tráfico web normal y sin cifrar)
  • Caché WWW : este perfil abre solo el puerto 8080 (a veces se usa para almacenamiento en caché y proxies web)
  • WWW Full : este perfil abre tanto el puerto 80 (tráfico web normal y sin cifrar) como el puerto 443 (tráfico cifrado con TLS/SSL)
  • WWW Secure : este perfil abre solo el puerto 443 (tráfico encriptado TLS/SSL)

Se recomienda que habilite el perfil más restrictivo que seguirá permitiendo el tráfico que ha configurado. Como aún no hemos configurado SSL para nuestro servidor en esta guía, solo necesitaremos permitir el tráfico en el puerto 80:

sudo ufw allow 'WWW'

Puede verificar el cambio escribiendo:

sudo ufw status

Debería ver el tráfico HTTP permitido en el resultado mostrado:

OutputStatus: active

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

Como puede ver, el perfil se ha activado para permitir el acceso al servidor web.

Paso 3: Comprobación de su servidor web

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

Verifique con el systemdsistema de inicio para asegurarse de que el servicio se esté ejecutando escribiendo:

sudo systemctl status apache2

Output● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2018-09-05 19:21:48 UTC; 13min ago
 Main PID: 12849 (apache2)
   CGroup: /system.slice/apache2.service
           ├─12849 /usr/sbin/apache2 -k start
           ├─12850 /usr/sbin/apache2 -k start
           └─12852 /usr/sbin/apache2 -k start

Sep 05 19:21:48 apache systemd[1]: Starting The Apache HTTP Server...
Sep 05 19:21:48 apache systemd[1]: Started The Apache HTTP Server.

Como puede ver en este resultado, el servicio parece haberse iniciado correctamente. Sin embargo, la mejor manera de probar esto es solicitar una página de Apache.

Puede acceder a la página de destino predeterminada de Apache para confirmar que el software se está ejecutando correctamente a través de su dirección IP. Si no conoce la dirección IP de su servidor, puede obtenerla de diferentes maneras desde la línea de comandos.

Intente escribir esto en el símbolo del sistema de su servidor:

hostname -I

Recibirá algunas direcciones separadas por espacios. Puede probar cada uno en su navegador web para ver si funcionan.

Una alternativa es usar la curlherramienta, que debería brindarle su dirección IP pública tal como se ve desde otra ubicación en Internet.

Primero, instale curlusando apt:

sudo apt install curl

Luego, use curlpara recuperar icanhazip.com usando IPv4:

curl -4 icanhazip.com

Cuando tenga la dirección IP de su servidor, ingrésela en la barra de direcciones de su navegador:

http://your_server_ip

Debería ver la página web predeterminada de Debian 9 Apache:

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

Paso 4: Administrar el proceso de Apache

Ahora que tiene su servidor web en funcionamiento, repasemos algunos comandos básicos de administración.

Para detener su servidor web, escriba:

sudo systemctl stop apache2

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

sudo systemctl start apache2

Para detener y volver a iniciar el servicio, escriba:

sudo systemctl restart apache2

Si simplemente está realizando cambios de configuración, Apache a menudo puede volver a cargar sin perder las conexiones. Para hacer esto, use este comando:

sudo systemctl reload apache2

De forma predeterminada, Apache está configurado para iniciarse automáticamente cuando se inicia el servidor. Si esto no es lo que desea, deshabilite este comportamiento escribiendo:

sudo systemctl disable apache2

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

sudo systemctl enable apache2

Apache ahora debería iniciarse automáticamente cuando el servidor se inicie de nuevo.

Al usar el servidor web Apache, puede usar hosts virtuales (similares a los bloques de servidor en Nginx) para encapsular los detalles de configuración y alojar más de un dominio desde un solo servidor. Configuraremos un dominio llamado ejemplo.com , pero debe reemplazarlo con su propio nombre de dominio .

Apache en Debian 9 tiene un bloque de servidor habilitado de forma predeterminada que está configurado para entregar documentos desde el /var/www/htmldirectorio. Si bien esto funciona bien para un solo sitio, puede volverse difícil de manejar si aloja varios sitios. En lugar de modificar /var/www/html, vamos a crear una estructura de directorio dentro /var/wwwde nuestro sitio example.com , dejándolo /var/www/htmlcomo el directorio predeterminado que se atenderá si la solicitud de un cliente no coincide con ningún otro sitio.

Cree el directorio para ejemplo.com de la siguiente manera, usando la -pmarca para crear los directorios principales necesarios:

sudo mkdir -p /var/www/example.com/html

A continuación, asigne la propiedad del directorio con la $USERvariable ambiental:

sudo chown -R $USER:$USER /var/www/example.com/html

Los permisos de sus raíces web deberían ser correctos si no ha modificado su unmaskvalor, pero puede asegurarse escribiendo:

sudo chmod -R 755 /var/www/example.com

Dupdo

Luego, crea una index.htmlpágina de muestra usando nanoo tu editor favorito:

nano /var/www/example.com/html/index.html

En el interior, agregue el siguiente código HTML de muestra:/var/www/ejemplo.com/html/index.html

<html>
    <head>
        <title>Welcome to Example.com!</title>
    </head>
    <body>
        <h1>Success!  The example.com virtual host is working!</h1>
    </body>
</html>

Guarde y cierre el archivo cuando haya terminado.

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.confdirectamente, hagamos uno nuevo en :/etc/apache2/sites-available/example.com.conf

sudo nano /etc/apache2/sites-available/example.com.conf

Pegue el siguiente bloque de configuración, que es similar al predeterminado, pero actualizado para nuestro nuevo directorio y nombre de dominio:/etc/apache2/sitios-disponibles/ejemplo.com.conf

<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Tenga en cuenta que hemos actualizado DocumentRoota nuestro nuevo directorio y ServerAdmina un correo electrónico al que puede acceder el administrador del sitio example.com . También hemos agregado dos directivas: ServerName, que establece el dominio base que debe coincidir con 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 a2ensiteherramienta:

sudo a2ensite example.com.conf

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

sudo a2dissite 000-default.conf

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

sudo apache2ctl configtest

Debería ver el siguiente resultado:

OutputSyntax OK

Reinicie Apache para implementar sus cambios:

sudo systemctl restart apache2

Apache ahora debería estar sirviendo su nombre de dominio. Puede probar esto navegando a , donde debería ver algo como esto:http://example.com

Ejemplo de host virtual de Apache

Paso 6: familiarizarse con los archivos y directorios importantes de Apache

Ahora que sabe cómo administrar el propio servicio de Apache, debe dedicar unos minutos a familiarizarse con algunos directorios y archivos importantes.

Contenido

  • /var/www/html: El contenido web real, que de forma predeterminada solo consta de la página predeterminada de Apache que vio anteriormente, se sirve fuera del /var/www/htmldirectorio. 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 realizar 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 escuchará Apache. De forma predeterminada, Apache escucha en el puerto 80 y, además, escucha en el puerto 443 cuando se habilita un módulo que proporciona capacidades SSL.
  • /etc/apache2/sites-available/: el directorio donde se pueden almacenar los hosts virtuales por sitio. Apache no usará los archivos de configuración que se encuentran en este directorio a menos que estén vinculados al sites-enableddirectorio. Por lo general, toda la configuración del bloque del servidor se realiza en este directorio y luego se habilita vinculando al otro directorio con el a2ensitecomando.
  • /etc/apache2/sites-enabled/: el directorio donde se almacenan los hosts virtuales habilitados por sitio. Por lo general, estos se crean vinculando los archivos de configuración que se encuentran en el sites-availabledirectorio con la extensión a2ensite. Apache lee los archivos de configuración y los enlaces que se encuentran 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-availablesites-enabled, pero se utilizan para almacenar fragmentos de configuración que no pertenecen a un host virtual. Los archivos en el conf-availabledirectorio se pueden habilitar con el a2enconfcomando y deshabilitar con el a2disconfcomando.
  • /etc/apache2/mods-available//etc/apache2/mods-enabled/: Estos directorios contienen los módulos disponibles y habilitados, respectivamente. Los archivos que terminan en .loadcontienen fragmentos para cargar módulos específicos, mientras que los archivos que terminan en .confcontienen la configuración de esos módulos. Los módulos se pueden habilitar y deshabilitar usando el comando a2enmody .a2dismod

Registros del servidor

  • /var/log/apache2/access.log: De manera 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 LogLeveldirectiva 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 usar para crear una experiencia más rica.