En el artículo anterior expliqué cómo montar un servidor Web en OpenBSD utilizando el servidor httpd con PHP-FPM. Mi objetivo al momento de instalar un servidor Web con OpenBSD era migrar un sitio MediaWiki 1.19.1 corriendo actualmente en un servidor Debian 6. Este articulo documenta la experiencia, junto con la actualización del sitio MediaWiki a la última versión estable disponible actualmente (1.26.3).



MediaWiki es un paquete de software libre y open source para proveer sitios wiki, originalmente desarrollado para implementar Wikipedia. Una wiki es una gran herramienta para editar documentos de forma colaborativa. Personalmente la utilizo como repositorio central de documentación entre mis colegas y compañeros Sysadmins, algo que ha dado muy buenos resultados.

Como saben, el soporte LTS para Debian 6 ha finalizado en febrero, por lo que ha llegado la hora de migrar los viejos servidores a Debian 7 OpenBSD.

Migración del sitio a un nuevo servidor

Partiendo de un servidor Web instalado y funcionando, el primer paso consiste en crear y cambiar al directorio base para la wiki:

# mkdir /var/www/htdocs/wiki
# cd /var/www/htdocs/wiki/

Luego copiar los archivos del sitio Web desde el servidor origen utilizando tar sobre un túnel SSH:

# ssh -p 2222 webadmin@wiki.linuxito.com 'cd /var/www/wiki; tar cf - *' | tar xf -

Cambiar el ownership para que el usuario con el que corren los servicios Web y FPM sea el dueño de los archivos:

# chown -R www:www /var/www/htdocs/wiki

Esta instalación en particular no utiliza una base de datos MySQL, sino que utiliza una base SQLite3. Instalar SQLite3, en caso de no estar instalado. En sistemas OpenBSD ejecutar:

# pkg_add sqlite

En Debian y derivados ejecutar apt-get install php5-sqlite.

Crear el directorio donde guardar la base de datos SQLite3:

# cd /var/www
# mkdir -p var/databases
# cd var/databases/

Traer la base de datos desde el servidor origen (se recomienda detener el servicio Web en el servidor origen para evitar inconsistencias en los datos):

# scp -r -P 2222 webadmin@wiki.linuxito.com:/var/local/databases/* .

Editar el archivo de configuración de MediaWiki para apuntar correctamente a la base de datos SQLite3:

# nano LocalSettings.php

Modificar la variable $wgServer si se utiliza una nueva URL:

$wgServer           = "http://wiki.linuxito.com";

Cambiar la ruta al directorio de bases de datos SQLite3:

$wgSQLiteDataDir    = "/var/databases";

En OpenBSD, el servidor httpd corre chrooteado, por lo que es necesario especificar las rutas absolutas relativas al directorio donde se hace chroot. En este caso el chroot es al directorio /var/www, por lo tanto, si el directorio para las bases de datos SQLite3 es /var/www/var/databases, deberá especificarse /var/databases en la variable $wgSQLiteDataDir.

Este directorio y todos sus archivos deben tener permisos de escritura para el usuario con el que corre el servidor Web o servidor FPM:

# chown -R www:www /var/www/var/databases
# chmod -R 770 /var/www/var/databases/my_wiki.sqlite 

Disparando a los problemas

Al finalizar la migración, el sitio cargó con éxito pero el contenido de todas las páginas estaba en blanco a causa a un error con la librería PCRE:

PHP message: PHP Warning:  preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /htdocs/wiki/includes/MagicWord.php on line 872

La causa de este problema es que el nuevo servidor posee una versión más actualizada de PCRE, la cual no es compatible con la versión de MediaWiki 1.19.1. Esto es una buena excusa para actualizar la instalación de MediaWiki a la última versión estable.

Descargar la última versión de MediaWiki (instalar wget si no está disponible ejecutando pkg_add wget):

# cd; wget https://releases.wikimedia.org/mediawiki/1.26/mediawiki-1.26.3.tar.gz

Extraer el paquete y copiar los nuevos archivos:

# cd /tmp
# tar xzf /root/mediawiki-1.26.3.tar.gz
# cp -r mediawiki-1.26.3/* /var/www/htdocs/wiki/
# rm -fr mediawiki-1.26.3/

Por último, actualizar la base de datos:

# cd /var/www/htdocs/wiki/maintenance/
# php-5.6 update.php

Antes de ejecutar el script update.php es necesario cambiar la ubicación del directorio donde se encuentran las bases de datos SQLite3, pues este comando se corre sin chroot (editar la variable $wgSQLiteDataDir dentro del archivo LocalSettings.php). Una vez finalizado, volver a su valor original.

Finalmente, agregar las siguientes líneas en el archivo de configuración LocalSettings.php para que funcionen las plantillas:

wfLoadSkin( 'CologneBlue' );
wfLoadSkin( 'Modern' );
wfLoadSkin( 'MonoBook' );
wfLoadSkin( 'Vector' );

¡Éxito!

Es notable cómo funcionan correctamente todos los componentes del servidor sin ninguna clase de inconvenientes durante la instalación. Pensar que se trata de una configuración bastante particular en lo que a plataforma respecta:

  • OpenBSD como sistema operativo.
  • httpd como servidor Web.
  • PHP-FPM como servidor de aplicación.
  • SQLite3 como motor de bases de datos.

Referencias

Manual:Upgrading - MediaWiki


Tal vez pueda interesarte


Compartí este artículo