Category Archives: Language

Migración drupal, mysql, apache, bugzilla, wordpress…

Esta semana ha sido dura, hemos migrado muchas aplicaciones en los servidores de GPL Tarragona:

– Apache 2
– MySQL 4
– Drupal 4.4.1
– Bugzilla

Han ido surgiendo problemas pero los hemos podido ir arreglando, sobretodo los más críticos. Aun quedan muchas cosas por pulir, pero lo más dificil ya ha pasado.

La compilación de las nuevas versiones ha sido más o menos sencillo, algun pequeño problema con mod_php pero Joni lo arregló rápido. Cuando teniamos todo compilado, era la hora de actualizar drupal… la actualización de la base de datos fue sorprendentemente perfecta, però los problemas llegaron con los charsets… UTF-8 vs ISO-8859-15. La información la tenemos toda en ISO pero drupal la cogia como UTF y entonces los acentos se veian fatal, la solución fue cambiar el código fuente de drupal, concretamente en “include/common.inc”, linea 1260:

//header("Content-Type: text/html; charset=utf-8");
header("Content-Type: text/html; charset=iso-8859-1");

[Actualización] Steven Wittens me ha hecho saber por e-mail que la solución que aqui propongo no es buena ya que hace que se “rompan” otras funcionalidades de Drupal, por ejemplo la generación de RSS inválidos o envio de e-mails también inválidos. Más info en este post. Muy probablemente miraremos que hacer en GPL Tarragona, como ahora sabemos que es posible hacer que haya webs con un charset y otras con otro (es decir, no tiene pq estar todo el Apache con un único charset)… quizás lo correcto seria migrar todo el Drupal a UTF-8 y por tanto migrar también los datos de la MySQL. [/Actualización]

Y tener apache configurado para que por defecto muestre ISO. En casos puntuales como el planet si necesitavamos que se tratase como UTF ya que dicha aplicación trabaja integramente con ese charset, así que la solución estuvo en añadir un .htaccess:

AddDefaultCharset UTF-8

De esta forma, utilizando .htaccess podemos decir que directorios o subdominios utilice UTF-8 en lugar de ISO-8859-15 (puesto por defecto en todo apache2 ya que se indica en /etc/apache2/conf/commonapache2.conf).

También queriamos que el dominio gplurv.org redirigiese a gpltarragona.org, sobretodo para la página principal (la del drupal) así que para conseguir que este redireccionamiento fuese transparente se ha configurado apache para que tanto con gpltarragona.org como con gplurv.org se acceda a la misma web (como vereis esta todo configurado como dominios virtuales):

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName gpltarragona.org
   ServerAlias www.gpltarragona.org www.gplurv.org gplurv.org
   DocumentRoot /var/www/gpltarragona.org/htdocs/
</VirtualHost>

Y se ha modificado el index.php del drupal para que al inicio del mismo contenga:

if (($HTTP_HOST=="gplurv.org") || ($HTTP_HOST=="www.gplurv.org") ||
($HTTP_HOST=="gpltarragona.org")){
    header("HTTP/1.1 303 REDIRECT");
    header("Location: http://www.gpltarragona.org$REQUEST_URIrn");
    return;
}

De esta forma se consiguen redirecciones transparentes al nuevo dominio sin perder links viejos del drupal.

También tuvimos problemas con el tema gplito de drupal, pero Joni trabajó en adaptarlo a la nueva versión y ya podemos volver a disfrutar de su obra 😉

Aun queda trabajo por hacer, hay links rotos ya que hemos separado drupal de todas las páginas que teniamos extras como el wiki. Hay que arreglarlo aunque yo voy a estar unas semanas con poco acceso a Internet, pronto me quitaran RDSI y tendre que esperar a que me llege el ADSL (si, por fin una conexión algo más decente :P).

Como ha sido una semana de migraciones hoy he dicho, venga vamos a actualizar mi blog a wodpress 1.2!! Y madre mia, me ha sorprendido lo rápido que ha sido. Ejecutar un upgrade y mantener la configuración antigua y el index.php. Facilisimo y sin problemas… fantástico 🙂

Ripear DVDs con mplayer

Con mplayer es posible ripear DVDs guardandolos directamente en un formato comprimido, para esto se utiliza el comando mencoder que puede ser usado con multitud de parámetros, aqui vemos unos cuantos:

mencoder -dvd  1 -dvd-device /dev/cdroms/cdrom0  -vop scale=640:480   -o   conferencia.avi   -ovc   lavc   -lavcopts vcodec=mpeg4:vhq:vbitrate=1800 -oac copy

mencoder conferencia.avi -vop scale -zoom -xy 250 -ovc lavc -lavcopts vcodec=mpeg4:vhq -oac copy -o conferencia250.avi

mencoder conferencia250.avi -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=100 -oac copy -o conferencia250l.avi

mencoder -dvd  1 -dvd-device /dev/cdroms/cdrom0  -vop scale=640:480   -o   conferencia.avi   -ovc   lavc   -lavcopts vcodec=mpeg4:vbitrate=800 -oac copy

En todo caso, para más información mirar el manual: ‘man menconder’

SpamAssasin

