Installare mediawiki su CentOS 7

In questa guida provo a riassumere tutti i passaggi per installare mediawiki su Linux CentOS 7.

Non è proprio per principianti e alcune cose vengono date per scontate, in futuro cercherò di ampliarla.

In teoria è facile, basta installare il necessario per una LAMP, poi i file della mediawiki e le estensioni (Parsoid e VisualEditor) per la modifica visuale dei testi (per non dover scrivere in codice wikitext). Il problema più grosso su CentOS è che i repository ufficiali forniscono solo php 5.4, mentre per mediawiki serve almeno php versione 5.5. Ho cercato un po’ su qualche forum e ho riassunto tutto qui.
Le scritte in

testo preformattato

indicano i comandi da scrivere nel terminale

1. INSTALLARE UNA LAMP su CentOS7
1a. INSTALLAZIONE DI APACHE WEB SERVER
sudo yum install httpd
sudo systemctl start httpd.service

controllare che il server sia attivo puntando su localhost

sudo systemctl enable httpd.service
1b. INSTALLAZIONE DI MARIADB (o di mysql)
sudo yum install mariadb-server mariadb
sudo systemctl start mariadb
sudo mysql_secure_installation

(e seguire a video, in genere basta confermare tutte le scelte e
scegliere una password per root)

sudo systemctl enable mariadb.service
1c. CREAZIONE DI UN DATABASE CON IL SUO UTENTE

accedere alla console con password di root

 mysql -u root -p

creare il database

 CREATE DATABASE mio_db;

creare l’utente con la sua password e i permessi su mio_db

 GRANT INDEX, CREATE, SELECT, INSERT, UPDATE, DELETE, ALTER, LOCK TABLES ON mio_db.* TO 'nomeutente'@'localhost' IDENTIFIED BY 'passwordutente';
FLUSH PRIVILEGES;

exit;

possono essere utili i seguenti comandi (dopo essere entrati con mysql -u root -p) per vedere quali database sono presenti e i privilegi dei loro utenti.

 SHOW DATABASES;
SHOW GRANTS FOR 'nomeutente'@'localhost';
1d. INSTALLARE PHP

(ATTENZIONE: al 26/02/2018 i repository CentOS standard forniscono
solo php versione 5.4, mentre la versione 1.30 di mediawiki richiede 5.5 o superiore
per installare php 7.2 da repository alternativi,seguire i passaggi successivi, tenendo conto che non
sarà possibile installare phpmyadmin.)

installare il repo Webtatic

 sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
 sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

