Yii2 The «extra.asset-installer-paths» option is deprecated, use the «config.fxp-asset.installer-paths» option

Composer es un manejador de dependencias/librerías para proyectos en PHP,  mientras que Yii2 es un Framework de desarrollo MVC para proyectos en PHP.

Hace un tiempo que vengo recibiendo este warning cuando actualizo las librerías de composer con mi proyecto en Yii2, si bien es un warning y el sistema seguía funcionando sin problemas no lo quería ver más. A continuación como solucionarlo.

Leer más

Jugando con el #PHP SDK de Amazon Web Services ( #AWS ) V3 para Simple Queue Service (#SQS)

Amazon SQS Ejemplo PHP SDK V3

Simple introducción a Amazon Simple Queue Service usando Composer, PHP y la versión 3 del SDK de Amazon.  Amazon SQS es un servicio de mensajería para la comunicación entre distintas plataformas y/o dispositivos.

Origen: Basic SDK Usage

Código del Proyecto : Jugando con PHP SDK y SQS

Hace un tiempo que quería empezar a usar SQS para separar la lógica de envío de correos de mi plataforma, en especial desde que tuve problemas en su momento con el servidor SMTP de Mandrill lo que finalizaba en un error para el usuario. En este momento cambie a usar el sistema de mails de Amazon, pero siempre quedé con la intención de separar el procesamiento de emails en caso de tener problemas con esto nuevamente.

Me llamó mucho la atención que los ejemplos de Amazon para el SDK simplemente están basados en S3, por l oque no fue tan sencillo comenzar con SQS como lo hubiera imaginado, casi todos los ejemplos con SQS usaban las librerías antiguas.

Amazon SQS, no solo sirve para poder enviar emails de manera asyncrónica con la aplicación, la verdad es que puedes hacer lo que se te ocurra. Por ahora empezaremos un proyecto desde cero en el cual crearemos mensajes y luego los procesaremos.

Amazon SQS Ejemplo PHP SDK V3
Amazon SQS Ejemplo PHP SDK V3

Leer más

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,

Woocommerce en Chile con Transbank y sin Certificación

Woocommerce es una herramienta para generar sitios eCommerce que funciona sobre wordpress. A continuación la implementación para recibir pagos con tarjetas en Chile usando WebpayPlus. Este servicio se convirtó en lo que hoy es pagofacil.cl, recomiendo revisar la página web y ver el siguiente vídeo : https://www.youtube.com/watch?v=BIBx_mBt4-Y Si bien desde hace años que el plugin … Leer más

Actualizar Elastic BeanStalk Enviroment para usar PHP7.0 con eb-cli

AWS Elastic Beanstalk es un servicio fácil de utilizar para implementar y escalar servicios y aplicaciones web.

Ahora veremos como hacer el upgrade de la versión de PHP de un servicio ( enviroment ) ya corriendo.

Antes de hacerlo :

  1. Ya debes de estar familiarizado con lo que es ElasticBeanstalk.
  2. Debes de tener los comandos de consola de EB instalasdos ( EB-CLI ).
  3. Asumiremos el upgrade desde una máquina con consola linux.

Creando la configuración inicial.

Antes que todo nos situamos en la carpeta de la aplicación de la cual haremos el upgrade y ejecutamos el comando eb init. Si ya lo habíamos hecho anteriormente usaremos la opción de «interactive» como fue mi caso. Resaltaré en negrita la selección del menú correspondiente.

ctala@BeaTriX-CTMGroup:~/REPOS/tbk-aas-server$ eb init --interactive

Select a default region
1) us-east-1 : US East (N. Virginia)
2) us-west-1 : US West (N. California)
3) us-west-2 : US West (Oregon)
4) eu-west-1 : EU (Ireland)
5) eu-central-1 : EU (Frankfurt)
6) ap-south-1 : Asia Pacific (Mumbai)
7) ap-southeast-1 : Asia Pacific (Singapore)
8) ap-southeast-2 : Asia Pacific (Sydney)
9) ap-northeast-1 : Asia Pacific (Tokyo)
10) ap-northeast-2 : Asia Pacific (Seoul)
11) sa-east-1 : South America (Sao Paulo)
12) cn-north-1 : China (Beijing)
(default is 3): 

