User Tools

Site Tools


informatica:linux:mediawiki

mediawiki

wiki

Instalacion

Migracion

1. Backup

1.1 Volcado de BD vieja

1.2 Copia de archivos, transformando enlaces simbolicos en directorios:

sudo mkdir /var/www/wiki_backup/
rsync -raL /var/www/wiki/ /var/www/wiki_backup/
sudo chown -R www-data:www-data /var/www/wiki_backup/

2. Crear una copia limpia de la wiki, para que si se quiere se pueda seguir trabajando (idealmente en modo “read-only”) en la wiki vieja.

2.1 Crear una nueva BD, e importar el esquema y datos provenientes del backup del paso 1.1

2.2 O bien crear un nuevo usuario y darle permisos sobre esa nueva BD o bien al usuario existente de la wiki vieja darle esos permisos

2.3 Descargar la ultima version de mediawiki en un directorio vacio:

sudo mkdir /var/www/wiki_new
cd /var/www/wiki_new
sudo wget -c --tries=0 http://download.wikimedia.org/mediawiki/1.21/mediawiki-1.21.1.tar.gz
sudo tar xvfz mediawiki-1.21.1.tar.gz
sudo ln -s mediawiki-1.21.1 wiki_new
sudo chown -R www-data:www-data wiki_new

3. Configurar la nueva wiki a traves del navegador:

http://localhost/wiki_new

3.1 Especificar BD y usuario de los pasos 2.1 y 2.2

3.2 La propia instalacion detecta que hay que hacer un upgrade. Decirle que si y cruzar los dedos

3.3 Al final del proceso se genera un archivo “LocalSettings.php” que tiene que dejarse en la raiz de la nueva wiki:

/var/www/wiki_new/LocalSettings.php

4. Importar imagenes

