Como Startup o emprendimiento, no es probable que tengas éxito sin el apoyo de los demás. Formar parte del ecosistema de las startups puede ayudarte en tu camino o incluso darle ese impulso que necesitas para salir adelante. Algunos de los actores del ecosistema son bastante aparentes, como lo son los emprendedores y los inversionistas; … Leer más
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.
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.
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 :
Crear un nuevo servidor ( Droplet ) al cual le instalaremos una base de datos Mysql.
Instalar la base de datos Mysql.
Configurar la BdD en modo seguro/ Producción.
Crear un usuario / password para el acceso del sitio wordpress.
( 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.
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.
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 :
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.
Si ocupamos simplemente el comando nos da la siguiente información :
root@MANAGER:~# timedatectl
Local time: Wed 2015-11-11 09:30:44 CLT
Universal time: Wed 2015-11-11 12:30:44 UTC
RTC time: Wed 2015-11-11 12:30:44
Timezone: America/Santiago (CLT, -0300)
NTP enabled: yes
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
En donde aparece la zona universal y la local que son los datos que nos interesan. En mi caso yo ya cambié la zona horaria de este servidor.
Ahora, veamos la lista de las zonas horarias y seleccionemos la que nos interesa. En este caso usaré grep para obtener la zona horario correspondiente a Santiago. De no usar grep esto devolvería la lista de todas las zonas horarias disponibles.
root@MANAGER:~# timedatectl list-timezones | grep Santiago
America/Santiago
Ya teniendo nuestra zona horaria simplemente le decimos al servidor que es la que queremos ocupar.
La verdad es para nada complejo, puedes además hacerlo a través de php si no tienes acceso a la consola del servidor pero eso lo veremos en otra oportunidad.
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 :
Instalar el certificado digital.
Subir el certificado al servidor del servicio de impuestos internos.
Inscribirte en el portal de MiPyme del SII
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.
Emprendedor, inversionista, y mentor de diversas Startups y Emprendimientos.
Apasionado de la tecnología, los negocios y la educación. Tanto personal como profesionalmente mi idea es estar siempre buscando la excelencia, sacar lo mejor de mis capacidades, todos los días se puede aprender algo más y estaré feliz de hacerlo.
Mi propósito es ayudar a los emprendedores, lograr que salgan adelante, y potenciar el ecosistema Startup.