Por qué y cómo implementar un nombre de dominio canónico

Es bastante frecuente que un cliente tenga el registro de más de un nombre de dominio para su sitio web, así como también que desee que su sitio esté accesible a través de cualquiera de sus dominios… sin embargo, disponibilizar el mismo contenido a través de distintas URL no es una buena idea, sino que siempre debemos preferir configurar un dominio como el principal.

A continuación, por qué es preferible utilizar solamente un dominio para tu sitio, y cómo configurarlo en distintos servidores web.

Continue reading “Por qué y cómo implementar un nombre de dominio canónico”

Soporte para ImageMagick en PHP con LAMPP

Hace algunos días estaba intentando averiguar cómo habilitar el soporte para [Image Magick->@wiki] en PHP al utilizar LAMPP (o más exactamente XAMPP for Linux), pero en ninguna parte encontré información específica… así que aquí va una pequeña receta para hacerlo bajo Ubuntu, junto a algunas notas pertinentes. El proceso debería ser bastante similar en otros sistemas y en caso de querer agregar soporte para otras extensiones.

Image Magick es conjunto de programas para trabajar con imágenes que soporta una gran cantidad de formatos. En ocasiones, logra mejores resultados que [GD->GD Graphics Libray@wiki], la librería que suele acompañar a PHP para la manipulación de imágenes — por ejemplo, al generar imágenes a partir de texto, Image Magick logra una mejor medición de cada uno de los caracteres, creando un texto más armónico que GD. A menos que estés creando un script donde hay mucho trabajo con gráficos probablemente no notes la diferencia, pero si sientes que GD queda algo corto en algún caso bien podrías darle una oportunidad a Image Magick.

En PHP, es posibile habilitar el soporte para ImageMagick a través de PECL (un sistema para agregar extensiones similar a CPAN en el caso de Perl o [Gem->RubyGems] en el caso de Ruby), pero para ello debemos realizar algunos pasos previos.

A los que nos interesa:

  1. Instalar LAMPP (paquete normal): se puede bajar desde el sitio de XAMPP for Linux; donde también se detallan las instrucciones de instalación.
  2. Instalar paquete de desarrollo LAMPP, que también se descarga desde el sitio de XAMPP for Linux. Este paquete es necesario para compilar las extensiones que deseemos agregar a la instalación base de XAMPP.
  3. Instalar autoconf vía Synaptic, o bien por línea de comandos con sudo aptitude install autoconf. Este paquete permite generar los scripts automáticos de configuración para las extensiones que posteriormente vamos a bajar y compilar.
  4. Instalar libmagickwand vía Synaptic, o con sudo aptitude install libmagickwand2 libmagickwand-dev, para incluir las cabeceras de desarrollo que son necesarias para compilar la extensión para PHP. Esta librería sirve de interfaz para ImageMagick. Quizás aquí alguien se preguntará ¿pero cómo sé que tengo que bajar libmagickwand?. La respuesta es simple: porque al intentar instalar la extensión por primera vez, el compilador se detuvo justamente por la falta de este paquete.
  5. Instalar soporte para Imagemagick con PECL: llegamos a lo que nos interesa. Desde la terminal: sudo /opt/lampp/bin/pecl install imagick. Aquí hay que estar atento a los requerimientos para compilar e instalar la extensión. En caso que la instalación falle, habrá que revisar qué paquete esté faltando, instalarlo y luego ejecutar nuevamente la instalación
  6. Agregar módulo a php.ini: finalmente, debes editar el archivo /opt/lampp/etc/php.ini, y agregar en la sección de Dynamic Extensions: extension="imagick.so" de modo de cargar la extensión al reiniciar el servidor.
  7. Reiniciar XAMPP con sudo /opt/lampp/lampp restart para recargar la configuración de PHP
  8. Si todo salió bien, al visualizar un archivo con phpinfo(); debería aparecer el módulo imagick cargado.

VPS local con Ubuntu y VirtualBox

Montar un servidor privado para pruebas locales con VirtualBox y Ubuntu puede resultar una buena forma de experimentar antes de hacer el salto a un VPS

Hace algún tiempo publiqué una rápida revisión de enlaces con algunos artículos con información de [cómo montar un VPS->Intentando montar un VPS].

