Wikimedia
De Diablotins.org.
| Installer un Wiki sous FreeBSD
|
| ||
Sommaire |
Les logiciels
Le logiciel principal est MediaWiki que vous trouverez dans les ports: www/mediawiki.
Serveur Web
MediaWiki, est une collection de scripts PHP exécutée sur un serveur Web.
Pour chercher la mer^W, écrire une documentation un peu différente de ce qui se fait habituellement, j'ai choisi Nginx dont Patrick vous a déjà causé.
Installons www/nginx avec cette configuration:
david:/<1>ports/www/nginx#make showconfig | grep \=on
===> The following configuration options are available for nginx-0.7.67:
HTTP_MODULE=on "Enable HTTP module"
HTTP_ADDITION_MODULE=on "Enable http_addition module"
HTTP_CACHE_MODULE=on "Enable http_cache module"
HTTP_PERL_MODULE=on "Enable http_perl module"
HTTP_REWRITE_MODULE=on "Enable http_rewrite module"
HTTP_SSL_MODULE=on "Enable http_ssl module"
HTTP_STATUS_MODULE=on "Enable http_stub_status module"
WWW=on "Enable html sample files"
===> Use 'make config' to modify these settings
Configurons nos pages du Wiki:
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
charset utf-8;
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/wiki.nginx.org-access.log;
error_log /var/log/nginx/wiki.nginx.org-error.log info;
root /usr/local/www/mediawiki;
location / {
index index.php5;
error_page 404 = @mediawiki;
}
location @mediawiki {
rewrite ^/([^?]*)(?:\?(.*))? /index.php5?title=$1&$2 last;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/www/nginx-dist;
}
location ~ \.php5?$ {
include /usr/local/etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:8002;
fastcgi_index index.php5;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
PHP
Ensuite, bien évidemment, installons le language: lang/php5.
Malheureusement, l'interpréteur est buggé ([1] [2]), il s’emmêle les pointeurs entre les passages de paramètres par référence ou par valeur, d'où la multiplication de messages:
Parameter n to xxx expected to be a reference, value given in yyy
installons donc la version précédente: lang/php52:
david:/<1>ports/lang/php52>make showconfig
===> The following configuration options are available for php52-5.2.13_3:
CLI=on "Build CLI version"
CGI=on "Build CGI version"
APACHE=off "Build Apache module"
DEBUG=off "Enable debug"
SUHOSIN=on "Enable Suhosin protection system (not for jails)"
MULTIBYTE=off "Enable zend multibyte support"
IPV6=on "Enable ipv6 support"
MAILHEAD=off "Enable mail header patch"
REDIRECT=off "Enable force-cgi-redirect support (CGI only)"
DISCARD=off "Enable discard-path support (CGI only)"
FASTCGI=on "Enable fastcgi support (CGI only)"
FPM=off "Enable fastcgi process manager (CGI only)"
PATHINFO=on "Enable path-info-check support (CGI only)"
===> Use 'make config' to modify these settings
Ainsi que extensions lang/php52-extensions:
david:/<1>ports/lang/php52-extensions>make showconfig | grep on
===> The following configuration options are available for php52-extensions-1.3:
BCMATH=off "bc style precision math functions"
CALENDAR=on "calendar conversion support"
CTYPE=on "ctype functions"
DOM=on "DOM support"
FILTER=on "input filter support"
HASH=on "HASH Message Digest Framework"
ICONV=on "iconv support"
JSON=on "JavaScript Object Serialization support"
MCRYPT=off "Encryption support"
NCURSES=off "ncurses support (CLI only)"
PCNTL=off "pcntl support (CLI only)"
PCRE=on "Perl Compatible Regular Expression support"
PDO=on "PHP Data Objects Interface (PDO)"
PDO_SQLITE=on "PDO sqlite driver"
PGSQL=on "PostgreSQL database support"
POSIX=on "POSIX-like functions"
READLINE=off "readline support (CLI only)"
SESSION=on "session support"
SIMPLEXML=on "simplexml support"
SPL=on "Standard PHP Library"
SQLITE=on "sqlite support"
TOKENIZER=on "tokenizer support"
XML=on "XML support"
XMLREADER=on "XMLReader support"
XMLWRITER=on "XMLWriter support"
===> Use 'make config' to modify these settings
Enfin, suivez les instructions de patrick pour passer les scripts PHP à fastcgi.
Base de données
J'ai choisi de ne pas utiliser le classique MySQL, pour la même raison que précédemment.
Utilisons donc PostgreSQL dont LeCid vous a aussi déjà causé.
Il nous faut installer databases/postgresql82-server et databases/postgresql82-contrib.
Ensuite, suivons le document publié par Lecid,
#su -l pgsql -c initdb #/usr/local/etc/rc.d/postgresql onestart
puis connectons nous sous l'identité pgsql, pour éviter bien des messages d'erreurs:
#su -l pgsql -c $ pwd /usr/local/pgsql $ whoami pgsql
Créons l'utilisateur responsable du Wiki pour la base de donnée:
$ createuser -S -D -R -P -E wikiuser Enter password for new role: Enter it again: CREATE ROLE
Créons la base pour le Wiki:
$ createdb -O wikiuser wikidb CREATE DATABASE $ createlang plpgsql wikidb
Ajoutons le module tsearch2
$ cd /usr/local/share/postgresql/contrib
$ psql wikidb < tsearch2.sql
$ psql -d wikidb -c "grant select on pg_ts_cfg to wikiuser;"
GRANT
$ psql -d wikidb -c "grant select on pg_ts_cfgmap to wikiuser;"
GRANT
$ psql -d wikidb -c "grant select on pg_ts_dict to wikiuser;"
GRANT
$ psql -d wikidb -c "grant select on pg_ts_parser to wikiuser;"
GRANT
$ psql -d wikidb -c "update pg_ts_cfg set locale = current_setting('lc_collate') where ts_name = 'default' and prs_name='default';"
UPDATE 1
Démarrer
Votre Wiki se trouve sous /usr/local/www/mediawiki.
Connectez vous localhost et suivez les instructions.
Déplacez ensuite le fichier LocalSettings.php:
#mv /usr/local/www/mediawiki/config/LocalSettings.php /usr/local/www/mediawiki
Extensions DPL
Afin de profiter des tables des matières, nous avons besoin de l'extension Dynamic Page List 2 que vous pouvez télécharger ici
... ou là.
C'est le bordel, hein ?
- Mediawiki simple
La première version est limitée, elle n'installe qu'un ou deux fichiers d'extensions.
david:~>sudo tar -xzf DynamicPageList-MW1.15-r50226.tar.gz -C /usr/local/www/mediawiki/extensions
Ajoutons là à LocalSettings.php:
require_once("$IP/extensions/DynamicPageList/DynamicPageList2.php");
- Version complète
unzip Semeb_extensions.zip -d /usr/local/www/mediawiki/extensions
Ajoutons à LocalSettings.php, deux extensions livrées:
require_once("$IP/extensions/Inputbox/inputbox.php");
require_once("$IP/extensions/DynamicPageList/DynamicPageList.php");
Pour être compatible avec PostgreSQL, il faut créer quelques fonctions qui simule MySql:
Par exemple, créez ce fichier de commande:
create schema mysql;
grant usage on schema mysql to public;
alter user wikiuser set search_path to mediawiki, public, mysql;
create or replace function mysql.concat(text, text) returns text
as $function$
begin
return $1 || $2;
end;
$function$ language plpgsql immutable strict;
create or replace function mysql.if(boolean, text, text) returns text
as $function$
begin
if $1 then
return $2;
else
return $3;
end if;
end;
$function$ language plpgsql immutable strict;
Puis, lancez le
psql -d wikidb -f ./dplscript.sql
Allez, un dernier patch pour la route, pour corriger un problème de syntaxe entre PostgreSQL et MySQL:
Remplacez la première ligne par la seconde dans
- extensions/DynamicPageList/DynamicPageList2.php, pour DPL simple
- extensions/DynamicPageList/DPLMain.php, pour DPL complet
// $sSqlWhere .= " LIMIT $iOffset, ";
$sSqlWhere .= " OFFSET $iOffset LIMIT ";