Select an application to use
1) APP1
2) APP2
3) APP3
4) [ Create new Application ]
(default is 3): 3
Select the default environment. 
You can change this later by typing "eb use [environment_name]".
1) APP3-devel
2) APP3-prod
(default is 1): 2

Select a platform.
1) Node.js
2) PHP
3) Python
4) Ruby
5) Tomcat
6) IIS
7) Docker
8) Multi-container Docker
9) GlassFish
10) Go
11) Java
(default is 1): 2

Select a platform version.
1) PHP 5.4
2) PHP 5.5
3) PHP 5.6
4) PHP 7.0
5) PHP 5.3
(default is 1): 4

Con esto lo que hacemos es decirle a beanstalk como funcionar. Si se creara la aplicación desde cero partiría de inmediato con php7, pero como no es nuestro caso lo que haremos primero es guardar la configuración de nuestro enviroment según lo que tenemos en la nube.

Creando y editando la configuración del enviroment.

ctala@BeaTriX-CTMGroup:~/REPOS/tbk-aas-server$ eb config save app3-prod --cfg app3-prod-config

Configuration saved at: /home/ctala/REPOS/app3/.elasticbeanstalk/saved_configs/app3-prod-config.cfg.yml

Una vez guardada la configuración por defecto la editaremos según lo que necesitemos. En nuestro caso buscamos la línea que define el Stack a ocupar y la editamos.

Cambiaremos esto :

SolutionStack: 64bit Amazon Linux 2016.03 v2.1.3 running PHP 5.6

Por esto

SolutionStack: 64bit Amazon Linux 2016.03 v2.1.3 running PHP 7.0

Si, solo cambiaremos la parte donde sale la versión de PHP. En este caso es sencillo ya que el SolutionStack existe y se llama de esa manera.

Actualizando la configuración en la nube.

Ya teniendo nuestra nueva configuración lo que debemos hacer es subirla a amazon y luego cargarla.

ctala@BeaTriX-CTMGroup:~/REPOS/app3$ eb config put app3-prod-config
ctala@BeaTriX-CTMGroup:~/REPOS/app3$ eb config app3-prod --cfg tbk-aas-server-prod-config 
Printing Status: INFO: Environment update is starting.                                
INFO: Updating environment app3-prod's configuration settings. 
INFO: Created Auto Scaling launch configuration named: awseb-e-4g3mx5ymyq-stack-AWSEBAutoScalingLaunchConfiguration-16CD5LSR5ERIN INFO: Auto Scaling group update progress: Rolling update initiated. Terminating 1 obsolete instance(s) in batches of 1, while keeping at least 1 instance(s) in service. Waiting on resource signals with a timeout of PT30M when new instances are added to the autoscaling group. 
INFO: Auto Scaling group update progress: Temporarily setting autoscaling group MinSize and DesiredCapacity to 2. 
INFO: Environment health has transitioned from Ok to Info. Configuration update in progress (running for 30 seconds). 
INFO: Auto Scaling group update progress: New instance(s) added to autoscaling group - Waiting on 1 resource signal(s) with a timeout of PT30M. 
INFO: Added instance [i-051d72f3a5ba93b63] to your environment.      INFO: Still waiting for the following 1 instances to become healthy: [i-051d72f3a5ba93b63]. 
INFO: Deleted Auto Scaling launch configuration named: awseb-e-4g3mx5ymyq-stack-AWSEBAutoScalingLaunchConfiguration-10200GU7CE7MB 
INFO: Successfully deployed new configuration to environment.

Ahora así de simple hemos actualizado el enviroment para que use la versión de php7 sin tener downtime y manteniendo los servicios relacionados como pueden ser las bases de datos.

Espero que les sirva !

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

Share to...