Installation de dokuwiki sur tuxinette

Sylvain Collilieux



Dernière mise à jour : Wed Dec 21 00:49:03 2011

Apache 2.2 et PHP

Compilation

  cd ~/tmp
  wget http://mir2.ovh.net/ftp.apache.org/dist//httpd/httpd-2.2.21.tar.bz2
  bunzip2 -c httpd-2.2.21.tar.bz2 | tar xf -
  ./configure --enable-so --enable-http --enable-expires --enable-rewrite --enable-cgi --prefix=$HOME/local/httpd
  cd httpd-2.2.21
  make
  make install
  wget http://fr2.php.net/get/php-5.2.17.tar.bz2/from/this/mirror
  bunzip2 -c | tar xf -
  cd ~/tmp/php-5.2.17
  ./configure --prefix=$HOME/local/httpd/php --with-config-file-path=$HOME/local/httpd/php --with-apache=../httpd-2.2.21 --with-apxs2=$HOME/local/httpd/bin/apxs
  make
  make install

Configuration apache

Points importants dans les fichier /home/lf/scollilieux/local/httpd/conf/httpd.conf

  Listen 8080
  [...]
  ServerAdmin "contact (A) gulliver POING eu POINTG org"
  [...]
  # Activation PHP5
  LoadModule php5_module        modules/libphp5.so
  AddType application/x-httpd-php php
  [...]
  <Files *.php>
  SetOutputFilter PHP
  SetInputFilter PHP
  </Files>
  [...]
  DocumentRoot "/home/lf/html/www.linux-france.org"
  [...]
  ServerTokens Prod
  ServerSignature Off
  [...]
  Include conf/sites-enabled/

Création d'un vhost pour gulliver.eu.org.

  cat sites-enabled/gulliver.eu.org
  
  NameVirtualHost *:8080
  <VirtualHost *:8080>
  	ServerAdmin "contact At gulliver Dot eu Dot org"
  	ServerName gulliver.eu.org
  	ServerAlias *.gulliver.eu.org
  	\
  	DocumentRoot /home/lf/scollilieux/local/httpd/htdocs
  	ErrorLog logs/gulliver.eu.org.error.log
  	LogLevel warn
  	CustomLog logs/gulliver.eu.org.access.log combined
  	\
  	<Directory /home/lf/scollilieux/local/httpd/htdocs>
  		DirectoryIndex wiki/doku.php index.php
  		RewriteEngine on
  		RewriteBase /
  		RewriteRule ^(lib/.*)     wiki/$1
  		RewriteRule ^_media/(.*)  wiki/lib/exe/fetch.php?media=$1  [QSA,L]
  		RewriteRule ^_detail/(.*) wiki/lib/exe/detail.php?media=$1  [QSA,L]
  		RewriteRule ^_export/([^/]+)/(.*) wiki/doku.php?do=export_$1&id=$2  [QSA,L]
  		RewriteRule ^feed.php     wiki/feed.php
  		Include /home/lf/scollilieux/local/httpd/conf/wikini_dokuwiki_re
  direct.txt
  		RewriteCond %{REQUEST_FILENAME} !-f
  		RewriteCond %{REQUEST_FILENAME} !-d
  		RewriteRule (.*) wiki/doku.php?id=$1  [QSA,L]
  	</Directory>
  	<Directory /home/lf/scollilieux/local/httpd/htdocs/wiki>
  		AllowOverride AuthConfig FileInfo Limit
  		Options -Indexes -MultiViews +FollowSymLinks
  	</Directory>
  	\
  	<LocationMatch "/(data|conf|bin|inc)/">
  		Order allow,deny
  		Deny from all
  		Satisfy All
  	</LocationMatch>
  </VirtualHost>

On redémarre apache :

  ~/local/httpd/bin/apachectl graceful

Le fichier ` /home/lf/scollilieux/local/httpd/conf/wikini_dokuwiki_re direct.txt` permet de gérer les redirections entre l'ancien wiki et le nouveau.

Installation dokuwiki

