Apache#
Apache es un servidor web de código abierto y multiplataforma, uno de los más usados del mundo junto a nginx. Escucha por defecto en el puerto 80 (HTTP) y en el 443 (HTTPS), funciona por módulos y es compatible con varios lenguajes de programación como PHP, Python, Perl, ...
En Debian/Ubuntu el paquete se llama apache2, el contenido web por defecto está en /var/www/html y la configuración en /etc/apache2/:
sites-available/ los sitios configurados (disponibles).
sites-enabled/ los sitios activos: son enlaces simbólicos a los anteriores, que se crean y borran con
a2ensiteya2dissite.Los módulos se activan igual con
a2enmodya2dismod.
Caso práctico: Apache#
Instalamos el servidor de Apache:
#Primero actualizamos
sudo apt update
#Instalamos apache
sudo apt install apache2
#podemos verificar si se ha instalado
systemctl status apache2
Abre un navegador web y visita la dirección IP de tu servidor, es decir http://tu_direccion_ip. Verás la página por defecto (el sitio 000-default, que sirve /var/www/html):
Para configurar un nuevo sitio web, crea un nuevo archivo de configuración en sites-available/, crea el sitio llamado tunombre.com, es decir /etc/apache2/sites-available/tunombre.conf:
<VirtualHost *:80>
ServerAdmin webmaster@tunombre.com
ServerName tunombre.com
ServerAlias www.tunombre.com
DocumentRoot /var/www/tunombre
<Directory /var/www/tunombre>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Un VirtualHost permite servir varios sitios web desde el mismo servidor: Apache elige uno u otro según el nombre con el que se le pide la página (ServerName o cualquiera de sus ServerAlias). DocumentRoot es la carpeta donde está el contenido del sitio, y los logs de accesos y errores quedan en /var/log/apache2/.
Habilitamos el sitio (crea el enlace simbólico en sites-enabled/):
sudo a2ensite tunombre.conf
Deshabilitar el sitio por defecto:
sudo a2dissite 000-default.conf
Creamos el directorio del sitio
sudo mkdir -p /var/www/tunombre
Comprobamos que la configuración no tiene errores y recargamos apache:
sudo apache2ctl configtest
sudo systemctl reload apache2
Añadimos la siguiente web sencilla en /var/www/tunombre/index.html
<!DOCTYPE html>
<html>
<head>
<title>Sitio Web tunombre</title>
</head>
<body>
<h1>Sitio Web tunombre</h1>
<p>Este es un sitio web de prueba.</p>
</body>
</html>
Como el nombre tunombre.com no existe en ningún DNS, para probar el sitio por su nombre añadimos esta línea al /etc/hosts de la máquina desde la que abrimos el navegador (si es la misma, usa 127.0.0.1):
IP_del_servidor tunombre.com www.tunombre.com
Visitando http://tunombre.com obtendremos: