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.

Read more

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.

Creando el nuevo droplet

Esto ya es bastante sencillo, simplemente vamos a el panel de administración de Digital Ocean y hacemos click en crear un nuevo droplet. Asegurate que el servidor quede en el mismo datacenter donde se encuentra tu máquiba virtual que aloja tu servidor wordpress, de no ser así funcionará pero no a la velocidad esperada para nuestro sitio.

Digital Ocean Create Droplet
Digital Ocean Create Droplet

Por ahora el servidor MySQL no necesita ser más potente que la versión más sencilla, de ser necesario en un futuro simplemente hacemos el upgrade, pero recomiendo usar un caché en el servidor de wordpress.

Instalando Mysql

Ya teniendo nuestra máquina recién horneada, accedemos a ella para instalar el servidor mysql.

sudo apt-get install mysql-server

Debido a que estaremos en un servidor de producción, recomiendo poner una contraseña segura para el usuario root y solo acceder a él desde la máquina local y ninguna remota. Si es paranoia, aún no me ha pasado nada pero no esperaré a que me pase.

Ya teniendo el servicio de mysql andando, ahora simplemente ejecutemos un script que simplemente elimina las posibles vulnerabilidades de seguridad que tiene mysql en servidores de desarrollo.

sudo mysql_secure_installation

Ya que estamos acá, para probar que todo funciona accederemos a La bdD por consola y crearemos la base de datos para wordpress.

# mysql -u root -pMICLAVESINESPACIODESPUESDELAP

Ya habiendo ingresado la creamos.

mysql> create database wordpress;
 Query OK, 1 row affected (0.00 sec)

Configurando el acceso remoto.

Antes que todo, le debemos decir a Mysql cual es su IP, así que procedemos a editar el archivo:

sudo vim /etc/mysql/my.cnf

Y buscamos donde dice bind-address y lo cambiamos por nuestro IP :

bind-address        = TUIP

Si tu IP es pública, va esa. Si tienes una red interna, usas el IP de la red interna.

Ahora reiniciamos el servicio para ver que todo funcione bien.

sudo service mysql restart

Generando las credendiales para WordPress

Ya tenemos el servidor virtual, mysql instalado, y la capacidad de ser accedido de manera remota, lo que nos falta es un usuario que pueda acceder de manera  por este medio.  Recordar que ya creamos la BdD llamada wordpress en un punto anterior.

Creemos el usuario y le damos los accesos necesarios a nuestra base de datos para que wordpress pueda funcionar de manera correcta :

CREATE USER 'MIUSUARIO'@'localhost' IDENTIFIED BY 'MICLAVE';
CREATE USER 'MIUSUARIO'@'%' IDENTIFIED BY 'MICLAVE';
GRANT SELECT,DELETE,INSERT,UPDATE ON wordpress.* TO 'MIUSUARIO'@'localhost';
GRANT SELECT,DELETE,INSERT,UPDATE ON wordpress.* TO 'MIUSUARIO'@'%';

Con lo anterior creamos tanto el usuario remoto como el local. No olvides modificar la nueva información en el archivo de configuración de wordpress para que los cambios funcionen.

Asegurando el servidor

Si notaron, en este momento cualquier IP puede acceder a nuestro servidor. Dependiendo de la configuración esto puedo ser bueno o malo, si bien esto se puede bloquear directamente desde la configruación de acceso a mysql, lo que haremos es configurar el firewall para solo aceptar el tráfico de los IPs que nosotros permitamos.

Asumiendo que tenemos UFW ( Uncomplicated Firewall ) ya instalado, simplemente agregamos la siguiente regla :

# sudo ufw allow from MYIP to any port 3306

Lo que hace es que le permite acceder al puerto 3306 a la IP dada. Si no lo tienes instalado revisa este blog bost : Firewall usando UFW en un servidor Ubuntu / Debian.

Además recomiendo bloquear todas las conexiones que no estén permitidas. ( No hagas esto si no haz agregado ssh a la lista de permitidos ).

# sudo ufw default deny incoming

Y eso sería todo :D.

 

Origen: How To Set Up a Remote Database to Optimize Site Performance with MySQL | DigitalOcean

¡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,

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 …

Read more

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