CodeGym /Cursos /Docker SELF /Instalación y configuración del servidor web (Nginx/Apach...

Instalación y configuración del servidor web (Nginx/Apache)

Docker SELF
Nivel 7 , Lección 0
Disponible

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

  1. Actualizar la lista de paquetes:

    sudo apt-get update
    
  2. Instalar Nginx:

    sudo apt-get install nginx
    
  3. Verificar el estado del servidor:

    sudo systemctl status nginx
    

    Si todo está en orden, verás algo como: active (running).

  4. 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

  1. Actualizar la lista de paquetes:

    sudo apt-get update
    
  2. Instalar Apache:

    sudo apt-get install apache2
    
  3. Verificar el estado del servidor:

    sudo systemctl status apache2
    

    Al igual que Nginx, el estado debería ser «active (running)».

  4. 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
¡Importante!

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

  1. 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>
  2. 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;
        }
        }
  3. 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
    
  4. Agrega un registro en /etc/hosts para configurar el nombre de dominio hello.local en tu máquina local:

    127.0.0.1 hello.local
    
  5. Verifica el sitio en el navegador: http://hello.local.

¡Importante!

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

  1. Creando el directorio:

    sudo mkdir -p /var/www/hello
    sudo nano /var/www/hello/index.html
    

    Llena el archivo:

    <h1>Hello, Apache Server!</h1>
  2. 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>
  3. Activación de la configuración:

    sudo a2ensite hello.conf
    sudo systemctl reload apache2
    
  4. Agrega un registro en /etc/hosts:

    127.0.0.1 hello.local
    
  5. 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.

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION