servidores

33 entradas

Symfony tutorial 3 Doctrine

Symfony: tutorial 3: los modelos y las entidades, almacenando datos en BDs

Recorriendo todas las funcionalidades de Symfony Flex (Symfony 4), traigo de nuevo otro HOWTO para trabajar con el guardado de los datos. Symfony basa el guardado de los datos, la persistencia de los datos, en Doctrine. Es decir, tenemos un módulo llamado Doctrine, mejor dicho varios, que te independizan de la base de datos añadiendo una capa intermedia entre los controladores, plantillas, servicios.. de tu aplicación Symfony y la base de datos. En esta capa intermedia se definen lo que se llaman entidades, y Doctrine se encarga de hacer todo. Siguiendo este tutorial veremos cómo en poco tiempo podemos arrancar proyectos que antes podíamos tardar días o semanas, ahora en pocas horas. Es decir, en muy pocos comandos de consola, y con muy poco esfuerzo, podemos montar grandes estructuras en bases de datos, o editarlas. Y nos podemos casi olvidar de hacer muchas consultas directamente a la Base de Datos. Un poco de teoría Symfony es un framework que sigue el modelo MVC que significa Modelo-Vista-Controlador. En un post anterior hemos visto cómo trabajar con los controladores y un poco de las vistas, que también tienen mucho juego. Ahora vamos a ver el tema de los modelos, sinónimo de entidades. […]

Symfony Flex comandos

Symfony: tutorial 2: los comandos de consola

Una respuesta a porqué Symfony es tan productivo son los comandos de consola. Si alguien dice que usar Symfony es reinventar la rueda, que siempre es mejor modificar un CMS.. es que no sabe de lo que está hablando, y lo que se está perdiendo. Con simples comandos podemos crear un proyecto nuevo, añadir nuevos componentes, lanzar un servidor de pruebas, chequear las URLs, crear entidades que vamos a guardar en base de datos, probar el envío de emails. También podemos modificar las tablas de datos, añadir nuevos elementos, editar los existentes, actualizar la base de datos, preparar nuevos elementos para almacenar, generar pantallas de listado de datos, ediciones de datos, borrados o creaciones. Generamos formularios automáticamente, con recepción de sus datos y guardado de dichos formularios en bases de datos. Podemos importar una base de datos de otro proyecto, generando todo el código fuente de una aplicación web que consulte los datos de dicha BD en apenas un rato. Podemos crear controladores, estructurando todas las zonas de la web, con sus plantillas, rutas, y URLs en poco tiempo. Y mucho más.. No tenemos que gastar tiempo en tediosas tareas repetitivas de construcción, y podremos centrarnos en lo especial de […]

Websites

PHP: usando CURL para visitar servidores web

Continuando con el post anterior, traigo otro code-kata, o HOWTO, para hacer ping a una web, para empezar. Digo para empezar, porque esto no es más que el comienzo de una serie de acciones muy potentes sobre servidores web. Así podemos interactuar con un sitio web automática y remotamente. Este es uno de los mecanismos básicos de comunicación entre sistemas informáticos. Es decir, esto se puede reutilizar para que una web se comunique con otra web, con otro sistema informático, leyendo información o enviándola. Para esto vamos a usar el gran CURL, que va muy bien para trabajar con el protocolo de las webs. Aunque como reza en su web, es compatible con muchos otros protocolos: DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, Telnet and TFTP. curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, HTTP/2, cookies, user+password authentication (Basic, Plain, Digest, CRAM-MD5, NTLM, Negotiate and Kerberos), file transfer resume, proxy tunneling and more.. Esta forma de hacer un simple ping web se puede escalar todo lo que quieras. Es decir, de esta forma es como trabajan internamente los módulos […]

Websites

PHP: cómo hacer un web ping

Una tarea bastante importante a la hora de posicionar una página web es asegurarte de que sigues online. Si has contratado el alojamiento a una empresa no tendrás que preocuparte mucho por el estado del sistema operativo del servidor. Pero hay otros aspectos aparte del servidor que necesitan de tu atención. Puedes pensar que una página web basta con montarla con un buen CMS, que puedes dejarla online y ahí seguirá porque no hay razón para que deje de funcionar. Pues nada más lejos de la realidad, cuantas más cosas tenga tu web, más cosas pueden fallar. Es decir, si tienes una página artesanal de un único fichero estático es difícil que deje de funcionar. Pero si tienes un CMS, quizá un WordPress, Prestashop, Drupal o Magento.. ya empiezas a tener más elementos que mantener. Los módulos pueden ser inestables, pueden engancharse las arañas de los buscadores, usuarios que llegan a bugs involuntariamente, etcétera.. No digamos ya si tienes muchas visitas que generan contenido dinámicamente.

