This is an old revision of the document!
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 never
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
- 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
- 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
1. Instalar PHP PEAR:
sudo aptitude update; sudo aptitude install php-pear
2. Instalar paquetes PEAR:
sudo pear install mail net_smtp
3. 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.jamgo.org", 'port' => 25, 'auth' => false, );
IMPORTANTE: el valor “IDHost” debe coincidir con el hostname (ejecutar comando “hostname”)
4. 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.jamgo.org mydestination = www-1.dev.local.jamgo.org
5. Reiniciar servicios:
sudo /etc/init.d/postfix restart sudo /etc/init.d/apache restart
6. Configurar el usuario “vigilante” para que reciba correos
6.1. Iniciar sesion en mediawiki
6.2. Ir a “preferences/user profile”
6.3. Asegurarse que tiene direccion de correo valida y marcar todas las opciones de la caja “Email options”
6.4. Editar “pagina” y hacerle un watch.
7. 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");