MediaWiki bajo Debian

From Luniwiki
Jump to: navigation, search

Paquetes

Antes de empezar podemos anadir unas líneas en el fichero /etc/apt/sources.list

deb http://www.cti.ecp.fr/~beauxir5/sarge binary/
deb-src http://www.cti.ecp.fr/~beauxir5/sarge source/

A continuación instalamos los paquetes siguientes, yo personalmente he elegido Apache 2

apt-get update
apt-get install apache2-mpm-prefork libapache2-mod-php4 php4-gd php4-imagick php4-mysql mysql-server

Configurar Apache

Lo primero que hay que hacer es definir el servidor virtual de apache, para ello creamos un archivo en la carpeta /etc/apache2/sites-available que llamamos wiki por ejemplo

<VirtualHost *:80>
      ServerName wiki.luniel.com
      ServerAdmin correo electronico
      DocumentRoot /wiki/web/
      <Directory />
              Options FollowSymLinks
              AllowOverride None
      </Directory>
      <Directory /wiki/web/>
              Options Indexes FollowSymLinks MultiViews
              AllowOverride None
              Order allow,deny
              allow from all
      </Directory>
      ErrorLog /var/log/apache2/wiki_error.log
      # Possible values include: debug, info, notice, warn, error, crit,
      # alert, emerg.
      LogLevel warn
      CustomLog /var/log/apache2/wiki_access.log combined
      ServerSignature On
</VirtualHost>

Luego tenemos que activar el sitio virtual con

a2ensite wiki
/etc/init.d/apache2 restart

Configurar MySQL

Normalmente mysql en debian crea los archivos de datos en la carpeta /var/lib/mysql, personalmente no me gusta esa ubicación, por lo que la he movido a mi propia carpeta de datos.

cd /var/lib/mysql && find . -depth -print0 | afio -px -a0 /wiki/mysql

Luego tenemos que editar el fichero /etc/mysql/my.cnf y cambiamos las líneas siguientes

datadir         = /wiki/mysql
language        = /usr/share/mysql/spanish

Cambiamos la contraseña del root de la base de datos

mysqladmin -u root password contraseña

Configurar PHP

Editamos el fichero /etc/php4/apache2/php.ini

memory_limit = 30M (Cambiar Valor)
extension=mysql.so (Descomentar)
extension=gd.so (Descomentar)

A continuación hay que reiniciar apache

/etc/init.d/apache2 restart

Descargar MediaWiki

Vamos a la página http://sourceforge.net/projects/wikipedia y nos copiamos el enlace de la versíon que nos interrese (yo elijo la estable), y la descargamos en nuetra carpeta.

cd /wiki
wget http://heanet.dl.sourceforge.net/sourceforge/wikipedia/mediawiki-1.5.2.tar.gz
tar xvfz mediawiki-1.5.2.tar.gz
chown -R www-data:www-data mediawiki-1.5.2.tar.gz
ln -s mediawiki-1.5.2.tar.gz web

Configurar MediaWiki

Abrimos un navegador contra nuestro servidor virtual web, en mi caso http://wiki.luniel.com. Y nos aparece una pagina para seguir con la configuración. Una vez rellenado todos los parametros, le damos al boton install, y movemos el fichero siguiente:

cd /wiki/mediawiki-1.5.2/config
cp LocalSettings.php ../
cd ..
chown -R root:root config
chown www-data:www-data LocalSettings.php

Normalmente a partir de este momento, nuestro Wiki esta totalmente operativo

Activar Tex

Tex nos permite realizar formula mathematicas dentro de nuestras páginas. Lo primero hay que instalar los siguientes paquetes:

apt-get install ocaml imagemagick gs cjk-latex tetex-extra php4-imagick binutils gcc

Luego en el fichero LocalSettings.php hay que descomentar la línea siguiente:

$wgUseTeX           = true;

En el archivo php.ini tambien tenemos que tener la variable siguiente

extension=imagick.so

Luego hay que compilar los elementos matematicos

cd /wiki/mediawiki-1.5.2
cd math
make
cd ../images
mkdir -m777 math tmp

Logotipo

Para personalizar nuestro Wiki podemos cambiar la variable $wgLogo del archivo LocalSettings.php

$wgLogo             = "$wgStylePath/common/images/luniel.png";

Y nos aparecera nuestro Logotipo arriba a la izquierda.

Permisos de Usuarios

Los permisos de usuario han cambian desde la versión 1.4, estos son el listado de permisos que aparecen en el archivo DefaultSettings:

