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.

Leer más

¡ Twilio Al Rescate ! Solucionando problemas de comunicación

Este post es sobre como solucionamos la perdida de telefonía análoga para poder trabajar de manera normal en la empresa.

Me había rehusado a el cambio a la telefonía IP debido a que pensaba que la análoga era más estable. El resultado de este terrible error es que he tenido intermitencias del servicio telefónico pero no de internet en el último año.

La semana pasada nuestro proveedor de servicios telefónicos para la empresa, del cual no diré el nombre pero empieza con movi y termina star en Chile, tuvo un problema con una de sus centrales en nuestra zona  debido a problemas eléctricos que fueron ocasionados por el temporal. El resultado es que no se pueden recibir ni hacer llamados telefónicos hace una semana ( ¡ Gracias empresa que no puedo mencionar !, me haces la vida mucho más entretenida ).

Creo que está de más decir que para una empresa cuyo foco es darle servicios a otras empresas, en donde el trato es uno a uno y todos los negocios se cierran vía telefónica o en persona NO puede tener problemas telefónicos. Para aprovechar de pasar el dato nuestra empresa es de branding corporativo, regalos corporativos y merchandising, pueden encontrarla en el siguiente link : EmpresasCTM .

Teniendo este problema lo que necesitábamos era poder realizar llamadas lo antes posible. Hace un tiempo ya que tenemos una central telefónica Elastix que es capaz de conectarse a SIP Trunks para poder hacer las llamadas. Lo único que nos faltaba era el servicio que pudiera funcionar de inmediato para lograrlo y es así como llegamos a Twilio.

Cuando conocí esta herramienta lo hice para una aplicaciones para mandar sms, no tenía idea que tenía otros servicios o es posible que ni si quiera supiera en su momento que los tenía.

Para los que no saben que es un SIP Trunk , es la conexión que nos da un proveedor de servicios de telefonía IP que nos permite tener llamadas entrantes y salientes a distintos lugares. Si no fuera por esto nuestra central, no importando cual, solo nos serviría para los anexos de manera interna.

En mi caso fue sencillo, debido a que ya poseía una central, pero crear una puede tardar menos de una hora siguiendo un manual de internet. Les recomiendo de ser necesario crear una central Asterisk ya que la documentación es bastante extensa si es que no tienen una ya funcionando.

Para la configuración de la central, Twilio tiene una amplia cantidad de tutoriales y ejemplos para las distintas centrales ( https://www.twilio.com/docs/sip-trunking/sample-configuration ) por lo que tenerlo activo fue cuestión de minutos. En mi caso tardé un poco más debido a que no sabía cuales eran los puertos que debía abrir para la telefonía ip sobre el protocolo SIP ( 5060 ).

Bueno, así es como salimos de un problema que pude llegar a ser mucho mayor. Espero que a alguien le sirva, a mi me hubiera servido bastante esto al momento de buscar una solución para el problema que teníamos. Lamentablemente Twilio no tiene números de entrada en Chile, pero las tarifas son bastante buenas para llamar al resto del mundo.

 

👉 ¿Te gustó este contenido? Hay más esperando por ti.

Cada semana, comparto aprendizajes y reflexiones que no encontrarás en ningún otro lugar. ¡Únete a la comunidad de más de 9,000 emprendedores que ya están avanzando!

Calcular la máxima cantidad de clientes en Apache2 /prefork

En general la forma de calcular cuanta gente puede acceder de manera concurrente a mi servidor web ( MaxClients ) es sencilla pero bastante manual. Encontré un script en la web de referencia que me puede ayudar a hacerlo de manera más práctica así que lo comparto.

Hace algunos años desarrollando un sistema de regalos corporativos fue la primera vez que me encontré con este problema, si está mal definida la cantidad máxima de usuarios que pueden acceder al apache este consume mucha memoria y en el caso de que tengas el servidor MySQL en el mismo lugar este puede caerse sin ningún aviso.

La idea es que podamos definir bien la cantidad de usuario que puede manejar apache.

Leer más

Redireccionar HTTP a HTTPS con ModRewrite y .htaccess

En general cuando manejas wordpress y cambias la dirección del sitio por defecto a HTTPS, se manejan internamente las redirecciones para poder usar las nuevas direcciones.

El problema a veces es simplemente la página de inicio, que no se redirecciona por defecto. Hay plugins que te pueden hacer la vida más sencilla en esto, pero obviamente soy de las personas que no les gusta el camino fácil.

Si tu servidor tiene el mod_rewrite de apache2 activado, lo más sencillo es decirle que «reescriba» las direcciones dependiendo del contenido, y simplemente haga una redirección ( 301 ).

A continuación veremos como redireccionar las url para la que corresponda. Este es el mismo proceso que se usa para cuando cambias tu web de dirección.

Leer más

¿ Cómo saber el usuario que ejecuta apache desde PHP ?

Cuando estamos ejecutando nuestra web puede que nos encontremos en más de una ocasión con problemas de permisos para ejecutar los archivos o simplemente acceder a ello. En muchos de estos casos la solución es bastante sencilla, y es que el usuario que ejecuta el servicio web ( en mi caso apache ) no tiene privilegios de ejecución, lectura o escritura del archivo con problemas.

Para solucionarlo existen varias formas, solo comentaremos 3 de ellas.

La primera y más sencilla, es crear un archivo php e incluir la función de phpinfo() para ver las variables de entorno y revisar cual es el usuario que las ejecuta.

echo phpinfo();

En la página resultante revisamos las variables de entorno y buscamos el usuario y su grupo que ejecutan el servicio.

Enviroment Variables PHP
Enviroment Variables PHP

En este caso, tanto el usuario como el grupo es www-data, que es lo normal si apache se ejecuta en modo seguro.

También existe una forma de acceder directamente a las variables de entorno del servidor, por lo que podemos ejecutarlas de manera directa.

$user = getenv('APACHE_RUN_USER');
$group = getenv('APACHE_RUN_GROUP');
echo $user.":";
echo $group."
";

El código anterior nos da como resultado el usuario «dos puntos » y el grupo. En mi caso «www-data:www-data».

Por último, y solo disponible para linux, es preguntarle directamente al sistema operativo quién lo está ejecutando. Igual lo haremos dentro de un archivo php.

echo exec('whoami');

Lo cual nos retorna el usuario que lo ejecuta, en mi caso también «www-data».

Bueno, y esas son 3 formas de saber cual es el usuario que está ejecutando el servicio web.

👉 ¿Te gustó este contenido? Hay más esperando por ti.

Cada semana, comparto aprendizajes y reflexiones que no encontrarás en ningún otro lugar. ¡Únete a la comunidad de más de 9,000 emprendedores que ya están avanzando!