Sitio-web-vps

Alojamiento

Prologo: (Este articulo seguiré los pasos de una instalación en un VPS de dos instancias de WordPress con un servidor Proxy-Inversor, todos los procesos se efectuaran con Docker-Compose. ¡El objetivo! La autogestión) .

 

Alojamiento del sitio-Web.(VPS)

. ¿Cuando tengamos contratado el VPS? Pasaremos a llamarlo my-VPS, el proveedor del servicio nos proporciona las características del my-VPS de estos necesitamos la IP ***.***.***.*** , la contraseña inicial ******* y usuario:root para el acceso por ssh con el terminal de nuestro my-portatil en este caso linux.

Acceso al my-VPS:

  • In: root@juan-SATELLITE-C55-C-1JM:/# ssh root@***.***.***.***
  • In: root@***.***.***.*** password: ********
  • Out: Welcome to Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-72-generic x86_64)
  • In: root@ubuntu:#

Interrogar a Ubuntu:

  • In: root@ubuntu:/# lsb_release -a

-. Nos encontramos en my-VPS en su sitema operativo (Ubuntu) y listo para combertilo en nuestro sitio-Web. ¡Que tenemos que hacer! pasar a instalar Docker-Compose y la instancia WordPress y de esta forma obtener my-sitio-wordpress.

 

Instalar-Docker

Nota: Docker necesita unos requisitos para realizar su instalación:

Actualizar la lista de paquetes existente:

  • In: root@ubuntu:/# apt update

Permitir el apt uso de un repositorio sobre HTTPS:

  • In: root@ubuntu:/# apt install apt-transport-https ca-certificates curl software-properties-common

Agregue la clave GPG oficial de Docker:

  • In: root@ubuntu:/# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –

Agregue el repositorio de Docker a las fuentes de apt :

  • In: root@ubuntu:/# add-apt-repository «deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable»

Actualiza los paquetes de Docker del repositorio recién agregado:

  • In: root@ubuntu:/# apt update

Instalación desde el repositorio de Docker en lugar del repositorio Ubuntu:

  • In: root@ubuntu:/# apt-cache policy docker-ce
  • docker-ce:
  • Installed: (none)
  • Candidate: 5:24.0.6-1~ubuntu.20.04~focal
  • Version table:
  • *** 5:24.0.6-1~ubuntu.20.04~focal 500

Nota:Docker-ce no está instalado, pero la opción más viable para la instalación es del repositorio de Docker para Ubuntu 20.04 ( focal).

Por último instalar Docker :

  • In: root@ubuntu:/# apt install docker-ce

Comprobar que version:

  • In: root@ubuntu:/# docker version
  • Client: Docker Engine – Community
  • Version: 24.0.6

Comprobar que funcione:

  • In: root@ubuntu:/# systemctl status docker
  • ● docker.service – Docker Application Container Engine
  • Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
  • Active: active (running) since Mon 2023-09-24 17:32:10 UTC; 2min 30s ago

 

Instalar Docker-Compose:

DescargarDockerCompose:

  • In: root@ubuntu:/# curl -SL https://github.com/docker/compose/releases/download/v2.7.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

Aplicar permisos ejecutables al binario:

  • In: root@ubuntu:/# chmod +x /usr/local/bin/docker-compose

Crear un enlace simbólico :

  • In: root@ubuntu:/# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Verificar la instalación :

  • In: root@ubuntu:/# docker-compose –version
  • Out: Docker Compose version v2.7.0

Nota: Chequeamos que disponemos en my-VPS aparte de Ubuntu-Server-20.04, concretamente Docker-Compose, hemos verificado su instalación profundizamos un poco mas en ecosistema de contenedores.

Contenedores en funcionamiento:

  • In: root@ubuntu:/# docker ps
  • CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  • Ninguno funcionando.

Todos los Contenedores en funcionamiento o parados:

  • In: root@ubuntu:/# docker ps -a
  • CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  • Ninguno funcionando ni parados.

Listar Network Docker:

  • In: root@ubuntu:/# docker network ls
  • NETWORK ID NAME DRIVER SCOPE
  • 83ea7d28d246 bridge bridge local
  • cce70cd09574 host host local
  • af97d66a89c3 none null local

 

Proxy-Inverso-Nginx con Let’s Encrypt-SSL

. El objetivo de docker-Compose es la creación de Proxy-Inverso-Nginx con Let’s Encrypt con dos instancias de WordPress aclaremos algunos conceptos :

Que es ProxyInversor “reverse proxy”:

  • El servidor Proxy-inverso se situado entre el cliente y el Servidor-Web-VPS, la solicitudes van al Proxy-Inverso y este enviá esta al solicitud al Sitio-Web. El Proxy-Inverso se ubica dentro del VPS y al lado del los sitios-Web que tengamos, para que éste actúe como intermediario de todas las solicitudes web de los clientes.

