A logo showing the text blog.marcnuri.com
English
Inicio»Operaciones»Clouding.io: Prestashop sobre Docker en servidor CentOS 7.0

Entradas Recientes

  • Fabric8 Kubernetes Client 7.2.0 está disponible!
  • Conectarse a un servidor MCP con JavaScript y AI SDK
  • Conectarse a un servidor MCP con JavaScript y LangChain.js
  • El Futuro de las Herramientas para Desarrolladores en la era de la IA
  • Conectarse a un servidor Model Context Protocol (MCP) con Java y LangChain4j

Categorías

  • Antiguo
  • Front-end
  • Go
  • Herramientas
  • Industria y negocios
  • Inteligencia Artificial
  • Java
  • JavaScript
  • Operaciones
  • Personal
  • Proyectos personales

Archivos

  • mayo 2025
  • abril 2025
  • marzo 2025
  • febrero 2025
  • enero 2025
  • diciembre 2024
  • noviembre 2024
  • agosto 2024
  • junio 2024
  • mayo 2024
  • abril 2024
  • marzo 2024
  • febrero 2024
  • enero 2024
  • diciembre 2023
  • noviembre 2023
  • octubre 2023
  • septiembre 2023
  • agosto 2023
  • julio 2023
  • junio 2023
  • mayo 2023
  • abril 2023
  • marzo 2023
  • febrero 2023
  • enero 2023
  • diciembre 2022
  • noviembre 2022
  • octubre 2022
  • agosto 2022
  • julio 2022
  • mayo 2022
  • marzo 2022
  • febrero 2022
  • enero 2022
  • diciembre 2021
  • noviembre 2021
  • octubre 2021
  • septiembre 2021
  • agosto 2021
  • julio 2021
  • diciembre 2020
  • octubre 2020
  • agosto 2020
  • junio 2020
  • mayo 2020
  • marzo 2020
  • febrero 2020
  • enero 2020
  • noviembre 2019
  • octubre 2019
  • julio 2019
  • diciembre 2018
  • agosto 2018
  • julio 2018
  • junio 2018
  • mayo 2018
  • marzo 2018
  • febrero 2018
  • noviembre 2017
  • octubre 2017
  • agosto 2017
  • julio 2017
  • enero 2017
  • julio 2016
  • enero 2016
  • diciembre 2015
  • noviembre 2015
  • diciembre 2014
  • marzo 2014
  • febrero 2011
  • junio 2008
  • mayo 2008
  • abril 2008
  • enero 2008
  • junio 2007
  • mayo 2007
  • abril 2007
  • marzo 2007

Clouding.io: Prestashop sobre Docker en servidor CentOS 7.0

2018-07-19 en Operaciones etiquetado CentOS / Clouding.io / Docker / Linux / PrestaShop / Esponsorizado / VPS por Marc Nuri | Última actualización: 2021-04-04

Introducción

Clouding.io es una empresa española que ofrece servicios de hosting en la nube, más concretamente servidores Cloud. Recientemente se pusieron en contacto conmigo para que pusiera a prueba sus VPS Cloud desplegando un servidor Linux con Docker y una instancia de Prestashop.

En este tutorial veremos cómo crear un nuevo servidor CentOS 7.0 desde la intuitiva interfaz de clouding.io y como instalar y configurar Docker-ce para el despliegue de una tienda virtual Prestashop. Para este último paso emplearemos una imagen Docker de Prestahsop y otra de MySQL para crear una base de datos exclusiva para la tienda.

Clouding.io

Despliegue del servidor

El primer paso será crear un nuevo servidor, para ello, desde nuestra cuenta accedemos a la sección servidores y presionamos sobre el botón ‘+’ para crear un nuevo servidor.

Deploy new Clouding.io server
Deploy new Clouding.io server

Desde esta pantalla elegiremos la distribución Linux de nuestra preferencia, en nuestro caso CentOS 7.0 (64 Bit) y las características del servidor. Para nuestra prueba hemos configurado un servidor con 2 VCores, 4 GiB de memoria RAM y 15 GiB de espacio en disco, no obstante, estos valores deben definirse en función del uso definitivo que se le vaya a dar al servidor.

Una vez confirmada nuestra selección volveremos al listado de servidores, dónde ya aparecerá el servidor que hemos creado.

Clouding.io new server ready
Clouding.io new server ready

Acceso al servidor

El acceso al servidor lo haremos a través de SSH. El usuario con el que podemos acceder es root, su contraseña está disponible en la pantalla de detalles del servidor.

Para acceder a los detalles del servidor, simplemente tenemos que pinchar en el nombre del servidor desde la pantalla anterior donde se mostraba el listado de servidores.

Clouding.io server details
Clouding.io server details

Docker

Instalando Docker-ce en CentOS 7

El primer paso para poder desplegar cualquier imagen de Docker en el servidor es instalar Docker-ce, para ello seguiremos la guía que hay disponible en su web.

En primer lugar debemos habilitar el repositorio, para ello debemos instalar algunas dependencias de Docker.

1yum install yum-utils device-mapper-persistent-data lvm2