Entonces, mi intención era crear una [máquina virtual->Máquinas virtuales en Ubuntu/Linux] para poder comenzar a experimentar con algunas cosas en forma local — decidirse por un VPS implica un conocimiento técnico suficiente para hacer frente a cosas por las que en un alojamiento compartido jamás tendrías que preocuparte, como instalar y configurar Apache u otro servidor web, firewall, seguridad, asegurar rendimiento, etc… acá no estarás haciendo las cosas por medio de algún panel de control, sino probablemente lo tengas que hacer todo por consola, por lo que montar una máquina virtual en local es una buena opción si no quieres estar pagando por un servicio sólo para experimentar. Al final, si eres lo bastante aplicado, deberías terminar con una configuración que quede como un guante (perfectamente adaptada a tus requerimientos) y con el conocimiento necesario para aventurarte en algún proyecto público.

Continue reading “VPS local con Ubuntu y VirtualBox”

Tres trucos para OJS

Tres consejos (más un extra) para mejorar algunos aspectos de tu instalación de Open Journal Systems

[OJS->Open Journal Systems] es un completo sistema de gestión y publicación para revistas académicas en línea con el que he estado trabajando últimamente en un par de proyectos, en los que he aprendido un par de trucos que quizás pueden resultar útiles a quienes lo utilicen.

Personalizar la página de inicio

Si bien en OJS tenemos la oportunidad de aplicar hojas de estilo CSS personalizadas (con todo el potencial de esto), a veces podría ser necesario hacer cambios estructurales en la página que hará de presentación del sitio… esperemos que, por el bien de tus usuarios, esto no signifique meter una inútil y molesta presentación en Flash.

La forma de lograrlo es muy sencilla: basta con agregar un archivo llamado index.html en la raíz de tu instalación de OJS; es decir, si para ingresar a tu instalación de OJS te diriges a http://www.turevista.com/, la página que hará de portada estará en http://www.turevista.com/index.html

Esto debería funcionar en prácticamente cualquier instalación, ya que en la mayoría de los casos los servidores web están configurados para preferir un archivo .html por sobre un .php

De esta manera, al ingresar a turevista.com, el usuario verá el archivo index.html en lugar de index.php; para acceder a este último, deberás especificarlo explícitamente: turevista.com/index.php

Como podrás imaginar, en tu index.html puedes hacer y deshacer lo que quieras.

En este punto, podríamos encontrar un pequeño problema de usabilidad, y es que la barra de navegación de OJS incluye un enlace a “Inicio” que no lo llevará a tu página de inicio personalizada, sino a la página de inicio de OJS; sin embargo, esto se puede resolver fácilmente (al menos bajo servidores web Apache) creando un archivo .htaccess donde puedes especificar que las peticiones a la página de inicio de OJS sean redirigidas a tu página de inicio personalizada.

Por ejemplo, si la página de inicio de OJS está en http://turevista.com/index.php/nombre-de-tu-revista/index, debes agregar la siguiente línea a tu .htaccess:

Redirect 301 /index.php/nombre-de-tu-revista/index http://turevista.com/index.html

Continue reading “Tres trucos para OJS”

Intentando montar un VPS

Una rápida recolección de enlaces sobre VPS, Ubuntu Server, JeOS, servidores web, configuración, instalación…

Hace algún tiempo vengo con ganas de ponerme a “jugar” con un VPS, por lo que he estado buscando documentación e intentando montar un servidor de prueba en una máquina virtual dentro de mi propio equipo.

Aquí van algunos enlaces que he consultado y me han servido para ello…

Ubuntu Server Edition

  • Ubuntu Server Edition — la versión para servidores de la popular distribución de Linux. Varios servicios de VPS la ofrecen como alternativa.
  • Ubuntu Server Edition JeOS — una variente “eficiente” de la versión de Ubuntu para servidores, especialmente indicada para utilizar en máquinas virtuales. Promete ofrecer mejor desempeño, menor utilización de disco duro (la imagen pesa alrededor de 100 MB, instalado alrededor de 300 MB) y menos requerimientos de mantención.
  • Ubuntu Server Guide — la documentación oficial de Ubuntu para la versión 8.04 (Hardy). Hay guías para muchas de las tareas más comunes.
  • ApacheMySQLPHP — documentación creada por la comunidad de Ubuntu para instalar la parte “AMP” de “LAMP“.

