====== 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");