Actualizar wiki

De WikiEtl
Saltar a: navegación, buscar

Copia de guitarra

Para actualizar la wiki, primero se hará una copia de la máquina en la que se encuentra la misma, de manera que se puedan realizar todos los cambios pertinentes para la actualización sin interferir en el funcionamiento de la wiki. Para ello, se accederá al servidor tamtam/trompeta a través de su interfaz web (Proxmox) ya que es donde se encuentra guitarra. A través de esta interfaz, es muy sencillo crear una copia de la máquina virtual guitarra gracias a las copias de seguridad almacenadas.

Paso 1: copia de la MV

Acceder al entorno proxmox de bambam/trompeta, una vez se ha accedido, buscar en el menú izquierdo la localización de guitarra:

Guitarra en bambam/trompeta

El número indicado en cada máquina es el identificador de la misma dentro del servidor. Una vez localizada guitarra, se buscan las copias de seguridad de la misma. Para ello, se accede al servidor de backup (synbackup):

Servidor de backup en bambam

Dentro de este servidor se encuentran las copias de seguridad de todas la máquinas virtuales del nodo. Aquí se buscará el último backup de guitarra, que es la útima copia de la MV con ID 302.

Backup de guitarra (VM 302)

se selecciona la copia de seguridad y se elige la opción Restore. Aparecerá una nueva ventana en la que hay que indicar en qué sistema de almacenamiento se crerá la nueva máquina y qué identificador tiene. IMPORTANTE: Cambiar el VM ID por uno que no esté siendo utilizado por ninguna otra máquia virtual. De esta manera, se creará una nueva, de lo contrario, se sobreescribirá la máquina con el ID indicado.

Creacción nueva VM (ID 700) copia de guitarra

Paso 2: configuración de la MV

Una vez se ha hecho la copia de guitarra, hay que cambiarle la MAC y la IP.

El cambio de MAC es muy sencillo de realizar mediante Proxmox, se selecciona la copia de guitarra y en la opción Hardware, se cambia la MAC (Network Device). Para cambiar la IP, se inicia la máquina virtual en modo single y se modifica en el fichero /etc/network/interfaces con la nueva IP, una vez realizado el cambio, iniciar la máquina de modo normal. Es recomendable cambiar el nombre de la nueva máquina para no confundirla con la original.

Copia de la base de datos

Para no trabajar con la base de datos que se encuentra en producción, es recomendable crear una copia de seguridad de la base de datos de la wiki.

Para ello, se accede al servidor en el que se encuentra la base de datos (el servidor y la base de datos de la wiki utilizados se pueden obtener del fichero de configurción de la wiki LocalSettings.php) y se realiza lo siguiente:

 #Volcado de la base de datos en un fichero
 mysqldump -p <nombre_db> > <fichero>
 #Crear nueva base de datos y usuario con todos los permisos sobre la misma
 mysql -uroot -p
   mysql> create database <nueva_db>;
   mysql> create user '<username>'@'<IP_de_la_copia_guitarra>' identified by '<password>';
   mysql> grant all privileges on '<nueva_db>.*' to '<username>'@'<IP_de_la_copia_guitarra>';
   mysql> exit
 #Copia de la base de datos, volcando el fichero creado anteriormente en una nueva base de datos
 mysql -uroot -p <nueva_bd> < <fichero>

Proceso de actualización

Una vez hecho lo anterior, ya se puede actualizar la wiki en la copia de guitarra sin peligro de modificar la instalación actual.

La nueva versión de MediaWiki se puede encontrar en la página oficial: https://www.mediawiki.org/wiki/MediaWiki

Para realizar la actualización, habrá que descargarse la última versión publicada. Para la versión actual, esto podría hacerse de la siguiente manera, desde el /tmp:

 wget https://releases.wikimedia.org/mediawiki/1.27/mediawiki-1.27.0.tar.gz

Una vez tenemos el tar, se descomprime y se mueve a la ruta en la que está instalada la wiki (/var/lib) en un directorio diferente al de la wiki actual para no sobreescribirla. Aeste directorio y su contenido, hay que cambiarles el propietario y grupo, ponerles los mismos que tiene la wiki actual.

Para tener la configuración de la wiki, se copia el fichero LocalSettings.php de la antigua instalación a la nueva, las posibles modificaciones se realizarán sobre éste.

Además, hay que copiar los directorios upload e images de la antigua instalación para que los ficheros subidos a la wiki sean accesibles desde la nueva máquina.

Una vez hecho esto, se sigue el proceso de actualización tal y como explica el manual de MediaWiki: https://www.mediawiki.org/wiki/Manual:Upgrading