Que es Let’s Encrypt:

  • Let’s Encrypt-ssl proporciona certificados gratuitos para el cifrado de Seguridad de Capa-Transporte, por medio de un proceso automatizado diseñado para eliminar el complejo proceso actual de creación manual, la validación, firma, instalación y renovación de los certificados de Sitios-Web seguros el objetivo es conseguir conexiones cifradas a World Wide Web, elimina el pago y tareas de renovación del certificado.

Que es WordPress:

  • WordPress es un sistema de gestión de contenidos CMS, va dirigido a la creación de cualquier tipo de sitio-web. Se a convertido en la principal herramienta para la creación de sitio-web comerciales. Es de código abierto que sirve para construir, modificar y mantener cualquier sitio-web.

 

Red-Externa

. Necesitamos crear una Red-Externa fuera de Docker-Compose y conectar nuestro contenedor Nginx-Proxy a esta Red-Externa y necesitamos definir esta Red-Externa en docker-compose.yml de esta manera, Docker-Compose asigna los contenedores que crea a esta Red-Externa.

Creamos Red-Externa:

  • In: root@ubuntu:/# docker network create nginx-proxy

Listar Network Docker:

  • In: root@ubuntu:/# docker network ls
  • 50c6673068e6 nginx-proxy bridge local

Configuración de una red determinada:

  • In: root@ubuntu:/# docker network inspect nginx-proxy

Proxy-Inverso

Creamos la arquitectura de carpetas, ficheros:

  • In: root@ubuntu:/# mkdir Proxy-WordPress && cd Proxy-WordPress
  • In: root@ubuntu:/Proxy-WordPress# mkdir Proxy-Inverso && mkdir Sitios-Web
  • In: root@ubuntu:/Proxy-WordPress# ls
  • Proxy-Inverso Sitios-Web

Diagrama del proyecto:

Nota: En la carpeta “ Proxy-Inverso” nos situamos en ella crearemos el fichero docker-compose.yml con nano. tenemos que tener instalado Docker, Docker-Compase total mente funcional.

Creamos el fichero nano docker-compose.yml:

  • In: root@ubuntu:/Proxy-WordPress/Proxy-Inverso# nano docker-compose.yml
  • In: root@ubuntu:/Proxy-WordPress/Proxy-Inverso# ls
  • Out: docker-compose.yml

-. Creamos un servicio basado en la image: jwilder/nginx-proxy, exponemos los puertos 80 y 443 estos puertos se reenvían al host, los contenedores que crearemos en esta Server-VPS el único que tendra salida al exterior “Internet” sera el nginx-proxy. ¡Como se realiza esto! Con el volumen: /var/run/docker.sock esto permite que el nginx-proxy sea sensible a los eventos de Docker en el servidor host y modifique automáticamente la configuración del proxy podemos agregar sitios-web al host sin tener que reconfigurar manualmente el nginx-proxy.

 

Let’s Encrypt

-. Lo siguiente Let’s Encrypt que es el complemento de nginx-proxy, nos proporciona los certificado ssl usaremos la image:docker-letsencrypt-nginx-proxy-companion procedentes de Github .

-. Este servicio crea una solicitud ssl automáticamente cada nuevo sitio-Web, que conectemos al host, ¡como conseguirlo! Debemos escuchar los eventos de Docker en el host usaremos el volumen:/var/run/docker.sock:/var/run/docker.sock:ro como comparte volumen con nginx-proxy necesitamos la variable de entorno NGINX_PROXY_CONTAINER.

Archivo completo docker-compose.yml concretamente Proxy-InversoNginx con Let’s Encrypt:

In: root@ubuntu:/Proxy-WordPress/Proxy-Inverso# nano docker-compose.yml

  1. version: «3.8»
  2. services:
  3.    nginx-proxy:
  4. image: jwilder/nginx-proxy
  5. container_name: nginx-proxy
  6. ports:
  7. – «80:80»
  8. – «443:443»
  9. volumes:
  10. – /var/run/docker.sock:/tmp/docker.sock:ro
  11. – letsencrypt-certs:/etc/nginx/certs
  12. – letsencrypt-vhost-d:/etc/nginx/vhost.d
  13. – letsencrypt-html:/usr/share/nginx/html
  14.    letsencrypt-proxy:
  15.       image: jrcs/letsencrypt-nginx-proxy-companion
  16.       container_name: letsencrypt-proxy
  17.       volumes:
  18.          – /var/run/docker.sock:/var/run/docker.sock:ro
  19.          – letsencrypt-certs:/etc/nginx/certs
  20.          – letsencrypt-vhost-d:/etc/nginx/vhost.d
  21.          – letsencrypt-html:/usr/share/nginx/html
  22.       environment:
  23.          – NGINX_PROXY_CONTAINER=nginx-proxy
  24.    networks:
  25.       default:
  26.          name: nginx-proxy
  27.          external: true
  28.    volumes:
  29.       letsencrypt-certs:
  30.       letsencrypt-vhost-d:
  31.       letsencrypt-html:

Nota: Un dato a destacar es la conexión de estos dos servicios; a la Network-nginx-proxy que es la Red-Externa que creamos en primer lugar, es la que se encuentra fuera de este archivo docker-compose.yml.

