Table of Contents
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:
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");