El siguiente paso es añadir el repositorio estable de Docker-ce. Este es el repositorio que se utilizará siempre, incluso cuando queramos instalar builds de Docker del repositorio edge o test.

1yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
add docker-ce repository to yum
add docker-ce repository to yum

En este momento ya podemos instalar docker en el servidor:

1yum install docker-ce
docker ce version
docker ce version

Servicio Docker-ce en CentOS 7

Una vez termine el proceso de instalación correctamente ya podremos arrancar el servicio de docker:

1systemctl start docker

Finalmente, para que Docker arranque automáticamente si el servidor se reinicia habilitaremos el servicio:

1systemctl enable docker

Portainer

Una vez Docker ya se encuentra disponible en nuestra máquina, podemos proceder con el despliegue de algunos contenedores.

Una de las aplicaciones más utilizadas en Docker es Portainer, ya que permite la gestión de Docker a través de una intuitiva aplicación web.

Despliegue de Portainer

El primer paso para desplegar Portainer es crear un directorio que mapearemos como volumen en el contenedor de modo que si el contenedor se destruyese o recrease, Portainer no perdería sus datos.

1mkdir /opt/portainer

El siguiente paso es el despliegue del contenedor:

1docker run -d -p 9123:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /opt/portainer:/data portainer/portainer

El comando anterior desplegará la imagen de Portainer en el puerto 9123 con el nombre “portainer” habilitando su reinicio automático en el caso en que Docker se reiniciara (reinicio de la máquina, reinicio manual del servicio de Docker, etc.).

A su vez mapeamos dos volúmenes en la máquina, el primero docker.sock, permitirá a Portainer comunicarse con el proceso de Docker en el servidor (host machine) e invocar comandos.

El segundo volumen mapea el directorio creado anteriormente con la ubicación donde la imagen de Portainer almacena sus datos (usuarios, configuraciones…), de modo que si accidentalmente destruyésemos el contenedor, esta información no se perdería.

Clouding.io firewall

Clouding.io ofrece una capa de firewall por encima de los servidores. El firewall por defecto contiene normas para permitir tráfico por el puerto SSH, FTP, HTTP…. Sin embargo, el puerto que hemos asignado a Portainer 9123 se encuentra bloqueado por defecto.

Para poder acceder a la interfaz debemos de agregar una nueva norma al firewall. En la pestaña “RED” encontramos los Firewalls vinculados con la máquina:

Clouding.io server firewalls
Clouding.io server firewalls

Para agregar la nueva norma, presionamos sobre el menú contextual del Firewall asignado default y accedemos a la opción editar para acceder a la pantalla de gestión de Firewalls.

Desde aquí podemos presionar sobre el botón ‘+’ en la sección de “Normas del Firewall” para agregar la nueva regla:

Clouding.io añadir nueva regla al firewall
Clouding.io añadir nueva regla al firewall

Configuración de Portainer

En estos momentos ya podemos acceder a la interfaz de Portainer a través de un navegador accediendo a http://ip-publica-servidor:9123.

Como es la primera vez que accedemos, Portainer nos va a pedir crear un usuario administrador y el tipo de entorno que queremos gestionar.

Portainer configuración inicial
Portainer configuración inicial
Portainer selección entorno Docker
Portainer selección entorno Docker

Una vez hemos dado de alta el usuario y hemos elegido el entorno “Local” ya dispondremos de acceso a la aplicación y podremos listar los contenedores. Si todo ha ido bien, en la lista de contenedores únicamente debería de figurar “portainer”.

Portainer listado de contenedores
Portainer listado de contenedores

Prestashop

Finalmente y a modo de ejemplo, vamos a desplegar una instancia de Prestashop en el entorno Docker que hemos puesto a punto.

MySQL

Prestashop depende de MySQL para almacenar sus datos. Lo primero que haremos será desplegar una imagen compatible de MySQL.

Del mismo modo que hicimos para Portainer, en la máquina host crearemos un directorio para almacenar los datos de MySQL de modo que si el contenedor se destruyese la información de la tienda no se perdería.

1mkdir -p /opt/prestashop/mysql

El siguiente paso será desplegar el contenedor de MySQL, para ello lanzamos el siguiente comando:

1docker run --name prestashop-db --restart always -v /opt/prestashop/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root_password -e MYSQL_DATABASE=prestashop -e MYSQL_USER=prestaUser -e MYSQL_PASSWORD=prestaPassword -d mysql:8.0 --default-authentication-plugin=mysql_native_password --character-set-server=utf8
  • --restart always: Indica a Docker que el contenedor siempre debe de reiniciarse
  • -v /opt/prestashop/mysql:/var/lib/mysql: Mapea el primer directorio en la máquina host contra el segundo en el contenedor
  • -e MYSQL_ROOT_PASSWORD=root_password: Establece la contraseña del usuario root dentro del contenedor
  • -e MYSQL_DATABASE=prestashop: Crea una base de datos inicial con el nombre ‘prestahsop’
  • -e MYSQL_USER=prestaUser: Crea un usuario inicial con el nombre ‘prestaUser’
  • -e MYSQL_PASSWORD=prestaPassword: Asigna una contraseña al usuario inicial
  • --default-authentication-plugin=mysql_native_password: Parámetro de MySQL que permite modificar la forma de autenticación por defecto. Necesario por compatibilidad con Prestashop
  • --character-set-server=utf8: Parámetro de MySQL que permite modificar el juego de caracteres por defecto en el servidor. Necesario por compatibilidad con Prestashop

