Usar S3 Bucket para contenido estatico y s3cmd

Usar S3 Bucket para contenido estatico y s3cmd

Una buena solución, tanto para externalizar el servicio de imagenes como para la utilización de un dominio externo para estaticos y mejorar la carga de la web, es migrar nuestras imagenes a un servicio como S3, si no queremos utilizar CloudFront CDN. Dependiendo de lo que quieras y de cuales sean tus necesidades, elegirás S3 o Cloudfront.

Si no te decides y quieres saber un poco mas sobre las diferencias entre cada servicio, puedes entrar aquí e intentar aclararte un poco.

Instalar s3cmd en Centos y configuracion con tu cuenta de AWS

Para empezar, tendremos que instalar s3cmd para sincronizar los ficheros que tenemos, nosotros tenemos ua instalación de WordPress, así que queremos sincronizar todo lo que hay dentro de /wp-content/uploads/*

Lo primero que haremos será acceder a nuestro servidor o VPS mediante ssh y crear el respositorio de s3tools para poder descargar s3cmd:

Copiamos el siguiente contenido en el repo que estamos creando:

Una vez creado el repo, iniciamos la instalación de s3cmd:

Ya teneos instalada la tool para poder copiar y sincronizar ficheros desdes nuestro servidor a nuestra cuenta de S3.
Ahora tendremos que configurar s3cmd para conectar con dicha cuenta y poder ver los buckets que tenemos creados.

Configuración de s3cmd para conexión con cuenta S3 de Amazon

Lo primero que tenemos que hacer, si no lo hemos hecho aún, es darnos de alta en Amazon y crearnos una cuenta, nos pedirán que pongamos nuestra tarjeta de Credito, seguimos todos los pasos, y antes de empezar a configurar, toma nota del Secret Access Key y del Acces Key Id que se nos facilitará al final del proceso. Si no localizamos estas Keys, podemos generarlos nosotros mismos. El proceso para generarlas lo detallo más abajo.

Una vez tengamos apuntadas estas dos Keys, ejecutamos en nuestro servidor, vps, drplet, EC2 o lo que sea, el siguiente comando:

Durante el proceso de configuración se pedirán las diferentes claves. Lo aconsejable es copiar y pegar y no escribirlas a mano. Las introducimos y clicamos Enter.
Se nos pedirá una clave GPG, que permite el cifrado de los datos qeu enviemos a S3 para que ni el personal ni alguien que tenga acceso a la cuenta pueda leer estos archivos, os recomiendo utilizarla, ya que no implica nada mas que introducir una frase, eso si, guardadla bien y docuemntarlo.Una vez finalizado el proceso, se nos pedirá si queremos testear la conexion con S3, le damos a “y” y si la conexión es satisfactoria nos aparecerá un Success!!

Ahora ejecutamos un ls para listar los buckets que tenemos creados:

Crear un bucket es muy sencillo así que no lo explicaré en este post, pero lo que si hay que tener en cuenta es la policy que tendremos que añadir a nuestro bucket para que los ficheros sean accesibles sin autenticación.

Para Crear una plicy, Amazon dispone de una herramienta online, un Policy Generator. Si accedeis al link veréis un sencillo formulario en el que se nos piden una serie de datos para crear nuestra Policy. Os detallo un ejemplo de lo que teneis que poner para que os genere una policy para que los permisos que se apliquen a los nuevos ficheros que se suban tengan permisos para poder ser publicos:

Effect: Allow
Principal: *
AWS Service: Amazon S3
Actions: s3:GetObject
Amazon Resource Name (ARN): arn:aws:s3:::nombre-de-tu-bucket/directorio/*

Una vez relleneis estos datos, clicais sobre “Add Statement” y luego sobre “Generate Policy”, esto os generará un código como este:

Tenéis que copiar todo este código, iros a vuestro bucket en el panel de Amazon, clickar sobre el icono con la Lupa y ver las Propiedades. En las propiedades desplegais “Permissions”, y primero añadís un Permiso para el usuario “Everyone” con permiso para “List”. Ahora hacéis clic sobre “Edit Bucket Policy” y añadis el codigo que os ha sacado el generador de plicys y le dais a “Save”

Esto os permitirá que todos los ficheros que se creen en ese bucket, ya se creen con un usuario “Everyone” con permisos para abrir y descargar los ficheros.

Sincronización de ficheros con S3cmd

Una vez tengamos todo listo, podemos proceer a sincrinizar a nuestro bucket todos los ficheros de la carpeta uploads/ de nuestro wordpress, dependiendo de la cantidad de imágenes que tengáis y de vuestra velocidad de subida, puede tardar bastante.

Ya que es la primera vez que vamos a subir los ficheros, utilizaremos el comando put en lugar de sync.

Y esto empezará el proceso de copia. Hemos que tener en cuenta que si le pasamos la trailing slash o barra final al directorio de origen, esto nos copiara también el directorio de origen, quedando de la sigueinte forma en el destino:

s3://nombre-del-bucket/directorio/uploads/xxxx.jpg

Solucionar permisos en S3 de ficheros masivamente con s3cmd

Si no hemos creado una policy antes de empezar a sincronizar los ficheros, los ficheros que tengamos en S3 no serán accesibles publicamente, y desde el panel de Amazon, hay que ir fichero a fichero cambiando los permisos, y eso no es viable. Hay una opción mas sencilla y mejor que utilizar programas que se conectan a S3 como Cyberduck (Mac) o S3 Browser (Windows), y es con s3cmd. Para ellos solo tenemos que ejecutar el siguiente comando y dejar que los permisos se apliquen recursivamente a todo el bucket.

Configurar Actualización de WordPress mediante SFTP

Actualización automática de WordPress por sftp

Existen muchos tipos de configuraciones para poder actualizar nuestro wordpress, algunas más seguras y otras mas sencillas y de acceso mucho más sencillo para los usuarios.
Dependerá del uso que se le vaya a dar a la instalación de WordPress, y del tipo de usuario “cliente” que vaya a hacer uso de ella. Yo por ejemplo, en mis blogs no tengo habilitada la posibilidad de realizar una acutalización desde el panel de WP, porqué diréis, pues en este caso por temas de seguridad, y ya que me tengo yo que administrar mis webs, pues me lo monto de esa forma.

Para algunos clientes, o para proyectos en los que hay muchas instalaciones que mantener, se puede utilizar el plugin de Automatic Updater, que te permite tener un control bastante grande sobre las actualizaciones, y sobre si quieres elegir entre permitir que actualice plugins, o Core o ambas.
Sigue leyendo

Error: Package: Requires: libmysqlclient.so.16()(64bit)

Solucionar Error Error: Package: php-mysql-5.3.3-27.el6_5.x86_64 (updates) Requires: libmysqlclient.so.16()(64bit)

 

Para este tipo de error no existe una solución única, así que a continuación os voy a detallar muy rápidamente como solventar este error si hemos instalado php desde el repositorio remi, y tras desinstalarlo queremos utilizar las librerías php desde epel.

En mi caso en una maquina virtual se instalaron los paquetes para php desde el repositorio de remi, de la siguiente forma.
Sigue leyendo

Instalar Redis Server en CentOS 6.x 6.5

Instalar Redis Server en CnetOS 6.5

Tras una búsqueda de como instalar el servidor Redis para CentOS, y encontrar varios sistemas un poco liosos, os adjunto una forma muy sencilla a través del repositorio epel y utilizando yum.

Redis es un sistema de cache con licencia open source, basado en “key-values” se refieren a él como un sistema de cache de datos estructurados ya que las claves que guarda en memoria pueden contener (strings, hashes, lists, store sets)

Para consultar la documentación podemos consultar su página web aqui
Sigue leyendo

Instalar Denyhosts en Centos 6.5

Tengo una guía un poco anticuada en la que pusé un script que me agencié de mi grán mentor y precursor Rubén Ortíz muy vilmente, pero espero que esto no le haya perjudicado ni mucho menos, espero en cambio, haber podido ayudar a mas gente.

Denyhosts es una utilidad de seguiridad muy sencilla y útil. Monitoriza los logs de acceso a nuestro servidor linux y bannea las ips tras un número de accesos fallidos.
Sigue leyendo

Instalar MySQL 5.6 community release

Os detallo los pasos para instalar la última release de mysql 5.6 community. La verdad es que estoy muy contento con esta última versión, ya que la tengo en producción en varios proyectos con alto trafico y rinde muy muy bien.

DESCARGA DEL RPM

Descargamos el rpm desde la web de dev.mysql.com

Sigue leyendo

Eliminar versionado de ficheros css en WordPress

En relación con el post Configurar compresión gzip para apache httpd, Os adjunto un bloque de código que eliminará de las urls de los estaticos el codigo de versionado de los fichoeros. Esto es necesario si queremos que nos funcione correctamente la compresión gzip para éstos.

Para poder hacerlo, podremos añadir el código que adjuntaré a continuación en el functions.php del tema que tengamos activo. El codigo es:

Configurar compresión gzip para apache httpd

Para optimizar el rendimiento de vuestra web, y reducir también el ancho de banda saliente, existe la posibilidad de habilitar la compresión gzip en vuestro servidor web. En este post voy a comentaros unos sencillos pasos para habilitar la compresion y la configuración necesaria.

Por defecto, apache ahora viene con el módulo activado mod_deflate, que es el encargado de realizar la compresión “antiguamente llamado mod_gzip”. Para verificar que tenemos el modulo activo deberemos comprobar que la siguiente línea esta en nuestro fichero de configuracion /etc/httpd/conf/httpd.conf

Y añadimos al mismo fichero lo siguiente:

Reiniciamos apache

Para verificar si tenemos activado correctamente podemos hacerlo utilizando la herramienta Webpagetest.org