====== mediawiki ======
wiki
===== Instalacion =====
http://www.mediawiki.org/wiki/Manual:Installation_guide
===== 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");