En el comando anterior debemos reemplazar en las variables de entorno las contraseñas (root_password, prestaPassword) por valores más seguros y conocidos de modo que las podamos emplear en el caso que hubiese que hacer una intervención manual en la base de datos.

Contenedor Prestashop

Una vez MySQL esté disponible podemos proceder al despliegue del contenedor con Prestashop. Al igual que en los casos anteriores, crearemos un directorio en la máquina host para poder persistir la información del contenedor.

1mkdir -p /opt/prestashop/html

A continuación lanzamos el siguiente comando para iniciar el contenedor:

1docker run --name prestashop --restart always --link prestashop-db -v /opt/prestashop/html:/var/www/html -e DB_SERVER=prestashop-db -e DB_USER=prestaUser -e DB_PASSWD=prestaPassword -e PS_LANGUAGE=es -e PS_COUNTRY=ES -e PS_DOMAIN=185.166.213.138 -e ADMIN_MAIL=mr@pink.com -e ADMIN_PASSWD=mr_pink_demo -e PS_INSTALL_AUTO=1 -p 80:80 -d prestashop/prestashop:1.7
  • -v /opt/prestashop/html:/var/www/html: Mapea el primer directorio en la máquina host contra el segundo en el contenedor
  • -e DB_SERVER=prestashop-db: Establece el nombre del host de MySQL al que debe de conectarse Prestashop. Debe coincidir con el nombre del contenedor de MySQL creado anteriormente
  • -e DB_USER=prestaUser: Nombre del usuario de la base de datos
  • -e DB_PASSWD=prestaPassword: Contraseña del usuario de base de datos
  • -e PS_LANGUAGE=es: Idioma en el que se instalará Prestashop
  • -e PS_COUNTRY=ES: País para el que se instalará Prestashop
  • -e PS_DOMAIN=185.166.213.138: Nombre de dominio en el que correrá la aplicación. En nuestro caso apuntamos directamente a la IP pública del servidor creado en clouding.io. Debería de sustituirse por un nombre de dominio real que apuntase a esa misma IP
  • -e ADMIN_MAIL=mr@pink.com: Email y nombre de usuario administrador que se creará para la tienda
  • -e ADMIN_PASSWD=mr_pink_demo: Contraseña para el usuario administrador
  • -e PS_INSTALL_AUTO=1: Flag para que el proceso de instalación se inicia automáticamente

Una vez lanzado el comando, desde la interfaz de Portainer visualizaremos los logs del contenedor para controlar cuándo se completa la instalación:

Portainer, contenedor Prestashop listo
Portainer, contenedor Prestashop listo

Cuando se muestre la línea Command line: 'apache2 -D FOREGROUND' en el log el servidor estará disponible.

Nos quedará un último paso y es renombrar los directorios install y admin por otros más secretos. Como disponemos de acceso al directorio donde Prestashop almacena su información (directorio mapeado), podemos acceder hasta este a través de la consola SSH y renombrar los directorios.

Renombrar directorios protegidos de Prestashop
Renombrar directorios protegidos de Prestashop

Es importante elegir un nombre más complicado y que evite ataques indeseados. Hecho esto ya podemos acceder a la consola de administración de la tienda y a la tienda en sí.

Página de administración de Prestashop
Página de administración de Prestashop
Página de administración de Prestashop
Página de administración de Prestashop

Conclusión

En este tutorial hemos visto cómo crear un nuevo servidor CentOS 7 empleando los servicios en la nube de clouding.io y como instalar y configurar Docker-ce para el despliegue de una tienda virtual Prestashop.

Prestashop
Prestashop

A pesar de que Prestashop es una aplicación monolítica y no está diseñada para desplegarse como un microservicio, hacer todo el procedimiento de instalación empleando Docker resulta mucho más rápido.

El despliegue del servidor empleando la interfaz de Clouding.io ha resultado muy sencillo, en menos de dos minutos hemos podido desplegar un nuevo servidor y disponer de todo lo necesario para acceder mediante SSH al mismo. Además, la capa de Firewall nos permite disponer de mecanismos de seguridad sin tener que configurarlos en la propia máquina y poderlo configurar a través de la interfaz web con efecto inmediato.

Clouding.io performance
Clouding.io performance
Rendimiento Clouding.io
Rendimiento Clouding.io

En cuanto al rendimiento del servidor, a pesar de estar probando una tienda Prestashop sin ningún tipo de optimización, el tiempo de carga total de la página es inferior a 3 segundos. En este aspecto podemos concluir que la red de clouding.io donde se aloja el servidor es bastante rápida y estable.

Twitter iconFacebook iconLinkedIn iconPinterest iconEmail icon

Navegador de artículos
React : Babel + Webpack + Sass aplicación básicaLinux: Cómo listar paquetes RPM instalados
© 2007 - 2025 Marc Nuri