User Tools

Site Tools


informatica:linux:mediawiki

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
informatica:linux:mediawiki [2013/06/26 09:02] – creado javiinformatica:linux:mediawiki [2015/04/13 20:19] (current) – external edit 127.0.0.1
Line 6: Line 6:
  
 http://www.mediawiki.org/wiki/Manual:Installation_guide http://www.mediawiki.org/wiki/Manual:Installation_guide
 +
  
 ===== Migracion ===== ===== Migracion =====
Line 23: Line 24:
 2.1 Crear una nueva BD, e importar el esquema y datos provenientes del backup del paso 1.1 2.1 Crear una nueva BD, e importar el esquema y datos provenientes del backup del paso 1.1
  
-2.2 Descargar la ultima version de mediawiki en un directorio vacio:+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: 
 + 
 +<code> 
 +###################### 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 ###################### 
 +</code> 
 + 
 +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: 
 + 
 +<code> 
 +# 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 
 +</code> 
 + 
 +2. Configuracion mediawiki (archivo "Localsettings.php"): 
 + 
 +<code> 
 +# 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, 
 +); 
 +</code> 
 +===== 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: 
 + 
 +<code> 
 +# 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, 
 +); 
 +</code> 
 + 
 +**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: 
 + 
 +<code> 
 +# Email 
 +$wgEnableEmail = true; 
 +$wgEnableUserEmail = true; 
 +$wgEmergencyContact = "admin@example.com"; 
 +$wgPasswordSender = "app_robot@www-1.dev.local.example.com"; 
 +$wgEnotifUserTalk = true; 
 +$wgEnotifWatchlist = true; 
 +</code> 
 + 
 +==== 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;
  
-  sudo mkdir /var/www/+Para agregar un user (un userName siempre debe comezar por mayúscula):
  
-3. Crear un +  insert into user(user_name) values ("userName");
  
informatica/linux/mediawiki.1372237336.txt.gz · Last modified: 2015/04/13 20:19 (external edit)