Verdaderamente estoy muy contento de haberme encontrado con docker en el camino. ¿La entrada no se trataba de Nginx? SI! Justamente la entrada se denomina Primeros pasos con Nginx como Webserver y la verdad es que para probar no hay nada mejor que docker ya que con simples pasos podemos tener instalado un servidor web con nginx, probar todo lo que queramos probar y luego sin mas hacer desaparecer el servidor sin dejar rastros en nuestra pc ni tampoco tener problemas de funcionamiento por algo que quedo mal instalado, mal borrado o mal lo que sea….

nginx

Si aun no tenes #docker en tu maquina con gnu/linux te muestro como lo instale yo sobre #Ubuntu #Focal 20.04 en este —>Link<—-

Una vez instalado docker tener un servidor web es tan sencillo como ejecutar este comando:

docker run -d -p 80:80 nginx

Listo!

Ya tenes un servidor web nginx sobre docker, así de sencillo y fácil con una configuración básica que te permite ir conociéndolo como indicamos en esta entrada que denominamos Primeros pasos con Nginx como Webserver

nginx
Ingresando en localhost veremos su funcionamiento

Como verán, en la imagen anterior tenemos la pagina de bienvenida de nginx un poquin modificada ja!

Si en un comando pongo docker ps podremos ver que nuestro contenedor esta vivito y online!

docker ps
usando docker ps

Ahora que tenemos el Container Id (o id del contenedor) podemos ingresar a el con una consola:

sudo docker exec -it 08065b6848e0 bash
ingresando al contenedor

Una vez dentro vamos a actualizar si quisiéramos e instalar nano ya que la imagen de nginx viene con lo justo y necesario como corresponde.

apt-get install nano

Luego de instalar nano, vamos a ver algunas cosas:

Iniciar Parar y Reiniciar Nginx

service nginx start | stop | restart

Para saber el estado del servicio

service nginx status 

La configuración básica se encuentra en el archivo: /etc/nginx/nginx.conf

Al emplear el servidor web Nginx, se pueden utilizar bloques de servidor (similares a hosts virtuales de Apache) para encapsular los detalles de la configuración y alojar más de un dominio desde un único servidor. Configuraremos un dominio llamado dominio, pero deberíamos cambiarlo por nuestro propio nombre de dominio.

Si querés probar usar tu propio servidor de manera online te dejo un link que te da 100 dolares para que pruebes https://m.do.co/c/2976779cc979

Es conveniente crear por aca dominio esta carpeta:

sudo mkdir -p /var/www/dominio/html

Luego vamos a generar una variable de entorno para el tema permisos:

sudo chown -R $USER:$USER /var/www/dominio/html

Luego damos permisos:

sudo chmod -R 755 /var/www/dominio

Vamos a proceder a crear un pequeño archivo para darnos la bienvenida a cada dominio y asi practicar:

nano /var/www/your_domain/html/index.html
<html>
    <head>
        <title>Bienvenido a tu Dominio!</title>
    </head>
    <body>
        <h1>Felicitaciones! Este bloque aprendido en https://luiszambrana.com.ar se encuentra funcionando</h1>
    </body>
</html>

Guardamos los cambios! y ahora para que Nginx presente este contenido, es necesario crear un bloque de servidor con las directivas correctas. En vez de modificar el archivo de configuración predeterminado directamente el cual les mostre arriba al comienzo de esta entrada, crearemos uno nuevo en /etc/nginx/sites-available/dominio

sudo nano /etc/nginx/sites-available/dominio

En su interior vamos a poner este contenido:

server {
        listen 80;
        listen [::]:80;

        root /var/www/dominio/html;
        index index.html index.htm index.nginx-debian.html;

        server_name dominio www.dominio;

        location / {
                try_files $uri $uri/ =404;
        }
}

Luego de guardar los cambios crearemos un enlace simbólico ln entre este archivo y el directorio sites-enabled, en el cual Nginx obtiene lecturas durante el inicio:

sudo ln -s /etc/nginx/sites-available/dominio /etc/nginx/sites-enabled/

Ahora contamos con dos bloques de servidor habilitados y configurados para responder a las solicitudes conforme a las directivas listen y server_name

dominio: el cual responderá a las solicitudes de dominio y www.dominio.

default: responderá a cualquier solicitud en el puerto 80 que no coincida con los otros dos bloques.

Cuando empezamos a agregar dominios podemos tener problemas con la memoria usada por eso es que vamos a modificar un poco el archivo /etc/nginx/nginx.conf

sudo nano /etc/nginx/nginx.conf

Primero buscaremos la linea #server_names_hash_bucket_size y quitaremos el # (descomentaremos) para que quede algo asi:

server_names_hash_bucket_size 64;

Guardamos la configuración de este archivo!

Otro comando útil de Nginx es para comprobar los errores de sintaxis ya que a veces solemos sin querer copiar de mas etc.

sudo nginx -t

Si esta todo bien vamos a ejecutar el siguiente comando para recargar los cambios (comando que vimos al principio):

sudo systemctl restart nginx

Si tenemos el dominio verdadero funcionando podemos comprobarlo con el navegador fácilmente, de lo contrario podemos editar el archivo host y poner que el dominio equivale a la ip local donde tenemos montado el docker.

Para que tengas en cuenta hay un archivo de log donde mirar posibles problemas:

/var/log/nginx/error.log

y dos de los mas importantes:

/etc/nginx/sites-available/

Directorio en el que se pueden guardar bloques de servidor por sitio. Nginx no utilizará los archivos de configuración de este directorio a menos que estén vinculados al directorio sites-enabled. Normalmente, toda la configuración del bloque de servidor se realiza en este directorio y luego se habilita estableciendo un vínculo con el otro directorio.

/etc/nginx/sites-enabled/

Directorio en el que se almacenan los bloques de servidor habilitados por sitio. Normalmente, estos se crean estableciendo vínculos con los archivos de configuración del directorio sites-available.

Espero que esta entrada que denomine Primeros pasos con Nginx como Webserver les haya servidor!

Recuerden que pueden stopear el docker y eliminarlo y su maquina queda impecable como nueva nunca taxi!

comandos docker listar stopear y eliminar
Print Friendly, PDF & Email
Share:

4 comments

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *