Cómo instalar y configurar un servidor web Apache en Linux

Instalación y configuración de un servidor web Apache en Linux

Apache es uno de los servidores web más populares en el mundo por su robustez, flexible configuración y potente rendimiento. Esta guía explica cómo instalar y configurar un servidor web Apache en Linux.

Instalación de Apache

La instalación de Apache varía dependiendo del sistema de gestión de paquetes de su distribución de Linux. En sistemas basados en Debian y Ubuntu, el paquete se llama apache2, mientras que en sistemas Red Hat, CentOS y Fedora, el paquete se denomina httpd.


# Ubuntu/Debian
sudo apt update
sudo apt install apache2
# Red Hat/CentOS/Fedora
sudo yum install httpd

Inicio de Apache

Una vez instalado el servidor, puede iniciarse utilizando el comando de systemd «systemctl». La habilitación del servicio permitirá su inicio automático al reiniciar el sistema.


# Ubuntu/Debian
sudo systemctl start apache2
sudo systemctl enable apache2
# Red Hat/CentOS/Fedora
sudo systemctl start httpd
sudo systemctl enable httpd

Configuración básica de Apache

La configuración de Apache es flexible y extensible, con una estructura de archivos modular. Los archivos de configuración suelen estar ubicados en /etc/apache2 en Ubuntu y /etc/httpd en CentOS.

Archivo de configuración principal de Apache

El archivo de configuración principal en Ubuntu es /etc/apache2/apache2.conf y en CentOS es /etc/httpd/conf/httpd.conf. Este archivo define la configuración global de Apache incluyendo los módulos activados, los ajustes de rendimiento y las ubicaciones de otros archivos de configuración.


#Para abrir el archivo de configuración en Ubuntu
sudo nano /etc/apache2/apache2.conf
#Para abrir el archivo de configuración en CentOS
sudo nano /etc/httpd/conf/httpd.conf

Crear un host virtual

Los hosts virtuales permiten a Apache servir diferentes sitios web en la misma máquina. Cada host virtual tiene su propio archivo de configuración.


#En Ubuntu, los archivos de host virtual se guardan en /etc/apache2/sites-available/
sudo nano /etc/apache2/sites-available/mywebsite.conf
#En CentOS, se guardan en /etc/httpd/conf.d/
sudo nano /etc/httpd/conf.d/mywebsite.conf

Establecer la configuración básica de su host virtual:


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

Donde:
– ServerName y ServerAlias definen el nombre de dominio del sitio web.
– DocumentRoot especifica la ubicación de los archivos del sitio web.
– ErrorLog y CustomLog definen los archivos de registro de errores y accesos.

Configuraciones avanzadas

Apache puede ser configurado para manejar diferentes tipos de contenido, restringir el acceso, habilitar HTTPS y más.

Configuración de un módulo de Apache

Apache utiliza módulos para manejar diferentes tipos de contenido. Por ejemplo, para servir páginas PHP, necesita el módulo PHP. Para habilitar un módulo en Ubuntu, use el comando a2enmod:


sudo a2enmod php7.2

En CentOS, se habilitan los módulos modificando el archivo de configuración de Apache.

Restricción de acceso

Apache puede restringir el acceso a directorios específicos utilizando el archivo .htaccess. Asegúrate de que Apache esté configurado para leer estos archivos (AllowOverride All) y luego crea un archivo .htaccess en el directorio que deseas proteger:


AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user

Aquí, .htpasswd es un archivo que contiene los nombres de usuario y las contraseñas codificadas. Se puede crear utilizando el comando htpasswd.

Habilitación de HTTPS

HTTPS requiere un certificado SSL. Puedes comprarte uno o utilizar Let’s Encrypt para obtener un certificado gratuito.


# Instalar Certbot (cliente Let’s Encrypt) en Ubuntu
sudo apt-get install python-certbot-apache
# Obtener y configurar el certificado SSL
sudo certbot --apache -d www.mywebsite.com

Conclusión

Apache es una herramienta poderosa para servir contenido web. Su flexible configuración y la capacidad de adaptarse a diferentes tipos de contenido, junto con su robusto rendimiento, lo hacen una opción popular para administradores de sistemas. Si bien la configuración básica de un servidor Apache es relativamente simple, la capacidad de personalizarlo para que se ajuste a tus necesidades específicas es donde Apache realmente brilla.