Téléchargement et installation

  cd ~/tmp
  wget http://www.splitbrain.org/_media/projects/dokuwiki/dokuwiki-rc2011-11-10.tgz
  cd ~/local/httpd/htdocs
  tar zxf ~/tmp/dokuwiki-2011-05-25a.tgz
  mv dokuwiki-2011-05-25a wiki

Configuration

  cd wiki/conf/
  cat local.php
  <?php
  /*
   * Dokuwiki's Main Configuration File - Local Settings
   * Auto-generated by config plugin
   * Run for user: admingulliver
   * Date: Wed, 14 Dec 2011 23:58:21 +0100
   */
  \
  $conf['title'] = 'Association Gulliver';
  $conf['start'] = 'accueil';
  $conf['lang'] = 'fr';
  $conf['template'] = 'monobook';
  $conf['license'] = '';
  $conf['savedir'] = '/home/lf/scollilieux/local/httpd/htdocs/wiki/data';
  $conf['basedir'] = '/';
  $conf['baseurl'] = 'http://gulliver.eu.org/';
  $conf['useacl'] = 1;
  $conf['superuser'] = '@admin';
  $conf['userewrite'] = '1';
  $conf['send404'] = 1;
  $conf['plugin']['wikicalendar']['timezone'] = 'Europe/Paris';
  $conf['tpl']['monobook']['monobook_sitenotice'] = 0;
  $conf['tpl']['monobook']['monobook_toolbox'] = 0;
  $conf['tpl']['monobook']['monobook_donate'] = 0;
  $conf['tpl']['monobook']['monobook_donate_default'] = 0;
  $conf['tpl']['monobook']['monobook_loaduserjs'] = 1;
  // end auto-generated content

Suppression du fichier d'installation, inutile car la conf est fournie.

  cd ~/local/httpd/htdocs/wiki
  rm install.php

Personnalisation

Thème

Installation du thème monobook

  cd ~/local/httpd/htdocs/wiki/lib/tpl
  wget -O - | http://andreas-haerter.com/downloads/dokuwiki-template-monobook/latest | tar zxf -

Installation du thème [newday ]

  cd ~/local/httpd/htdocs/wiki/lib/tpl
  wget -O newday.zip http://blog.chirripo.nl/wp-content/uploads/dokuwiki_template_newday_20100921.zip
  unzip newday.zip

Plugins

Installation du plugin wikicalendar

  cd ~/local/httpd/htdocs/wiki/lib/plugins
  wget -O - http://cloud.github.com/downloads/chimeric/dokuwiki-plugin-wikicalendar/plugin-wikicalendar.tgz | tar zxf -

migration du wikini -> dokuwiki

migration des données

Téléchargement des logiciels nécessaires depuis gitorious. Tous les scripts seront exécutés depuis le répertoire $HOME/migration_wiki

  wget -O - http://gitorious.org/migrate-to-doku/migrate-to-doku/archive-tarball/master | tar zxvf -
  mv migrate-to-doku-migrate-to-doku migration_wiki

Utilisation du script synchronize.sh. Ce script ne fait pas partie de l'archive gitorious, il est adapté à tuxinette.

Le mot de passe de la base de données devra être stocké dans $HOME/var/tmp/mysql_gull.pass.

  #!/bin/bash
  # (C) Sylvain Collilieux 2011
  # Licence WTFPL http://sam.zoy.org/wtfpl/
  # 
  
  # Synchronizes data between wikini and dokuwiki
  
  # If $1=1 : complete export from wikini, generates rewrite_rules and comparison page
  # Else : only data from last dokuwiki change are exported (no rewrite or comparison
  # because there are not complete).
  
  ./update_dokuwiki_data.sh $1
  
  echo "Copie vers dokuwiki"
  tar --directory dokuwiki/data -cf - . | tar -C ~/local/httpd/htdocs/wiki/data/ -xf -
  
  if [ "$1" == "1" ]
  then
  	echo Copie du fichier de Redirection
  	sh rewrite_rules.sh
  	cp wikini_dokuwiki_redirect.txt ~/local/httpd/conf/
  
  	echo "Copie du fichier de comparaison des pages"
  	sh comparaison_index.sh
  	cp comparaison_wikini_dokuwiki.html ~/html/
  fi
  cd $HOME/migration_wiki
  ./synchronize 1