Configuración, tutoriales y más

GNU Screen

GNU Screen es un programa informático multiplexor de terminales desarrollado por el proyecto GNU. Permite a los usuarios acceder a múltiples sesiones separadas dentro de una sola ventana de terminal o en una sesión de terminal remota. Es util para tratar con múltiples programas en la línea de comandos y para separar programas de la terminal que los lanzó. [GNU Screen – Wikipedia, la enciclopedia libre]

Ubuntu VPS en Slicehost

Slicehost es un proveedor de VPS que, al menos por lo que he visto, goza de una fama bastante buena.

  • Slicehost articles and tutorials &mdsah; un repositorio de artículos y tutoriales. Tienen información para instalar, administrar y arreglar errores para las distribuciones que ofrecen: Ubuntu Hardy, Ubuntu Gutsy, Debian y CentOS.
  • Ubuntu Hardy Heron Slices — acceso directo a la documentación sobre Ubuntu Hardy en Slicehost.

pig-monkey.com preparó una serie de artículos sobre su migración a un VPS con Ubuntu en Slicehost, desde su primeros pasos hasta la instalación de WordPress.

¿Apache, lighttpd o Nginx?

Si bien Apache es para muchos la opción “por default” para un servidor web bajo Linux (u otros unices), lighttpd y nginx han ganado adeptos progresivamente, en especial por su bajo consumo de recursos.

Algunos artículos con comparaciones (tan odiosas como necesarias), recomendaciones e información general.

Ojo con las características de cada benchmark, que hay bastante diferencia entre servir archivos estáticos o generados por scripts.

Controla la fecha de vencimiento de tus archivos con mod_expires

Como ponía hace un par de días atrás al presentar PHPSpeedy, una de las medidas que podemos tomar para mejorar el tiempo de carga de un sitio web es agregar cabeceras de expiración muy lejanas en el futuro.

Primero expondré cómo lograrlo y más adelante algunas explicaciones que podrían ser útiles si andas medio perdido.

Cómo hacerlo

Primero que nada, debes en cuenta que esto sólo funcionará si estás trabajando con [Apache->http://www.apache.org] como servidor web. Ahora, pondré como ejemplo que queremos controlar la expiración de los archivos como imágenes, etc. que hemos subido en nuestro directorio wp-content/uploads de una instalación de WordPress.

El primer paso será, por supuesto, ir al susodicho directorio. Una vez allí, debes crear un archivo .htaccess o editar el que ya tengas allí y agregar lo siguiente:

<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 6 months"
</IfModule>

Con ello, todos los archivos que estén bajo wp-content/uploads (y sus subdirectorios) informarán que expiran en 6 meses tras la fecha en que el usuario ha accedido a ellos.

Si usas Firefox y tienes instalada la extensión Web Developer, puedes revisar si está funcionando si te diriges a Information → View Response Headers. En la página que presenta la información deberías ver entre las respuestas una que diga Expires:

El tiempo se puede especificar desde la fecha de acceso (access, como en este caso) o desde la fecha de modificación del archivo (modification), y el lapso de tiempo se puede determinar como years, months, weeks, days, hours, minutes, seconds. Por supuesto, las equivalencias de tiempo se mantienen (o sea, 1 month = 30 days = 2592000 seconds). También se pueden especificar algo como 1 year 6 months 15 days.

Ahora, otro ejemplo, esta vez con los archivos de nuestro tema. Lo mismo que en el caso anterior, nos dirigimos al directorio donde está y creamos el archivo .htaccess, pero en este caso agregaremos algo nuevo: ya que de vez en cuando damos algunos retoques a nuestras hojas de estilo o al javascript, fijaremos una expiración menor en estos casos:

<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 6 months"
ExpiresByType text/css "access plus 2 weeks"
ExpiresByType text/javascript "access plus 4 weeks"
</IfModule>

Como puedes ver, ExpiresByType debe ir seguido del tipo de archivo para el que queremos ajustar con mayor precisión la expiración y luego la cantidad de tiempo que le queremos dar.

Existe otra forma de fijar el tiempo: en vez de modification y access se utilizan simplemente las letras M o A y luego el tiempo en segundos: ExpiresDefault A86400 = un día después del acceso.

Continue reading “Controla la fecha de vencimiento de tus archivos con mod_expires”