installare moduli php7 da webtatic
(i nomi di tutti i pacchetti disponibili col nome modificato per php7 si trovano all’indirizzo
https://webtatic.com/packages/php72/)

esempio di installazione moduli più comuni:
 sudo yum install mod_php72w php72w-cli php72w-common php72w-gd php72w-mbstring php72w-mysqlnd php72w-xml php72w-intl

creare un file info.php per verificare l’avvenuta installazione di php

testo da inserire in info.php creato con sudo nano /var/www/html/info.php

<?php phpinfo(); ?>

e puntare browser a localhost/info.php per verificare che appaiano le informazioni sulla versione e sui moduli installati: deve apparire la pagina di riepilogo. Se non appare niente, qualcosa non va.

2. INSTALLARE MEDIAWIKI

Scaricare l’ultima versione da https://www.mediawiki.org/wiki/MediaWiki scompattare i file e metterli nella directory base per apache, in genere /var/www/html

Io di solito rinomino la cartella assegnando il semplicemente il nome wiki.

A questo punto, andando su http://localhost/wiki dovrebbe iniziare la configurazione guidata di mediawiki.

Si può scegliere se lasciare la wiki aperta a tutti gli utenti, oppure dare il permesso di scrivere articoli solo agli utenti registrati. Andando a senso si può capire che è possibile installare alcune estensioni per gestire i pdf e altro. Se il server su cui si sta installando fa anche da server di posta si possono abilitare i messaggi in uscita e l’invio di messaggi fra utenti.

A fine configurazione verrà proposto di salvare il file Localsettings.php: scaricarlo e metterlo in /var/www/html/wiki nel server CentOS che si sta installando

3. INSTALLARE PARSOID

Ho trovato e adattato un tutorial da:
https://www.centos.org/forums/viewtopic.php?f=47&t=53223&p=225372#p225372

riporto di seguito i comandi in breve

su -

yum install nodejs npm vim-enhanced git policycoreutils-python

(forse polycoreutils richiede installazione del repository epel)

cd ~
git clone https://gerrit.wikimedia.org/r/p/mediawiki/services/parsoid

cp -rv ~/parsoid /opt/

cd /opt/parsoid/

npm install

creare file /opt/parsoid/api/localsettings.js

e scriverci le seguenti righe

'use strict';
 exports.setup = function(parsoidConfig) {

parsoidConfig.setMwApi('nome_mia_wiki', { uri: 'http://base-url-of-your-wiki.com/api.php' });

};

naturalmente ‘nome_mia_wiki’ e ‘http://base-url-of-your-wiki.com/ vanno sostituiti con i nomi della wiki e del suo server

cd /opt/

chown -Rv root:root parsoid
 ...
 chmod -Rv u+rw,g+r,o+r parsoid
 ...

impostare contesto selinux per il servizio parsoid

Per fare le prove ed evitare un po’ di complicazioni ho temporaneamente disabilitato selinux e firewalld, e quindi saltato un po’ di comandi che seguono.

<saltato>

chcon -Rv –type=system_u:object_r:usr_t:s0 parsoid

aprire porta 8000 nel firewall

firewall-cmd –permanent –zone=public –add-port=8000/tcp
firewall-cmd –reload

permettere ad Apache di usare la porta 8000

semanage port -m -t http_port_t -p tcp 8000

permettere ad Apache di contattare parsoid

setsebool httpd_can_network_connect 0

</saltato>

creare il systemd per parsoid

vi /etc/systemd/system/parsoid.service

con dentro il testo seguente

[Unit]
 Description=Mediawiki Parsoid web service on node.js
 Documentation=http://www.mediawiki.org/wiki/Parsoid
 Wants=local-fs.target network.target
 After=local-fs.target network.target

[Install]
 WantedBy=multi-user.target

[Service]
 Type=simple
 User=root
 Group=root
 WorkingDirectory=/opt/parsoid
 # EnvironmentFile=-/etc/parsoid/parsoid.env
 ## riga originale del tutorial: non esisteva 'server.js' in directory api
 ##ExecStart=/usr/bin/node /opt/parsoid/api/server.js
 #sostituita con la seguente:
 ExecStart=/usr/bin/node /opt/parsoid/bin/server.js
 KillMode=process
 Restart=on-success
 PrivateTmp=true
 StandardOutput=syslog

INOLTRE (non era indicato nel tutorial che ho trovato) fare una copia del file /opt/parsoid/config.example.yaml, rinominandolo /opt/parsoid/config.yaml e modificare la riga:

uri: 'http://localhost/w/api.php
 in
 uri: 'http://ip.wi.ki.server/nomewiki/api.php

avviare il servizio

systemctl start parsoid.service

renderlo attivo a ogni avvio

systemctl enable parsoid.service

verificare che parta controllando il suo stato:

service parsoid status
4. INSTALLARE VISUAL EDITOR

Una volta che parsoid funziona, bisogna installare e configurare l’estensione Visual Editor

Scaricare l’ultima versione da https://www.mediawiki.org/wiki/Extension:VisualEditor
Scaricare sempre l’ultima versione dal link “Download snapshot” e che sia compatibile con la versione wiki scaricata (vers. 1.30 al 26/02/2018). In pratica, per una nuova installazione procurarsi sempre insieme l’ultima versione sia di mediawiki che dell’estensione VisualEditor.
NB: installando i file di visual editor nella directory /var/www/html/wiki/extensions PRIMA di avviare l’installazione di mediawiki, sarà possibile selezionare VisualEditor insieme alle estensioni standard proposte nella configurazione guidata.

Aggiungere al file ‘/var/www/html/wiki/Localsettings.php’ le righe seguenti per la configurazione.
NB: fare copia/incolla da un file di testo semplice per evitare che eventuali caratteri non stampabili impediscano il funzionamento. Oppure usare un file di configurazione salvato da una installazione già funzionante.

wfLoadExtension( 'VisualEditor' );

(aggiunta in automatico se installato durante la prima configurazione della wiki)

di seguito la configurazione:

// Enable by default for everybody
 $wgDefaultUserOptions['visualeditor-enable'] = 1;

// Optional: Set VisualEditor as the default for anonymous users
 // otherwise they will have to switch to VE
 // $wgDefaultUserOptions['visualeditor-editor'] = "visualeditor";

// Don't allow users to disable it
 $wgHiddenPrefs[] = 'visualeditor-enable';

// OPTIONAL: Enable VisualEditor's experimental code features
 #$wgDefaultUserOptions['visualeditor-enable-experimental'] = 1;

Infine aggiungere le seguenti righe per collegare Visual Editor al servizio parsoid

$wgVirtualRestConfig['modules']['parsoid'] = array(
    // URL to the Parsoid instance
    // Use port 8142 if you use the Debian package
    'url' => 'http://localhost:8000',
    // Parsoid "domain", see below (optional)
    'domain' => 'localhost',
    // Parsoid "prefix", see below (optional)
    'prefix' => 'localhost'
);

Riavviare parsoid e httpd per sicurezza:

sudo service restart parsoid
sudo service restart httpd

A questo punto, entrando nella wiki sarà visibile la linguetta “Modifica” con cui si possono scrivere articoli modificando il testo in modo visuale, senza dover usare il codice wikitext.