Desarrollando Aplicaciones Web con PHP7.0 y Docker

Docker es un software de manejo de contenedores, mientras que PHP7.0 es la última versión de este lenguaje de programación que incluye mejoras que hacen que la velocidad de su funcionamiento sea 50% más veloz que su predecesor. En este tutorial crearemos un ambiente de desarrollo usando Docker con lo cual no tendremos que instalar ningún otro software ni librería para funcionar.

Origen: ctala/apache2_php7_awsebs – Docker Hub

Docker

Ya hace un tiempo que quería probar como funcionaba Docker para el desarrollo de aplicaciones para no tener que instalar todo nuevamente en mi máquina. Hace unos días ya llegó mi nueva laptop por lo que ya no tengo excusas para no trabajar y se me ocurrió la brillante idea de procastinar aprendiendo y creando imagenes de Docker en vez de iniciar directamente con lo que debía hacer. El resultado fue satisfactorio por lo que estoy muy contento, así que aprovecho de compartir no solo como desarrollar en PHP7.0 usando Docker, si no que además utilizaremos una imagen que creé para este cometido que incluye todo lo necesario para poder desarrollar sin problemas en PHP7.0, además de herramientas que hacen que el proceso sea más sencillo.

Prerequisitos :

  • Tener Docker ya instalado.
  • Los comandos que mostraré son en base a un HOST linux, lo que no quiere decir que la imagen que ocuparemos no funcione con otro HOST.

Obteniendo la Imagen

Uno de los beneficios de trabajar con containers, es que podemos instalar uno de ellos en base a una imagen que ya tenga todo para llegar y utilizar. Uno de los problemas que tuve al inicio es que no entendí muy bien cual era la diferencia entre un contenedor y una imagen, lo que podemos resumir como que el contenedor es la visualización de la imagen que ocuparemos. ” El contenedor es el que ocuparemos, mientras que la imagen genera el contenedor “.

Ejecutamos el siguiente comando para descargar la imagen que utilizaremos como base para el contenedor que tendrá nuestra aplicación web.

docker pull ctala/apache2_php7_awsebs

 

Con el comando anterior descargamos la imagen base. No importa cuantos contenedores creemos en base de esta imagen, esta imagen solo deberemos descargarla una vez.

Iniciando el contenedor.

