Posts Tagged ‘MediaWiki’

Instalación y configuración de memcached en MediaWiki

Monday, June 30th, 2008

A continuación presento como instalé y configuré memcached en MediaWiki, sobre un Ubuntu 7.04.

¿Qué es memcached?

Memcached es un sistema de cache, que almacena objetos en memoria. Estos objetos son las consultas que se van realizando a la base de datos. La cache que utiliza es una tabla hash, que puede ser distribuida entre varias máquinas.

Beneficios del uso de memcached

Aumento en el rendimiento y disminución en la carga de la base de datos. Al estar cacheada las consultas, se puede “armar” más rápido las páginas que se sirven a los usuarios. Además se reduce considerablemente los accesos a la base de datos.

Requerimientos

  • PHP debe estar compilado con la –enable-sockets
  • libevent1
  • memcached

Para verificar que tenemos PHP compilado con esa opción podemos verificarlo con phpinfo (creando un página PHP con <?phpinfo();?>). En la figura podemos ver que tenemos compilado PHP con esa opción.

Socket habilitado en phpinfo

Para satisfacer los otros dos requerimientos, basta ejecutar un aptitude install memcached libevent1.

Verificación de funcionamiento

Podemos ver si está funcionando, verficando si efectivamente memcached está escuchando en su puerto.


$ netstat -tap
Conexiones activas de Internet (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 *:53856                 *:*                     LISTEN     5409/rpc.statd
tcp        0      0 localhost:2208          *:*                     LISTEN     4983/hpiod
tcp        0      0 *:nfs                   *:*                     LISTEN     -
tcp        0      0 *:11211                 *:*                     LISTEN     2
9248/memcached

Esta verificación es redundante ya que las dependencias de memcached son resueltas por aptitude, pero útil si han compilado memcached.


# cd /usr/bin
/usr/bin# ldd memcached
        linux-gate.so.1 =>  (0xffffe000)
        libevent.so.1 => /usr/lib/libevent.so.1 (0xb7edc000)
        libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7d9b000)
        /lib/ld-linux.so.2 (0xb7ef9000)

Configuración de memcached en MediaWiki

Hay que editar el archivo LocalSetting.php y modificar las variables wgMainCacheType y wgMemCachedServers.

La variable wgMainCacheType toma como valor una constante. La siguiente lista contiene las constantes que pueden ser asignadas, no voy a entrar en detalle en el uso específico de cada una.

  • CACHE_ANYTHING
  • CACHE_NONE
  • CACHE_DB
  • CACHE_MEMCACHED
  • CACHE_ACCEL
  • CACHE_DBA

$wgMainCacheType = CACHE_MEMCACHED;
$wgMemCachedServers = array( "127.0.0.1:11211” );

Para poder asignar el valor correcto en wgMemCachedServers, necesitamos saber porque puerto está escuchando memcached. Esta información se encuentra detallada en /etc/memcached.conf. Dejo un fragmento del archivo.


# Default connection port is 11211
-p 11211

# Run the daemon as root. The start-memcached will default to running as root if no

Bibliografía

Restringir y confirmar la creación de cuentas en MediaWiki

Friday, June 20th, 2008

La explicación se basará en una versión superior a la 1.5 y teniendo en cuenta que se ha instalado satisfactoriamente.

Restringir creación de cuentas

Tendremos que editar el archivo LocalSettings.php (el cual se debería encontrar en la carpeta donde instalamos MediaWiki) y agregar al final de él la siguiente línea


$wgGroupPermissions['*']['createaccount'] = false;

Ahora si tratamos de registrarnos, nos dirá que no hay un usuario con dicho nombre

Para terminar explicaré como habilitar la extensión para la confirmación de cuentas para esto haceremos

Confirmar creación de cuentas

  1. Iremos a la carpeta de extensiones (extensions) y por medio de svn bajaremos la extensión desde el repositorio de wikimedia

    
    cd extensions
    svn checkout http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/ConfirmAccount/
    
  2. Ahora deberemos correr un script (en /extensions/ConfirmAccount)
    para crear ciertas tablas en nuestra base de datos, para esto en
    función de la base de datos que estemos usando, es el que tendremos que
    correr:

    • PostgreSQL: ConfirmAccount.pg.sql
    • MySQL: ConfirmAccount.sql

    Si en la instalación hemos modificado el prefijo de las tablas,
    tendremos que indicarlo en el script. Para saber el prefijo y los datos
    sobre la base de datos (especificados durante la instalación) podemos
    revisar el archivo LocalSettings.php y encontraremos lo siguiente

    
    $wgDBtype           = "mysql";
    $wgDBserver         = "192.168.1.111";
    $wgDBname           = "wikidb";
    $wgDBuser           = "wikiuser";
    $wgDBpassword       = "123";
    
    # MySQL specific settings
    $wgDBprefix         = "miPrefijo";
    

    Por ejemplo, habría que reemplazar las ocurrencias /*$wgDBprefix*/ por el valor que tiene la variable wgDBprefix en nuestro LocalSettings.php, en mi caso es miPrefijo. Aquí dejo las partes puntuales que habría que modificar del script

    
    -- This stores all of our reviews,
    -- the corresponding tags are stored in the tag table
    CREATE TABLE /*$wgDBprefix*/account_requests (
      acr_id int unsigned NOT NULL auto_increment,
    
    
    -- This stores all of credential information
    -- When accounts are confirmed, the identity info goes here
    CREATE TABLE /*$wgDBprefix*/account_credentials (
      — Revision ID #
      acd_id int unsigned NOT NULL auto_increment,
    

    FInalizada la modificación de los script faltaría sólo correrlos para esto nos posicionaremos en la carpeta de la extensión (extensions/ConfirmAccount) y ejecutamos

    
     mysql -D wikidb -u wikiuser -h 192.168.1.111 < ConfirmAccount.sql
    
    

    Los valores de los parámetros D, u y h, se encuentran definidos en el archivo LocalSettings.php

  3. Ahora deberemos incluir la siguiente línea en LocalSettings.php
    
    include_once('extensions/ConfirmAccount/SpecialConfirmAccount.php');
    
  4. Debemos asegurarnos que este activado (true) la variable $wgEnableEmail en LocalSettings.php
  5. 
     ## For more information on customizing the URLs please see:
    ## http://www.mediawiki.org/wiki/Manual:Short_URL
    
    $wgEnableEmail      = true;
    
    $wgEnableUserEmail  = true;
    
    $wgEmergencyContact = “algo@mail.org”;
    $wgPasswordSender = “algo@mail.org”;
    

Aquí dejo como se modifica la página de registración y la nueva página para solicitar una cuenta al wiki

Página de registración modificada por la extensión

Página de solicitud de cuenta creada por la extensión

Uno de los datos que se deben llenar en la solicitud de la cuenta, es una bibliografía personal
que conste de 50 palabras. Según la seriedad de nuestro wiki esto puede
ser mínimo, justo o demasiado. Para alterar la cantidad de palabras hay
que editar la variable wgAccountRequestMinWords en el archivo SpecialConfirmAccount.php (en extensions/ConfirmAccount). En este caso lo modifiqué a 25 palabras.


# Minimum biography specs
$wgAccountRequestMinWords = 25;

Bibliografía