Herramientas para desarrollar en Symfony

Symfony: tutorial 0: preparando el espacio de trabajo

Como buen apasionado del desarrollo de aplicaciones web, estaba espectante esperando la nueva versión de Symfony 4. Ahora tenemos una nueva versión orientada a microservicios, en la que te vas construyendo tu propio framework poco a poco, con los componentes que necesites. Esto quiere decir que no te instalas el framework completo cuando empiezas a trabajar, sino que poco a poco vas añadiendo los componentes. Gracias a Composer vas acoplando los componentes, ya sean del propio Symfony, o sean componentes externos al framework. Esto hace a su vez que la curva de aprendizaje no sea tan pronunciada para los novatos. Lo poco que he podido curiosear me ha encantado. Estoy como un niño con juguete nuevo. Tanto así, que he decidido hacer una serie de tutoriales para principiantes, y no tan principiantes. Herramientas Comencemos por preparar el entorno de trabajo. Voy a citar las herramientas que uso, y por supuesto también recomiendo para estos trabajos. No puedo extenderme mucho porque si no las conoces, deberás de invertir tiempo para instarlártelas. Si ya tienes las tuyas, y se adapatan bien a este tipo de desarrollos, úsalas: Sistema operativo: recomiendo GNU/Linux (Ubuntu, Ubuntu Mate o derivado de Debian), es lo que uso […]

Internet Firewall

GNU/Linux: bloqueando visitas por país

Siguiendo con el post anterior de bloqueo de IPs usando el cortafuegos integrado en el núcleo de Linux, llegamos a la necesidad de por ejemplo bloquear a cierto país. Hay negocios, o páginas web, que han recibido quizás ataques automáticos desde IPs que residen en Rusia, Rumanía o China. Si cerramos dicha entrada al servidor nos evitaríamos muchos problemas. Tengamos en cuenta que si nuestro servidor trabaja con servidores que residen en estos países, podremos encontrarnos con conexiones que no se hacen, no dan respuesta al conectar, denegación de conexión.. Es complicado si nos olvidamos de que hemos bloqueado, por ejemplo, a Rusia. Si luego resulta que contratamos un servicio ruso, cuyos servidores residen en Rusia, estaremos contratando un servicio que no nos va a poder conectar. Obteniendo IPs registradas por país El primera paso es tener un listado de IPs del país en concreto que queremos bloquear. Para esto tenemos varias páginas que nos los sirven sin cargo. Por ejemplo: http://www.ip2location.com/free/visitor-blocker https://www.countryipblocks.net/country_selection.php https://www.nirsoft.net/countryip/ http://www.ipdeny.com/ipblocks/ .. Mejor coge los rangos de IPs del país que quieras bloquear usando el formato en CIDR. Es decir de la forma red/máscara, son así: 2.136.0.0/13 2.152.0.0/14 Tienes entonces que guardarte este listado de CIDRs […]

Internet Firewall

GNU/Linux: bloqueando visitas por IPs

Cuando tenemos un servidor visible desde Internet, desde cualquier lugar del mundo, recibimos visitas constantemente. Esperamos que estas visitas siempre sean las deseadas, pero quizá no lo son. No sólo hay personas y ordenadores con buenas intenciones conectados a Internet. También puede incluso haber sistemas informáticos mal configurados, que involuntariamente, ocasionen problemas a tus sistemas informáticos. Por ejemplo, nos podemos encontrar con casos como estos: Una araña de un buscador, que escanea los contenidos de tu web con muy buenas intenciones, pero se engancha y no deja de escanearte llegando a bloquearte. Registro de usuarios ficticios, a modo de SPAM. Comentarios de SPAM con contenidos que enlazan a otras webs. Una web que se copia tus contenidos tratando de posicionarse en buscadores antes que tú. Y un largo etcétera. Debemos de tener siempre nuestros servidores lo más actualizados posibles. Y sólo permitir la escucha en los puertos totalmente necesarios. Además de que sólo debemos de abrir los puertos para las IPs, o países que sean extrictamente necesarios. Los escaneos automáticos en busca de vulnerabilidades en nuestros servidores va a ser constante, dalo por hecho. Si no lo haces, te arrepentirás más pronto que tarde, cuando la catástrofe haya acontecido. Así […]

Historial

GNU/Linux: automatizar backups de Mariadb/Mysql