/**
* Permission keys given to users in each group.
* All users are implicitly in the '*' group including anonymous visitors;
* logged-in users are all implicitly in the 'user' group. These will be
* combined with the permissions of all groups that a given user is listed
* in in the user_groups table.
*
* This replaces wgWhitelistAccount and wgWhitelistEdit
*/
$wgGroupPermissions = array();
$wgGroupPermissions['*'    ]['createaccount']   = true;
$wgGroupPermissions['*'    ]['read']            = true;
$wgGroupPermissions['*'    ]['edit']            = true;
$wgGroupPermissions['user' ]['move']            = true;
$wgGroupPermissions['user' ]['read']            = true;
$wgGroupPermissions['user' ]['edit']            = true;
$wgGroupPermissions['user' ]['upload']          = true;
$wgGroupPermissions['bot'  ]['bot']             = true;
$wgGroupPermissions['sysop']['block']           = true;
$wgGroupPermissions['sysop']['createaccount']   = true;
$wgGroupPermissions['sysop']['delete']          = true;
$wgGroupPermissions['sysop']['editinterface']   = true;
$wgGroupPermissions['sysop']['import']          = true;
$wgGroupPermissions['sysop']['importupload']    = true;
$wgGroupPermissions['sysop']['move']            = true;
$wgGroupPermissions['sysop']['patrol']          = true;
$wgGroupPermissions['sysop']['protect']         = true;
$wgGroupPermissions['sysop']['rollback']        = true;
$wgGroupPermissions['sysop']['upload']          = true;
$wgGroupPermissions['bureaucrat']['userrights'] = true;
// Used by the Special:Renameuser extension
$wgGroupPermissions['bureaucrat']['renameuser'] = true;

Lo que pongamos en el archivo LocalSettings.php sobreescribe los valores del default, por ejemplo

$wgGroupPermissions['*'    ]['createaccount']   = false;
$wgGroupPermissions['*'    ]['edit']            = false;

Upload de ficheros

Personalmente me he encontrado que la subida de ficheros esta deshabilitada por defecto. Para permitir he tenido que añadir estas variables al archivo LocalSettings.php

$wgEnableUploads = true;
$wgMimeDetectorCommand = "file -bi";

La segunda variable la tuve que poner porque me saltaba un error. Como este: Fatal error: mime_magic could not be initialized, magic file /usr/share/file/magic.mime is not available in /wiki/mediawiki-1.5.2/includes/MimeMagic.php on line 497

Personalizar la Barra de Navegación

Para cambiar la barra de navegación a partir de la versión 1.5, hay que esitar la página con la URI siguente:

index.php/MediaWiki:Sidebar

Reescritura de URI

Si queremos Reescribir nuestra URL para que los scripts sean accesible por /w/ y la páginas en / sin el index.php. hay que cambiar el fichero de configuración del apache y LocalSettings.php. Esto nos permitira que los bots empiecen a meterse en todas las páginas de diffs y de configuración.

  • LocalSettings.php
$wgScriptPath       = "";
$wgScript           = "$wgScriptPath/w/index.php"; 
$wgArticlePath      = "$wgScriptPath/$1";

De esta manera todos los scripts serán llamados por la URI /w/index.php...

  • apache (mi fichero se llama wiki) añadimos las reglas de reescritura siguientes
# Rewrite rules for a MW installation with normal article view
# without index.php and /w/ in front of all other links.
RewriteEngine on
# Don't rewrite requests for files in MediaWiki subdirectories,
# MediaWiki PHP files, HTTP error documents, favicon.ico, or robots.txt
RewriteCond %{REQUEST_URI} !^/(stylesheets|images|skins)/
RewriteCond %{REQUEST_URI} !^/(redirect|texvc|index).php
RewriteCond %{REQUEST_URI} !^/error/(40(1|3|4)|500).html
RewriteCond %{REQUEST_URI} !^/favicon.ico
RewriteCond %{REQUEST_URI} !^/robots.txt
RewriteCond %{REQUEST_URI} !^/w/
# Rewrite anything not matched by the rules above.
RewriteRule ^/(.*)$ /index.php/$1 [L,QSA]
# Remove the /w/ from the edit links
RewriteRule ^/w/(.*)$ /$1 [L,QSA]

Robots.txt

Para evitar que los bots se paseen por todos los edit y los diffs de nuestra web pondremos un archivo llamado robots.txt en el raiz de nuestro wiki que se parezca a

User-agent: *
Disallow: /w/
Disallow: /Special:Search
Disallow: /Special%3ASearch
Disallow: /Special:Recentchanges
Disallow: /Special%3ARecentchanges
Disallow: /Special:Randompage
Disallow: /Special%3ARandompage

De esta forma todas las páginas de los scripts serán inaccesibles

Referencias

--Daniel Simao 13:52, 21 Nov 2005 (CET)