Instalación y configuración del servidor web (Nginx/Apache)
1. ¿Qué es un servidor web?
Hoy vamos a hablar sobre Nginx y Apache, dos de los servidores web más populares. Al final de esta lección, tu servidor podrá saludar con orgullo a usuarios desprevenidos en internet.
Antes de lanzarnos a los comandos, vamos a entender qué es exactamente lo que queremos lograr. Un servidor web es un programa que recibe solicitudes HTTP (por ejemplo, cuando un usuario escribe la dirección de un sitio en el navegador), las procesa y responde con el contenido correspondiente (una página HTML, un archivo o incluso un error como «404 Not Found»). Sirve como enlace entre los usuarios y tu contenido.
Nginx vs Apache: la batalla de los servidores web
Si Nginx y Apache se encontraran en un café, entonces:
- Nginx pediría un latte de lavanda y resolvería todo de forma asíncrona: «Dame tu solicitud y en un minuto te devuelvo el archivo, ¡sin distracciones!».
- Apache, por otro lado, sería más tradicional, crearía un hilo para cada tarea y respondería educadamente, aunque más lento con un gran volumen de solicitudes.
Diferencias breves:
Característica | Nginx | Apache |
---|---|---|
Arquitectura | Asíncrona | Orientada a hilos |
Rendimiento | Alta bajo grandes cargas | Adecuado para dinámicas (PHP/Perl) |
Simplicidad | Fácil de configurar pero con sus matices | Más universal, pero más complejo |
¿Cuándo elegir cuál?
- Si tu sitio es un conjunto de archivos estáticos (por ejemplo, un blog o una landing page), entonces Nginx es tu amigo.
- Si trabajas con aplicaciones web dinámicas (por ejemplo, un sitio en PHP), Apache te brindará más flexibilidad.
2. Instalación del servidor web
Ahora que ya entendiste por qué esto es necesario, es hora de empezar con la instalación. Vamos a explorar cómo instalar tanto Nginx como Apache. Escoge el que más te guste, o instala ambos para sentirte todo un profesional.
Instalación de Nginx
Actualizar la lista de paquetes:
sudo apt-get update
Instalar Nginx:
sudo apt-get install nginx
Verificar el estado del servidor:
sudo systemctl status nginx
Si todo está en orden, verás algo como:
active (running)
.Revisar la página predeterminada: Abre un navegador e ingresa
http://localhost
. Deberías ver la página de bienvenida de Nginx, lo que confirma que la instalación fue exitosa.
Instalación de Apache
Actualizar la lista de paquetes:
sudo apt-get update
Instalar Apache:
sudo apt-get install apache2
Verificar el estado del servidor:
sudo systemctl status apache2
Al igual que Nginx, el estado debería ser «active (running)».
Revisar la página predeterminada: Abre en el navegador
http://localhost
. Ahora deberías ver la página por defecto de Apache.
3. Configuración básica del servidor web
¿Dónde están escondidas las configuraciones?
En Nginx, el archivo principal de configuración está ubicado en:
/etc/nginx/nginx.conf
En Apache:
/etc/apache2/apache2.conf
Intenta abrir los archivos de configuración utilizando tu editor favorito (por ejemplo, nano
):
sudo nano /etc/nginx/nginx.conf
Aquí empieza tu primera aventura: es posible que ahora no entiendas nada porque los archivos de configuración parecen hechizos de un juego de rol. Pero no te preocupes, lo desglosaremos.
Inicio, detención y reinicio de servidores
Si sabes cómo manejar servicios en Linux, entonces ya tienes "la mitad del trabajo hecho". Estas son las principales comandos para manejar nuestros generadores web:
Para Nginx:
sudo systemctl start nginx # Inicio
sudo systemctl stop nginx # Detención
sudo systemctl restart nginx # Reinicio
sudo systemctl reload nginx # Recarga de configuración
Para Apache:
sudo systemctl start apache2
sudo systemctl stop apache2
sudo systemctl restart apache2
sudo systemctl reload apache2
Comprobación de la configuración
Antes de reiniciar el servidor, siempre verifica si cometiste errores:
Para Nginx:
sudo nginx -t
Para Apache:
sudo apachectl configtest
Cualquier error en la configuración será mostrado - no podrás romper el servidor por accidente.
4. Demostración: lanzamos nuestro primer sitio
Ahora haremos lo que a los desarrolladores web les encanta – crearemos un sitio con un nombre increíblemente creativo «Hello Server».
Para Nginx
Creando el directorio para el sitio:
sudo mkdir -p /var/www/hello sudo nano /var/www/hello/index.html
Escribe lo siguiente en el archivo (sí, todo lo genial es simple):
<h1>Hello, Nginx Server!</h1>
Configurando la configuración:
sudo nano /etc/nginx/sites-available/hello
Aquí tienes un ejemplo de configuración simple:
server { listen 80; server_name hello.local; root /var/www/hello; index index.html; location / { try_files $uri $uri/ =404; } }
Activación de la configuración:
sudo ln -s /etc/nginx/sites-available/hello /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx
Agrega un registro en
/etc/hosts
para configurar el nombre de dominiohello.local
en tu máquina local:127.0.0.1 hello.local
Verifica el sitio en el navegador: http://hello.local.
El archivo hosts contiene un mapeo de direcciones IP a nombres de dominio. Es tu servidor DNS local. Este archivo está presente en todos los sistemas operativos. En Windows también está disponible en la ruta C:\Windows\System32\drivers\etc\hosts
Para Apache
Creando el directorio:
sudo mkdir -p /var/www/hello sudo nano /var/www/hello/index.html
Llena el archivo:
<h1>Hello, Apache Server!</h1>
Creando la configuración del host virtual:
sudo nano /etc/apache2/sites-available/hello.conf
Aquí tienes un ejemplo de configuración:
<VirtualHost *:80> ServerName hello.local DocumentRoot /var/www/hello <Directory /var/www/hello> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
Activación de la configuración:
sudo a2ensite hello.conf sudo systemctl reload apache2
Agrega un registro en
/etc/hosts
:127.0.0.1 hello.local
Verifica el funcionamiento: http://hello.local.
Después de la lección de hoy ya estás listo para instalar y configurar de forma independiente un servidor web principal. Un poco más de esfuerzo – y podrás desplegar sitios y aplicaciones completos que ya no parecen un dibujo infantil. Por ahí cerca se esconde HTTPS, pero hablaremos de eso más adelante.
GO TO FULL VERSION