El filtro de anti-spam que utilizo es SpamAssasin, para mí es lo mejor que hay en estos momentos. Combina la detección de spam mediante cadenas con filtros bayesianos, estos últimos te permiten “enseñar” a spamassasin que correos son basura y cuales no. De esta forma es posible ir mejorando la eficiencia del filtro. Para modificar los filtros bayesianos podemos utilizar los siguientes comandos:

sa-learn --spam --mbox ~/Mail/spam
sa-learn --nonspam --mbox ~/Mail/inbox

Utilizo SpamAssasin en conjunto con Exim, procmail getmail y el antivirus ClamAV. Todo centralizado en un servidor de mi LAN al cual puedo acceder por IMAP con Evolution o por el webmail Squirrelmail.

Perl y CPAN

El lenguaje de programación Perl dispone de un repositorio inmenso de módulos llamado CPAN y permite la instalción de nuevos módulos con resolución de dependencias desde la consola, por ejemplo si queremos instalar “Bundle::Bugzilla” basta con ejecutar en una consola:

perl -MCPAN -e 'install "Bundle::Bugzilla"'

Gentoo, modificar fuentes antes de instalar

Es posible que nos encontremos con la necesidad de retocar el codigo fuente de alguna aplicación antes de instalarla, como podemos hacerlo de forma que siga estando integrado en le portage de Gentoo? Si usamos “emerge programa” directamente, no nos dará oportunidad de realizar ninguna modificación y si copiamos a /usr/portage/distfiles/ nuestro codigo fuente modificado entonces no coincidirá con el MD5 del portage y el emerge no funcionará. Soluciones:

  1. Cambiar el MD5
  2. Realizar la instalación paso a paso

Veremos como se realiza este segundo punto, primero bajamos y desenpaquetamos el programa que deseamos instalar (pondre como ejemplo gaim):

cd /usr/portage/net-im/gaim/
ebuild gaim-0.78-r3.ebuild fetch unpack

A continuación podemos ir al directorio “/var/tmp/portage/gaim-0.78-r3/work/” donde se encuentran las fuentes descomprimidas del gaim que estamos instalando, aqui podemos realizar las modificaciones al codigo fuente que consideremos oportunas y a continuación:

cd /usr/portage/net-im/gaim/
ebuild gaim-0.78-r3.ebuild compile install qmerge

Esto compilara, instalará y fusionara en el portage el programa original junto a nuestras modificaciones.

Cambio de permisos de forma selectiva

En ocasiones queremos cambiar los permisos de un directorio completo, incluyendo todos sus subdirectorios y ficheros. Lo habitual es hacer un cambio de permisos recursivo como:

chmod -R 644 datos/

Con esto pondriamos los permisos: -rw-r–r– Es decir, lectura/escritura para el propietario y lectura para el grupo y los otros. Pero en el caso de que tengamos un subdirectorio dentro de “datos/”, a este también le habremos puesto esos permisos, lo que significa que no podremos entrar en el directorio ya que el permiso de ejecución en un directorio significa que se puede entrar en el.

Esto supone un problema, queremos cambiar los permisos de todos los archivos y subdirectorios de “datos/” pero si lo hacemos como hemos visto asignamos unos permisos a los subdirectorios que no son correctos. La solución:

find data/ -type f -exec chmod 644 '{}' \;
find data/ -type d -exec chmod 755 '{}' \;

Antes de ; va una barra contraria a /, no se pq motivo se pierde al visualizar el post.

Con estos dos comandos estaremos haciendo ‘chmod 644’ solo a los ficheros que esten dentro de “data/” y sus subdirectorios, y se hará ‘chmod 755’ a los subdirectorios de “data/”. Por supuesto se pueden poner los permisos que nos convengan o indicar el directorio que queramos.

Comandos mldonkey para limitar descargas

El cliente P2P que utilizo es mldonkey, se pueden configurar diversos parámetros mientras esta en ejecución y los que me resultan más utiles són los que limitan las descargas o subidas:

# Sin limites = 0
set max_hard_download_rate 5
set max_hard_upload_rate 3
set max_concurrent_downloads 0
set max_upload_slots 3

Este ejemplo limitaria los downloads a 5 KB/s y los uploads a 3KB/s, permite que se descarguen un numero ilimitado de archivos a la vez pero solo permite que se suban 3 archivos simultaneamente.

Texto “cifrado”

Es muy curioso este texto invertido/cifrado/…. no se bien bien como catalogarlo 😉

“Sgeun un etsduio de una uivenrsdiad ignlsea, no ipmotra el odren en el que las ltears etsan ersciats, la uicna csoa ipormtnate es que la pmrirea y la utlima ltera esten ecsritas en la psiocion cocrrtea. El rsteo peuden estar ttaolmntee mal y aun pordas lerelo sin pobrleams. Etso es pquore no lemeos cada ltera por si msima snio la paalbra cmoo un tdoo. Pesornamelnte me preace icrneilbe…”

Libros recomendados por un amigo

Luis me recomendó hace tiempo unos libros, tengo guardado los nombres en un fichero de mi HD y no quiero perderlos así que mejor los pongo en el blog. Los libros que me recomendó fueron:

“La oración de la rana” Anthony de Mello
“Veronika decide morir” de Paulo Cohelo
“La trilogía de Nueva York” de Paul Auster
“El caballero de la armadura oxidada”de Robert Fisher