cp -R /srv/www/wiki/images/* /srv/www/wiki_new/images/*

5. Importar modulos. Yo prefiero hacerlo a mano y comparar los modulos instalados en la wiki vieja y en la nueva, consultando la pagina 'index.php/Special:Version':

http://localhost/wiki/index.php/Special:Version
http://localhost/wiki_new/index.php/Special:Version

Hay que ir una a una y seguir los pasos para instalar los modulos, que tipicamente requieren:

-Descomprimir y renombrar el directorio en “extensions” -Anyadir algunas lineas en “LocalSettings.php” -Tocar la BD (pocas veces) ejecutando “php /var/www/wiki_new/maintenance/update.php” -Probar cada vez a ver si la extension ha roto la wiki:

http://localhost/wiki_new

LDAP

http://www.mediawiki.org/wiki/Extension:LDAP_Authentication

1. Requisitos:

http://www.mediawiki.org/wiki/Extension:LDAP_Authentication/Requirements

2. Descargar, descomprimir y renombrar:

http://www.mediawiki.org/wiki/Special:ExtensionDistributor/LdapAuthentication

cd /var/www/wiki_new/extensions
sudo tar xvfz wikimedia-mediawiki-extensions-LdapAuthentication-2.0c-18-g013532d.tar.gz
sudo mv wikimedia-mediawiki-extensions-LdapAuthentication-2.0c-18-g013532d LdapAuthentication
sudo chown -R www-data:www-data LdapAuthentication
sudo rm -fr wikimedia-mediawiki-extensions-LdapAuthentication-2.0c-18-g013532d.tar.gz

3. Ejecutar script para actualizar esquema de BBDD:

cd /var/www/wiki_new
php maintenance/update.php
  

4. Editar:

cd /var/www/wiki_new
sudo cp LocalSettings.php LocalSettings.php.bak
sudo vim LocalSettings.php

Y anyadir:

###################### LDAP ######################

require_once 'extensions/LdapAuthentication/LdapAuthentication.php';
# Required to fix a bug complainin about missing table 'ldap_domains'
require_once 'includes/AuthPlugin.php';

#require_once( "$IP/extensions/LdapAuthentication/LdapAuthentication.php" );
$wgAuth = new LdapAuthenticationPlugin();

$wgLDAPDomainNames = array(
  'ldap_example_com',
);

$wgLDAPServerNames = array(
  'ldap_example_com' => 'ldap.example.com',
);

$wgLDAPUseLocal = false;

$wgLDAPEncryptionType = array(
  'ldap_example_com' => 'tls',
);

$wgLDAPPort = array(
  'ldap_example_com' => 389,
);

$wgLDAPProxyAgent = array(
  'ldap_example_com' => 'cn=readonly,dc=example,dc=com',
);
$wgLDAPProxyAgentPassword = array(
  'ldap_example_com' => 'secret',
);
$wgLDAPSearchAttributes = array(
  'ldap_example_com' => 'uid'
);
$wgLDAPBaseDNs = array(
  'ldap_example_com' => 'ou=people,dc=example,dc=com',
);
# Optional: to pull e-mail address for the user from LDAP
$wgLDAPPreferences = array(
  'ldap_example_com' => array( 'email' => 'mail')
);

###################### end LDAP ######################

5. Para evitar el error TLS provocado porque el servidor LDAP autofirmo su propio certificado.

5.1. Edito:

sudo cp /etc/ldap/ldap.conf /etc/ldap/ldap.conf.bak
sudo vim /etc/ldap/ldap.conf

Y anyado la siguiente linea:

# TODO: fix this, needed by LDAP in mediawiki
TLS_REQCERT allow

5.2. Reinicio Apache

sudo /etc/init.d/apache2 restart

Restringir login en funcion del grupo

  • En este ejemplo ademas tomamos el e-mail de LDAP
  • Grupo LDAP requerido: “ldapwiki”
  • Usuario LDAP de ejemplo: “LDAP_USER_1”

1. Objetos LDAP:

# LDAP user
dn: cn=LDAP_USER_1,ou=people,dc=example,dc=com
cn: LDAP_USER_1
gidnumber: 10001
givenname: Name
homedirectory: /home/LDAP_USER_1
loginshell: /bin/bash
mail: LDAP_USER_1@example.com
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: top
sn: Surename
uid: LDAP_USER_1
uidnumber: 10001
userpassword: ******

# LDAP group
dn: cn=ldapwiki,ou=groups,dc=example,dc=com
cn: ldapwiki
gidnumber: 10004
memberuid: LDAP_USER_1
memberuid: LDAP_USER_2
objectclass: posixGroup
objectclass: top

2. Configuracion mediawiki (archivo “Localsettings.php”):

# LDAP
require_once 'extensions/LdapAuthentication/LdapAuthentication.php';
require_once 'includes/AuthPlugin.php';
$wgAuth = new LdapAuthenticationPlugin();
$wgLDAPDomainNames = array(
  'openldap_example_com',
);
$wgLDAPServerNames = array(
  'openldap_example_com' => 'ldap.example.com',
);
$wgLDAPUseLocal = false;
$wgLDAPEncryptionType = array(
  'openldap_example_com' => 'tls',
);
$wgLDAPPort = array(
  'openldap_example_com' => 389,
);
$wgLDAPProxyAgent = array(
  'openldap_example_com' => 'cn=readonly,dc=example,dc=com',
);
$wgLDAPProxyAgentPassword = array(
  'openldap_example_com' => '*****',
);
$wgLDAPSearchAttributes = array(
  'openldap_example_com' => 'uid'
);
$wgLDAPBaseDNs = array(
  'openldap_example_com' => 'dc=example,dc=com',
);
# To pull e-mail address from LDAP
$wgLDAPPreferences = array(
  'openldap_example_com' => array( 'email' => 'mail')
);
# Group based restriction
$wgLDAPGroupUseFullDN = array( "openldap_example_com"=>false );
$wgLDAPGroupObjectclass = array( "openldap_example_com"=>"posixgroup" );
$wgLDAPGroupAttribute = array( "openldap_example_com"=>"memberuid" );
$wgLDAPGroupSearchNestedGroups = array( "openldap_example_com"=>false );
$wgLDAPGroupNameAttribute = array( "openldap_example_com"=>"cn" );
$wgLDAPRequiredGroups = array( "openldap_example_com"=>array("cn=ldapwiki,ou=groups,dc=example,dc=com"));
$wgLDAPLowerCaseUsername = array(
  'openldap_example_com' => true,
);

Reducir el numero de encabezados que genera un TOC (Table Of Contents)

Por defecto 4+ encabezados generan un TOC.

Si se quiere alterar al alza, probar esta extension:

https://www.mediawiki.org/w/index.php?title=Extension:CustomTOCLength

Si se quiere reducir:

1. Backup files

cp ~/includes/parser/Parser.php ~/includes/parser/Parser.php.bak
sudo vim ~/includes/parser/Parser.php

2. Replace the '4' in below line:

( ( $numMatches >= 4 ) || $this→mForceTocPosition );

With the number that you want, for instance 2:

( ( $numMatches >= 2 ) || $this→mForceTocPosition );

Redirecciones

#REDIRECT [[pagename]]

Envio de correos

TODO: comprobar si los pasos 1 y 2 son necesarios si se usa ssmtp en lugar de postfix

1. Instalar PHP PEAR:

sudo aptitude update; sudo aptitude install php-pear

2. Instalar paquetes PEAR:

sudo pear install mail net_smtp

Postfix

1. Editar:

sudo cp /srv/www/wiki/LocalSettings.php /srv/www/wiki/LocalSettings.php.bak
sudo vim /srv/www/wiki/LocalSettings.php

Y anyadir las siguientes lineas:

# Email
$wgEnableEmail = true;
$wgEnableUserEmail = true;
$wgEmergencyContact = "admin@example.com";
$wgPasswordSender = "app_robot@www-1.local.example.com";
$wgEnotifUserTalk = true;
$wgEnotifWatchlist = true;
$wgEmailAuthentication = true;
$wgSMTP = array(
 'host'     => "127.0.0.1",
 'IDHost'   => "www-1.dev.local.example.com",
 'port'     => 25,
 'auth'     => false,
);

IMPORTANTE: el valor “IDHost” debe coincidir con el hostname (ejecutar comando “hostname”)

2. Editar el archivo de config de postfix:

sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.bak
sudo vim /etc/postfix/main.cf

Y asegurarse que las lineas quedan asi:

myhostname = www-1.dev.local.example.com
mydestination = www-1.dev.local.example.com

3. Reiniciar servicios:

sudo /etc/init.d/postfix restart
sudo /etc/init.d/apache restart

Ssmtp

1. Editar:

sudo cp /srv/www/wiki/LocalSettings.php /srv/www/wiki/LocalSettings.php.bak
sudo vim /srv/www/wiki/LocalSettings.php

Y anyadir las siguientes lineas:

# Email
$wgEnableEmail = true;
$wgEnableUserEmail = true;
$wgEmergencyContact = "admin@example.com";
$wgPasswordSender = "app_robot@www-1.dev.local.example.com";
$wgEnotifUserTalk = true;
$wgEnotifWatchlist = true;

Comprobar sistema de correo

1. Configurar el usuario “vigilante” para que reciba correos

1.1. Iniciar sesion en mediawiki

1.2. Ir a “preferences/user profile”

1.3. Asegurarse que tiene direccion de correo valida y marcar todas las opciones de la caja “Email options”

1.4. Editar “pagina” y hacerle un watch.

2. Iniciar sesion Con el usuario “A” y editar “pagina” y grabar.

Deberia enviarse el correo. Si no es asi, por si acaso cerrar sesion con ambos usuarios, iniciar sesion con usuario “vigilante”, desmarcar y volver a marcar la pagina “pagina” como “watch” y repetir el paso 7.

Contrasenas

Seleccionar la base de datos correspondiente:

use mediawikidb;

Para cambiar la password de un user normal:

update user set user_password=md5(concat(user_id,'-',md5('newpassword'))) where user_name = "userName";

Para cambiar la password del WikiSysop:

update user set user_password=md5(concat('1-',md5('newpassword'))) where user_id=1;

Para agregar un user (un userName siempre debe comezar por mayúscula):

insert into user(user_name) values ("userName");
informatica/linux/mediawiki.txt · Last modified: 2015/04/13 20:19 by 127.0.0.1