Synchronisation de wikini -> dokuwiki

Une synchronisation complète a lieu 1 fois par jour. Toutes les 10 minutes de minuit à 3h et de 7h à minuit, il y a une synchronisation partielle.

La synchonisation complète peut être utile, nn cas de changement dans le script de conversion des pages (migrate-to-doku.py). C'est la raison de son exécution quotidienne. Cette synchonisation peut également se faire à la demande.

  crontab -l
  15 4 * * * cd migration_wiki ; bash synchronize.sh 1 >/dev/null 2>&1
  */10 0-3 * * * cd migration_wiki ; bash synchronize.sh >/dev/null 2>&1
  */10 7-23 * * * cd migration_wiki ; bash synchronize.sh >/dev/null 2>&1

Migration du site (url)

Dans cet exemple http://gulliver.eu.org/ devient le wiki (on enlève /wiki/).

Récupération du site statique de Gulliver

  CVSROOT=:ext:cvs@linux-france.org:/home4/lf/cvs/
  CVS_RSH=ssh
  export CVSROOT CVS_RSH
  cd ~/tmp && mkdir cvs_work && cd cvs_work
  cvs checkout www.linux-france.org
  cd cvs_work/www.linux-france.org/lug/gulliver/

Modifier le fichier .htaccess pour qu'il ressemble à :

  ##########################################################
  # migration vers dokuwiki
  RewriteEngine on
  # Les anciennes pages statiques sont conservées
  RewriteCond %{REQUEST_URI} !^/ml-archives/.*
  RewriteCond %{REQUEST_URI} !^/mail/.*
  RewriteCond %{REQUEST_URI} !^/adhesion/.*
  RewriteCond %{REQUEST_URI} !^/static/.*
  # accès à wikini
  RewriteCond %{REQUEST_URI} !^/wikini/.*
  RewriteRule ^(.*)$ http://gulliver.eu.org:8080/$1 [proxy]
  #########################################################
  
  AddType text/plain wml
  
  IndexOptions FancyIndexing NameWidth=* 
  IndexOptions ScanHTMLTitles 
  IndexOrderDefault Descending Date

Les RewriteCond %{REQUEST_URI} !^/ml-archives/.* permettent de ne pas réécrire l'URL pour les parties statiques existantes (par exemple les archives des listes).

Envoi des données sur lfo

  cvs commit 'Migration .htaccess / de Gulliver'
  ssh tonlogin@linux-france.org ~lf/bin/authsync_demand

La dernière commande permet de pousser le contenu du CVS sur le site (sinon attendre 20 de chaque heure).

Pour garder /wiki dans l'URl, comme avant.

  cd wiki

Le fichier .htaccess devra ressembler ? :

  #Pour le wiki
  #RewriteEngine on
  #RewriteRule .*\.css - [L]
  #RewriteRule .*\.png - [L]
  #RewriteRule .*\.php.* - [L]
  #RewriteRule (.*) /~scollilieux/wiki/wakka.php?wiki=$1 [QSA,L,NE,PT]
  
  RewriteEngine on
  RewriteRule ^(.*)$ http://gulliver.eu.org:8080/$1 [proxy]
  
  order allow,deny
  deny from 88.234.247.125
  deny from 125.128.151.84
  allow from all

Les 4 dernières lignes permettent de bannir des adresses IP de spameurs.

accès à wikini

Le but est de permettre l'accès à l'ancien wiki avec l'url http://gulliver.eu.org/wikini/

Dans le CVS de Gulliver :

  www.linux-france.org/lug/gulliver
  mkdir wikini
  cp wiki/.htacess wikini/
  cvs add wikini/
  cvs add wikini/.htaccess

Le contenu du .htaccess :

  RewriteEngine on
  RewriteRule .*\.css - [L]
  RewriteRule .*\.png - [L]
  RewriteRule .*\.php.* - [L]
  RewriteRule (.*) /~scollilieux/wiki/wakka.php?wiki=$1 [QSA,L,NE,PT]

The Button

À ce stade, dokuwiki devrait être à jour avec les données de wikini. Pour finaliser la migration, il faut :