La imagen anterior esta lista para ser utilizada y al momento de [generar el contenedor inicia el servidor web Apache de manera automática. En este caso solo debemos enfocarnos en iniciar el contenedor. Algo que vale la pena destacar es que si el contenedor es eliminado, todo el contenido se pierde. Debido a esto se montará la carpeta donde tenemos el código web desde la máquina HOST para no tener problemas.

sudo docker run -d -p 80:80 -i \
-v/MIREPO:/var/www/html \
-t ctala/apache2_php7_awsebs

 

El comando anterior ejecuta el contenedor como demonio por lo que no se eliminará si salimos, hace un puente entre el puerto 80 del contenedor y el puerto 80 de nuestro host ( Computador ) y monta la carpeta /MIREPO que tiene el repositorio local en la dirección web del servidor desde nuestra imagen llamada apache2_php7_awsebs.

Accediendo al contenedor.

Uno de los beneficios de Docker es que podemos acceder al contenedor como si fuera una máquina virtual. Para hacerlo simplemente listamos los contenedores que estén corriendo y “ejecutamos” una consola bash para poder acceder.

sudo docker ps
Contenedores Docker Activos
Contenedores Docker Activos

El comando anterior resulta en la lista de los contenedores activos con su respectivo ID y los puertos que está ocupando. En nuestro caso el puerto 80 del contenedor está relacionado con el puerto 80 de nuestra máquina host.

Ahora asumiendo que tenemos el resultado anterior, ingresaremos a la consola de esa máquina.

$ sudo docker exec -it 78764af8e071 bash

 

Con esto podemos instalar todo lo que nos haya faltado, utilizar las herramientas incluidas, o simplemente analizar los logs del sistema.

 

Otras Herramientas Incluidas.

Esta imagen no solo viene con PHP7.0 y Apache, también viene lista con :

  • Cliente Mysql.
  • Composer, para el manejo de las librerías de PHP.
  • EBS-CLI. Herramientas para la conexión con Elastic BeanStalk de Amazon.
  • Curl.
  • Git para el manejo de los repositorios.

Usando esta imagen puedes crear tantos contenedores como lo deseos o simplemente usar uno y cambiar la dirección desde donde se obtiene la información del repositorio.

Por mi parte estaré utilizando está imagen para el desarrollo de aplicaciones por lo que estaré modificándola a medida que sea necesario.

¡Mantengamos el contacto!

Me encantaría que te mantuvieras al día con el contenido que estoy generando. Recuerda que no es solo el blog, son las redes sociales, libros, y distintos pódcast 😎.

Hago todo lo posible para no hacer Spam,

¡MANTENGÁMONOS EN CONTACTO!

Me encantaría que te mantuvieras al día con el contenido que estoy generando. Recuerda que no es solo el blog, son las redes sociales, libros, y distintos pódcast 😎.

Hago todo lo posible para no hacer Spam,

Crear una Base de Datos MySQL remota para optimizar el rendimiento del sitio WordPress.

Cuando el sitio comienza a tener más tráfico tenemos que comenzar a pensar en como poder manejarlo. Lo más sencillo y lo que recomiendo es sacar la base de datos del servidor, en especial debido a que Mysql al no tener recursos suficientes simplemente deja de funcionar. Esto logra que cada servidor maneje su propia carga, además de ser el primer paso para tener un sitio con balanceador de carga.

En mi caso particular lancé un nuevo eCommerce con Woocommerce / WordPress en el cual no separé desde un inicio la BdD de datos debido a que pensé que el sitio tendría menos tráfico y carga asociada, me equivoqué, lo que es realmente bueno.

Sin embargo no puedo dejar que el eCommerce se caiga cada vez que tenga mucho tráfico, no sería muy agradable perder ventas por esto.

Este minitutorial está alojado en digital ocean, la verdad lo he probado hace un tiempo y funciona bastante bien. Sin embargo  se puede extrapolar para cualquier servidor linux, en mi caso Ububtu 14.04.

Entonces, lo que haremos :

  1. Crear un nuevo servidor ( Droplet ) al cual le instalaremos una base de datos Mysql.
  2. Instalar la base de datos Mysql.
  3. Configurar la BdD en modo seguro/ Producción.
  4. Crear un usuario / password para el acceso del sitio wordpress.
  5. ( Opcional ) – Configurar el firewall del servidor.

Read more

Ubuntu 14.04 LTS + : Cambiar la zona horaria.

Para todos los que quieren cambiar la zona horaria con  CentOS, Ubuntu, Fedora, Debian para sus servidores.

Estaba acostumbrado a usar tzdata pero al parecer en las versiones más “recientes” no viene por defecto. Para poder hacer el cambio de la zona horaria  usaremos el comando timedatectl. Para esto necesitamos tener acceso a la máquina en donde queremos cambiar la configuración, puede ser físicamente o de manera virtual a través de una consola.

Read more

Usando Linux y el portal de MiPyme del Sistema de Impuestos Internos.

GUÍA PARA INSTALAR EL CERTIFICADO DIGITAL LINUX UBUNTU

Uno de los problemas que había tenido para no migrar todos los computadores de Windows a Ubuntu era el no poder usar este último para poder generar las facturas electrónicas con el portal de MiPyme del Sistema de Impuestos Internos. Había estado ocupando Virtual Box para hacer esto personalmente ya que Windoes dejó hace muchos años de ser mi Sistema Operativo principal.

Hoy ingresé al portal del Sistema de Impuestos internos y “descubrí”  un mensaje que anteriormente no había hecho. “Para firmar el documento desde sus sistema operativo debe de subir la llave al servidor” o algo similar …

Esto despertó un poco mi curiosidad y empecé a revisar un poco sobre este tema, usando Google pude encontrar la página del Sistema de Impuestos internos que describía el procedimiento para la instalación de la firma en Linux. La firma ya la tenía instalada así que simplemente la subí al servidor como decía el manual.

A grandes rasgos el procedimiento que te da el manual es el siguiente :

  1.  Instalar el certificado digital.
  2. Subir el certificado al servidor del servicio de impuestos internos.
  3. Inscribirte en el portal de MiPyme del SII
  4. Y finalmente generar la documentación.

En mi caso tengo un certificado digital simple que obtuve de la Cámara de Comercio de Santiago a través del portal de e-certchile y ya lo tenía instalado en mi navegador ( Firefox ). Puedes encontrar una lista de proveedores de certificados digitales en el siguiente link : https://palena.sii.cl/dte/mn_Prov_CD.html

También ya era usuario del portal de MiPyme por lo que simplemente me faltaba subir el certificado al servidor del SII y firmar un documento ( DTE ) de pruebas. En mi caso una factura electrónica.

Subí el certificado digital en la siguiente dirección : https://www4.sii.cl/uploadCertDigitalInternet/ y luego procedí con generar un DTE en el portal para probar. La felicidad me invadió al poder proceder sin problemas y poder generar la factura con la llave que subí al servidor. Simplemente me pidió la clave de la firma para proceder y todo funcionó de maravilla.

Debo de admitir que inicié muy feliz esta semana con esta noticia.  Les recomiendo leer el artículo del SII para la instalación de las llaves.

Origen: GUÍA PARA INSTALAR EL CERTIFICADO DIGITAL LINUX UBUNTU

¡Mantengamos el contacto!

Me encantaría que te mantuvieras al día con el contenido que estoy generando. Recuerda que no es solo el blog, son las redes sociales, libros, y distintos pódcast 😎.

Hago todo lo posible para no hacer Spam,

¡MANTENGÁMONOS EN CONTACTO!

Me encantaría que te mantuvieras al día con el contenido que estoy generando. Recuerda que no es solo el blog, son las redes sociales, libros, y distintos pódcast 😎.

Hago todo lo posible para no hacer Spam,

MysqlPasswordReset – Cambiar la clave root de Mysql

Acabo de crear un servidor WordPress con on click deployment de Google y tuve el problema que la clave que me dieron de mysql para root no correspondía a la real.

El error que obtenía era el siguiente :

ERROR 1045: Access denied for user: 'root@localhost' (Using 
password: YES)

Estos son simples pasos para cambiar la clave root de Mysql bajo un servidor linux si es que posees el error anteriormente mencionado.

Read more

Share to...