El software de gestión de servidores te puede automatizar esta y otras tareas. Pero si estas haciendo artesanalmente un servidor, para no gastar ni un bit innecesariamente en correr software de gestión de servidores, tendrás que automatizar esta tarea: el hacer copias de seguridad de la base de datos. Sí, más vale prevenir que curar. Da por hecho que tarde o temprano los sistemas se rompen, así que más te vale haberte prevenido y tener una copia de seguridad por si acaso. Como me ha llevado un rato buscar entre los foros para construir esto, aquí que lo dejo por si a algún ubuntero le sirve. Creando el script Le idea es crear un sencillo Shell Script que automatice la copia de seguridad. Así que creo el fichero /home/ubuntu/backup.db.sh siguiente: #!/bin/bash mysqldump -h localhost -u usuario -pcontraseña nombre_base_de_datos | gzip > ~/backups/backup.db.$(date +%Y%m%d).sql.gz find /home/ubuntu/backups/ -type f -mtime +30 -name ‘backup.db.*.gz’ -execdir rm {} \; Este script hace 2 cosas. La primera es sacar una copia de la BD y la comprime a un fichero .gz. Lo segundo es que revisa si hay ficheros .gz de más de 30 días en el directorio de copias de seguridad, borrándolos. Creando carpeta […]

Cloudfront logo

AWS: sirviendo un píxel de conversión con el CDN de CloudFront

Una de las tareas más interesantes para saber si las cosas sirven para algo en tu negocio de Internet, consiste en seguir a las visitas. Es decir, consiste en el seguimiento de la conversión, mediante lo que se llaman píxeles de conversión. Es decir, si queremos saber si un canal de entrada a tu web convierte o no, si los anuncios que ponemos en otras webs, si los enlaces de redes sociales, emails, etc.. sirven de algo. Para esto debemos de llevar un seguimiento de dicha entrada a tu web. Un píxel de conversión es un código invisible para el visitante, que nos da la posibilidad de saber de dónde vienen las visitas a tu web. Muchas veces nos puede bastar con herramientas como Google Analytics, Piwik, o similar. Pero a veces necesitamos dar un paso más, creando nuestros propios píxeles de conversión. Así no estaremos de nuevo limitados a lo que te permiten las herramientas. Escenario Piensa que puedes recibir muchas visitas a los píxeles, miles o millones de visitas por minuto si estas en plena campaña publicitaria por Internet. Tanto que si los píxeles están en tu servidor, puedes llegar a provocarte un ataque de denegación de servicio […]

Vista de GoAccess

Estudiando logs de CloudFront con GoAccess

Quizá tienes que estudiar los registros de visitas de un proyecto que está en una nube, detrás de un CloudFront de Amazon Web Services. En este proyecto tenemos guardados los registros de las peticiones web que tenemos a los servidores. A veces es interesante revisarlos a este nivel. Es decir, que tenemos registros de las visitas, anonimizados, por ejemplo con Google Analytics. Pero pasan muchas más cosas por debajo de Google Analytics que sólo quedan reflejados en los registros de los servidores. Así que resulta que queremos saber absolutamente cuáles han sido todos los registros. Queremos saber qué IPs son las que más nos visitan. Qué consultas al servidor son las que están provocando errores de servidor, los 500, incluso antes de que lleguen los robots que nos indexan. Qué IPs son de robots que nos están crawleando, o indexando, y un largo etcétera. Probablemente aquí veamos las IPs de los robots de Google, Bing, Yahoo que nos visitan en busca de información de la web..

Servidor GNU/Linux bloqueado, no responde, no actualiza, no da servicio

Si has puesto un servidor Ubuntu/Linux lanzándole actualizaciones automáticas puede que hayas llegado a encontrarlo bloqueado. El servidor ha dejado de actualizarse y no hay manera de encontrar el problema. Cuesta mucho entrar al servidor. Un reinicio, paramos servicios, podemos hacer un par de cosas recién conectados, pero vuelve a bloquearse.. Volvemos a reiniciar para volver a entrar corriendo a ver qué pasa.. la gente corre.. ¡las mujeres y los niños primero! 😀 Esto pueden ser los síntomas de un servidor lleno. Lleno el disco duro, la memoria RAM, los i-nodos.. ha empezado a reventar por todos lados y necesitamos volverlo a la normalidad. Toca pues hacer un par de cosas..

Redirecciones HTTP

Cómo hacer un sencillo fichero de redirecciones con .htaccess

Una de las tareas habituales en las webs es hacer redirecciones. Las principales redirecciones que podemos necesitar son las temporales o las permanentes. Los principales códigos de respuesta de redirección van desde el 300 al 308, pero los más habituales son los 301 y el 302. Así de esta forma, si queremos hacer una redirección temporal se recomienda usar una redirección de tipo 302. En el caso de que ya sea una redirección definitiva conviene hacer una redirección definitiva de tipo 301. Los código 308 y 307 se corresponden respectivamente a los 301 y 302 pero con distintos matices. Estas redirecciones podemos almacenarlas sin más complicaciones en el fichero .htaccess en el directorio raiz.