-. Para lanzar docker-compose nos situamos en la carpeta del proyecto /Proxy-WordPress/Proxy-Inversoy ejecutamos docker-compose up -d.

Lazar el código del proyecto al sevidorhost:

  • In: root@ubuntu:/Proxy-WordPress/Proxy-Inverso# docker-compose up -d

Contenedores en ejecución:

  • In: root@ubuntu:/Proxy-WordPress/Proxy-Inverso# docker-compose ps

 

Operaciones que podemos necesitar en el trascurso de nuestro proyecto:

Detener la instancia :

  • In: root@ubuntu:/Proxy-WordPress/Proxy-Inverso# docker-compose stop

Arrancar de nuevo la instancia :

  • In: root@ubuntu:/Proxy-WordPress/Proxy-Inverso# docker-compose up -d

Elimina los contenedores y la red predeterminada, conserva su base de datos:

  • In: root@ubuntu:/Proxy-WordPress/Proxy-Inverso# docker-compose down

Elimina los contenedores, la red predeterminada y la base de datos:

  • In: root@hp8100:/compose-wordpress# docker-compose down –volumes

Una imagen interesante:

-. Esta imagen la obtenemos de ejecutar docker network inspect nginx-proxy y apreciamos que la diferencias con la ejecución anterior cuando creamos la Red-Exterior que se ha agregado, los contenedores «nginx-proxy»con la IP «172.18.0.2/16» y la «letsencrypt-proxy» con la IP «172.18.0.3/16» esto quiere decir que los contenedores que acabamos de crear; se han unido correctamente Red-Exterior. ¡objetivo cumplido!

 

Sitio-Web-WerdPress

. Pasemos a la creación del sitio-Web este proyecto costa con dos servicios; un servidor-MySQL y otro servicio para la aplicación WordPress. Creamos con nano el fichero docker-compose.yml en la careta /Proxy-WordPress/Sitios-Web/Sitio-Web1.

Nos situamos en la carpeta:

  • In: root@ubuntu:/# cd /Proxy-WordPress/Sitios-Web/Sitio-Web1

Creamos el archivo:

  • In: root@ubuntu:/Proxy-WordPress/Sitios-Web/Sitio-Web1# nano docker-compose.yml

Nota: El testo que introducimos en el editor-nano, concretamente en el fichero docker-compose.yml es el siguiente:

  1. version: «3.8»
  2. services:
  3.    db_node_domain:
  4.       image: mysql:5.7
  5.       volumes:
  6.          – db_data:/var/lib/mysql
  7.       restart: unless-stopped
  8.       environment:
  9.          MYSQL_ROOT_PASSWORD: password
  10.          MYSQL_DATABASE: wordpress
  11.          MYSQL_USER: wordpress
  12.          MYSQL_PASSWORD: password
  13.       container_name: wordpress_db
  14.    wordpress:
  15.       depends_on:
  16.          – db_node_domain
  17.       image: wordpress:latest
  18.       expose:
  19.          – 80
  20.       ports:
  21.          – 80:80
  22.       restart: unless-stopped
  23.       environment:
  24.          VIRTUAL_HOST: moreluz-wb.com
  25.          LETSENCRYPT_HOST: moreluz-wb.com
  26.          WORDPRESS_DB_HOST: db_node_domain:3306
  27.          WORDPRESS_DB_USER: wordpress
  28.          WORDPRESS_DB_PASSWORD: password
  29.       container_name: wordpress
  30.    volumes:
  31.       db_data:
  32.    networks:
  33.       default:
  34.          name: nginx-proxy
  35.          external: true

Lazar el código del proyecto al sevidor-host:

  • In: root@ubuntu:/Proxy-WordPress/Sitios-Web/Sitio-Web1# docker-compose up -d

Contenedores en ejecución:

  • In: root@ubuntu:/Proxy-WordPress/Sitios-Web/Sitio-Web1# docker-compose ps

Inspeccionamos la Red nginx-proxy “Red-Externa”:

  • In: root@ubuntu:/# docker network inspect nginx-proxy

-. En la imagen apreciamos las dos nuevas instancias agregadas, la primera «wordpress_db , 172.18.0.4/16» y la segunda «wordpress , 172.18.0.5/16» a la llamada Red-Externa (network-nginx-proxy) .

Apuntar el Dominio:

-. El nginx-proxy tiene expuesto al exterior el puerto 80 y 443 lo que necesitamos para apuntar el dominio y nginx-proxy realice su cometido que consiste en recibir las solicitudes de los clientes las mande al sitio-web a trabes de la llamada Red-Externa (network-nginx-proxy) .

 

Recapitulando:

  • Empezamos con la implementación en el servidor VPS de Docker y Docker-Compose con esto podemos crear dos instancias Proxy-Inverso y WordPress; la primera instancia con dos servicios el Proxy-Reverso y su complemento Let’s Encrypt, la segunda instancia con los servicios Mysql y WordPress y comprobamos que los servicios están conectados a red-externa (network-nginx-proxy) .

Referencias: moreluz.entorno

Etiquetada como

Deja una respuesta

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