Hay que prestar especial atención a la configuración de Sphinx (el buscador) y a Parsoid (para el editor gráfico) ya que son servicios y hay que indicarles en qué puerto se ejecutan. Los ficheros de configuración de Sphinx son: /etc/sphinxsearch/sphinx.conf, la configuración relevante es:

 source src1
 {
       # data source type. mandatory, no default value
       # known types are mysql, pgsql, mssql, xmlpipe, xmlpipe2, odbc
       type                    = mysql
       #####################################################################
       ## SQL settings (for 'mysql' and 'pgsql' types)
       #####################################################################
       # some straightforward parameters for SQL source types
       sql_host                = <indicar_servidor_db>
       sql_user                = <indiar_usuario_db>
       sql_pass                = <indicar_contraseña>
       sql_db                  = <indicar_db>
       sql_port                = 3306  # optional, default is 3306


 index dist1
 {       
       # 'distributed' index type MUST be specified
       type                    = distributed
       # local index to be searched
       # there can be many local indexes configured
       local                   = test1
       local                   = test1stemmed
       # remote agent
       # multiple remote agents may be specified
       # syntax for TCP connections is 'hostname:port:index1,[index2[,...]]'
       # syntax for local UNIX connections is '/path/to/socket:index1,[index2[,...]]'
       agent                   = localhost:9313:remote1
       agent                   = localhost:9314:remote2,remote3
       # agent                 = /var/run/searchd.sock:remote4
       # remote agent mirrors groups, aka mirrors, aka HA agents
       # defines 2 or more interchangeable mirrors for a given index part
       # 
       # agent                 = server3:9312 | server4:9312 :indexchunk2
       # agent                 = server3:9312:chunk2server3 | server4:9312:chunk2server4
       # agent                 = server3:chunk2server3 | server4:chunk2server4
       # agent                 = server21|server22|server23:chunk2
       # blackhole remote agent, for debugging/testing
       # network errors and search results will be ignored
       #
       # agent_blackhole               = testbox:9312:testindex1,testindex2
       # persistenly connected remote agent
       # reduces connect() pressure, requires that workers IS threads
       #
       # agent_persistent              = testbox:9312:testindex1,testindex2
       # remote agent connection timeout, milliseconds
       # optional, default is 1000 ms, ie. 1 sec
       agent_connect_timeout   = 1000
       # remote agent query timeout, milliseconds
       # optional, default is 3000 ms, ie. 3 sec
       agent_query_timeout             = 3000
       # HA mirror agent strategy
       # optional, defaults to ??? (random mirror)
       # know values are nodeads, noerrors, roundrobin, nodeadstm, noerrorstm
       #
       # ha_strategy                           = nodeads
 }
 searchd
 {
       # [hostname:]port[:protocol], or /unix/socket/path to listen on
       # known protocols are 'sphinx' (SphinxAPI) and 'mysql41' (SphinxQL)
       #
       # multi-value, multiple listen points are allowed
       # optional, defaults are 9312:sphinx and 9306:mysql41, as below
       #
       # listen                        = 127.0.0.1
       # listen                        = 192.168.0.1:9312
       # listen                        = 9312
       # listen                        = /var/run/searchd.sock
       listen                  = 127.0.0.1:9312
       listen                  = 127.0.0.1:9306:mysql41


y la extensión del Sphinx en mediawiki/extensions/SphinxSearch/sphinx.conf

 # data source definition for the main index
 source src_wiki_main
 {
       # data source
       type            = mysql
       sql_host                = <indicar_servidor_db>
       sql_user                = <indicar_usuario_db>
       sql_pass                = <indicar_contraseña_db>
       sql_db                  = <indicar_db>
       # these two are optional
       sql_port        = 3306
       #sql_sock       = /var/lib/mysql/mysql.sock
 searchd
 {
       # IP address and port on which search daemon will bind and accept
       listen          = 127.0.0.1:9312

los de Parsoid son: /etc/mediawiki/parsoid/settings.js y el de configuración de la wiki LocalSettings.php, donde se indica el puerto en el que escucha nodejs (para parsoid):

 $wgVirtualRestConfig['modules']['parsoid'] = array(
 // URL to the Parsoid instance
 // Use port 8142 if you use the Debian package
   'url' => 'http://localhost:8142',
 // Parsoid "domain", see below (optional)
 'domain' => 'localhost',
 // Parsoid "prefix", see below (optional)
 'prefix' => 'localhost'
 );

Para poder probar la instalación, habrá que indicar la ubicación de la misma a apache. Esto se hace cambiando en el fichero de configuración del mismo la ruta de la antigua instalación por la de la nueva y reiniciando el servicio.

Paso de la prueba a producción

Una vez se ha actualizado la wiki en la máquina virtual para pruebas (la copia), hay que aplicar los cambios a la instalación real.

Para ello, se comprime y copia todo el directorio de la nueva instalación (/var/lib/<nuevawiki>) a guitarra.

Una vez hecho esto, habrá que volver a hacer una copia de la base de datos tal y como se indica anteriormente y un usuario para ella, con la IP de guitarra al crearlo.

Además, si hay alguna posibilidad de que se hayan subido ficheros a la wiki en el tiempo que se ha tardado en actualizarla, habrá que volver a copiar los directorios upload e images de la instalación antigua.

Por último, habrá que ejecutar el script update.php (https://www.mediawiki.org/wiki/Manual:Update.php) de la instalación para que se actualicen las tablas de la base de datos y cambiar la ruta de la instalación en la configuración de apache.