Configurando servidor WIKI

De MediaWiki do Campus São José
Ir para: navegação, pesquisa

Migração da versão de wiki

A atual versão, 1.9.3, está defasada. É fortemente recomendado migrar para uma versão mais nova - a última versão estável disponível é a 1.16.0.

Instalação do sistema operacional

Instalado o sistema Debian lenny virtualizado sobre VMWare.

Instalação de servidor Web com suporte a PHP e MySQL

aptitude install apache2 php5 libapache2-mod-php5 php5-mysql

Instalação de código do Mediawiki

cd /var/www
wget http://download.wikimedia.org/mediawiki/1.16/mediawiki-1.16.0.tar.gz
tar xvzf mediawiki-1.16.0.tar.gz
rm -f mediawiki-1.16.0.tar.gz
mv mediawiki-1.16.0 wiki
chown -R www-data:www-data wiki
find wiki -type d -exec chmod 500 {} \;
find wiki -type f -exec chmod 400 {} \;
chmod 700 wiki/images

Configuração do CMS

aptitude install php5-gd php5-imagick php5-ldap imagemagick

Extensões

A lista de extensões do Mediawiki pode ser vista por uma página especial: Especial:Versão.

Bibtex

Embora a versão tenha suporte "oficial" até a versão 1.10, é possível utilizar a extensão para versões posteriores:

wget http://gsc2.cemif.univ-evry.fr/images/3/30/Mediawiki-Bibtex-0.9.1.tar.gz
tar xvzf Mediawiki-Bibtex-0.9.1.tar.gz
rm -f Mediawiki-Bibtex-0.9.1.tar.gz
chown -R www-data:www-data Mediawiki-Bibtex-0.9.1
chmod 500 Mediawiki-Bibtex-0.9.1
chmod 400 Mediawiki-Bibtex-0.9.1/*
mv Mediawiki-Bibtex-0.9.1 Bibtex

É preciso atualizar o código do arquivo extensions/Bibtex/bibtex.php. Abaixo, uma correção (patch), conforme discussão:

--- bibtex.php-old	2010-10-30 00:35:45.486951000 -0200
+++ bibtex.php	2010-10-30 00:39:15.621595840 -0200
@@ -4,7 +4,8 @@
 // Jean-Yves Didier, November, the 4th 2005.
 
 include_once 'bibstyle.php';
-include_once 'Image.php';
+// 20101030 Ederson Torresini: informando o novo local do arquivo
+include_once 'includes/filerepo/Image.php';
 
 // First declaration for mediawiki bibtex extension
 $wgExtensionFunctions[] = "wfBibtexExtension";
@@ -568,6 +569,8 @@
 	  $links .= "\n";
 	  $text .= $links;
      }
+	// 20101030 Ederson Torresini: retornando algo (parece óbvio, mas...)
+	return true;
 }
 
 ?>

o que na prática significa alterar a referência do arquivo Image.php (linha 7) e adicionar um retorno à função bibtexHook (linha 570).

E, por último, adicionar a linha no arquivo LocalSettings.php:

require_once("extensions/Bibtex/bibtex.php");
Teste

<bibtex> @Book{Lathi:2006:SSL,

 author =       "B. P. (Bhagwandas Pannalal) Lathi",
 title =        "Sinais e Sistemas Lineares",
 publisher =    "Bookman",
 address =      {Porto Alegre},
 edition =      "2.ed",
 pages =        "856p."
 year =         "2007",
 ISBN =         "85-60031-13-8",
 ISBN-13 =      ,

} </bibtex>

NoTitle

Graphviz

aptitude install graphviz
cd /var/www/wiki/extensions
wget http://mwextensions.cvs.sourceforge.net/*checkout*/mwextensions/mediawikiextensions/Graphviz.php
chown www-data:www-data Graphviz.php
chmod 400 Graphviz.php

No arquivo /var/www/wiki/LocalSettings.php foram adicionadas as linhas:

include("extensions/Graphviz.php");
$wgGraphVizSettings->dotCommand = "/usr/bin/dot";

GeshiCodeTag

A extensão depende de outra extensão, geshi:

cd /tmp
wget -r --no-parent http://mediawiki.googlecode.com/svn/trunk/extensions/geshi/geshi/
mv mediawiki.googlecode.com/svn/trunk/extensions/geshi/geshi/ /var/www/wiki/extensions/
cd /var/www/wiki/extensions/geshi
rm -f index.html geshi/index.html
chown -R www-data:www-data .
chmod 500 geshi
chmod 400 geshi.php geshi/*
mkdir DESATIVADOS
chown www-data:www-data DESATIVADOS
chmod 500 DESATIVADOS
for linguagem in smarty vbnet objc xpp diff vhdl asp ini lisp apache latex asm vb actionscript idl robots div; \
do mv geshi/${linguagem}.php DESATIVADOS; done

Uma vez instalada a dependência, é possível habilitar a extensão:

cd /var/www/wiki/extensions
vi GeshiCodeTag.php
chown www-data:www-data GeshiCodeTag.php
chmod 400 GeshiCodeTag.php

Obs.: o conteúdo do arquivo foi copiado a partir da sua página. No arquivo /var/www/wiki/LocalSettings.php foi adicionada a linha:

include("extensions/GeshiCodeTag.php");

EmbedVideo

cd /var/www/wiki/extensions/
wget http://github.com/Whiteknight/mediawiki-embedvideo/tarball/v1.0
tar xvzf v1.0
rm -f v1.0
mv Whiteknight-mediawiki-embedvideo-f0c57ad EmbedVideo
chown -R www-data:www-data EmbedVideo
chmod 500 EmbedVideo
chmod 400 EmbedVideo/*

No arquivo /var/www/wiki/LocalSettings.php foi adicionada a linha:

require_once("extensions/EmbedVideo/EmbedVideo.php");
teste

ParserFunctions

A versão foi descarregada da página da extensão - a última versão estável disponível é a r75335.

cd /var/www/wiki/extensions/
wget http://upload.wikimedia.org/ext-dist/ParserFunctions-trunk-r75335.tar.gz
tar xvzf ParserFunctions-trunk-r75335.tar.gz
rm -f ParserFunctions-trunk-r75335.tar.gz
chown -R www-data:www-data ParserFunctions
chmod 500 ParserFunctions
chmod 400 ParserFunctions/*

No arquivo /var/www/wiki/LocalSettings.php foi adicionada a linha:

require_once("extensions/ParserFunctions/ParserFunctions.php" );

LdapAuthentication

A versão foi descarregada da página da extensão - a última versão estável disponível é a r61987.

cd /var/www/wiki/extensions/
wget http://upload.wikimedia.org/ext-dist/LdapAuthentication-MW1.16-r61987.tar.gz
tar xvzf LdapAuthentication-MW1.16-r61987.tar.gz
rm -f LdapAuthentication-MW1.16-r61987.tar.gz
chown -R www-data:www-data LdapAuthentication
chmod 500 LdapAuthentication
chmod 400 LdapAuthentication/*

e a configuração para a base LDAP de acesso externo. No arquivo /var/www/wiki/LocalSettings.php foram adicionadas as linhas:

require_once( "extensions/LdapAuthentication/LdapAuthentication.php" );
$wgAuth = new LdapAuthenticationPlugin();
$wgLDAPDomainNames = array( "IF-SC" );
$wgLDAPServerNames = array( "IF-SC"=>"200.135.37.79" );
$wgLDAPEncryptionType = array( "IF-SC"=>"clear" );
$wgLDAPSearchStrings = array( "IF-SC"=>"uid=USER-NAME,ou=SaoJose,ou=Usuarios,dc=cefetsc,dc=edu,dc=br" );
$wgLDAPSearchAttributes = array( "IF-SC"=>"uid" );
$wgLDAPBaseDNs = array( "IF-SC"=>"dc=cefetsc,dc=edu,dc=br" );
$wgLDAPGroupBaseDNs = array( "IF-SC"=>"ou=Grupos,dc=cefetsc,dc=edu,dc=br" );
$wgLDAPUserBaseDNs = array( "IF-SC"=>"ou=SaoJose,ou=Usuarios,ou=Usuarios,dc=boidacarapreta,dc=homeunix,dc=net" );
$wgLDAPGroupUseFullDN = array( "IF-SC"=>false );
$wgLDAPGroupAttribute = array( "IF-SC"=>memberUid );
$wgLDAPUseLocal = true;

Essa última linha, em particular, mantém as contas da base SQL (autenticação local) em paralelo com as do LDAP.

Lockdown

A versão foi descarregada da página da extensão - a última versão estável disponível é a r70092.

cd /var/www/wiki/extensions/
wget http://upload.wikimedia.org/ext-dist/Lockdown-MW1.16-r70092.tar.gz
tar xvzf Lockdown-MW1.16-r70092.tar.gz
rm -f Lockdown-MW1.16-r70092.tar.gz
chown -R www-data:www-data Lockdown
chmod 500 Lockdown
chmod 400 Lockdown/*

e a configuração para controlar o acesso. No arquivo /var/www/wiki/LocalSettings.php foi adicionada a linha para carregar a extensão:

require_once( "extensions/Lockdown/Lockdown.php" );

A partir desse ponto, é possível controlar o acesso para uma namespace em particular. A Comissão de Engenharia solicitou um espaço reservado para rascunhar a proposta do curso, a qual será liberada quando o documento estiver finalizado. Até lá, apenas os membros da Comissão terão acesso ao material. Primeiro, a criação de uma namespace específica:

define("NS_ENGENHARIA", 102);
define("NS_ENGENHARIA_TALK", 103);
$wgExtraNamespaces[NS_ENGENHARIA] = "Engenharia";
$wgExtraNamespaces[NS_ENGENHARIA_TALK] = "Engenharia Talk";

Em seguida, foi criado o grupo de controle e ativadas as suas permissões de uso:

$wgGroupPermissions['Engenharia']['read'] = true;
$wgGroupPermissions['Engenharia']['createpage'] = true;
$wgGroupPermissions['Engenharia']['edit'] = true;
$wgGroupPermissions['Engenharia']['createtalk'] = true;
$wgGroupPermissions['Engenharia']['minoredit'] = true;
$wgGroupPermissions['Engenharia']['move-subpages'] = true;
$wgGroupPermissions['Engenharia']['move'] = true;
$wgGroupPermissions['Engenharia']['movefile'] = true;
$wgGroupPermissions['Engenharia']['reupload-shared'] = true;
$wgGroupPermissions['Engenharia']['reupload'] = true;
$wgGroupPermissions['Engenharia']['sendemail'] = true;
$wgGroupPermissions['Engenharia']['upload'] = true;
$wgGroupPermissions['Engenharia']['writeapi'] = true;
$wgGroupPermissions['Engenharia']['delete'] = true;
$wgGroupPermissions['Engenharia']['undelete'] = true;

e, por último, aplicadas as suas permissões à namespace "Engenharia":

$wgNamespacePermissionLockdown[NS_ENGENHARIA]['*'] = array('Engenharia');
$wgNamespacePermissionLockdown[NS_ENGENHARIA_TALK]['*'] = array('Engenharia');

Google Calendar

A versão foi descarregada do código 'inline' da página pessoal do desenvolvedor.

cd /var/www/wiki/extensions/
vi Google_Calendar.php
chown www-data:www-data Google_Calendar.php
chmod 400 Google_Calendar.php

e a configuração para controlar o acesso. No arquivo /var/www/wiki/LocalSettings.php foi adicionada a linha para carregar a extensão:

require_once( "extensions/Google_Calendar.php" );

Cite

A versão foi descarregada da página da extensão - a última versão estável disponível é a r62678.

cd /var/www/wiki/extensions/
wget http://upload.wikimedia.org/ext-dist/Cite-MW1.16-r62678.tar.gz
tar xvzf Cite-MW1.16-r62678.tar.gz
rm -f Cite-MW1.16-r62678.tar.gz
chown -R www-data:www-data Cite
chmod 500 Cite
chmod 400 Cite/*

No arquivo /var/www/wiki/LocalSettings.php foi adicionada a linha para carregar a extensão:

require_once( "extensions/Cite/Cite.php" );

S5SlideShow

A versão foi descarregada do repositório oficial no Google Code.

cd /var/www/wiki/extensions/
wget http://mediawiki4intranet.googlecode.com/files/S5SlideShow-2011-11-01.tar.bz2
tar xvzf S5SlideShow-2011-11-01.tar.bz2
rm -f S5SlideShow-2011-11-01.tar.bz2
chown -R www-data:www-data S5SlideShow
find S5SlideShow/ -type f -exec chmod 400 {} \;
find S5SlideShow/ -type d -exec chmod 500 {} \;

No arquivo /var/www/wiki/LocalSettings.php foram adicionadas as linhas para configurar e carregar a extensão:

$egS5SlideHeadingMark = ;
$egS5SlideIncMark = '(step)';
$egS5BrowserScaleHack = true;
require_once("extensions/S5SlideShow/S5SlideShow.php");

Collection

A versão foi descarregada da página da extensão - a última versão estável disponível é a r66255.

cd /var/www/wiki/extensions/
wget http://upload.wikimedia.org/ext-dist/Collection-MW1.16-r66255.tar.gz
tar xvzf Collection-MW1.16-r66255.tar.gz
rm -f Collection-MW1.16-r66255.tar.gz
chown -R www-data:www-data Collection
find Collection/ -type f -exec chmod 400 {} \;
find Collection/ -type d -exec chmod 500 {} \;

No arquivo /var/www/wiki/LocalSettings.php foi adicionada a linha para configurar e carregar a extensão:

require_once("extensions/Collection/Collection.php");
$wgCollectionFormats = array(
    'rl' => 'PDF', # enabled by default
    'odf' => 'ODT',
    'docbook' => 'DocBook XML',
    'xhtml' => 'XHTML 1.0 Transitional',
    'epub' => 'e-book (EPUB)',
    'zim' => 'Kiwix (OpenZIM)',
);

Validator + SemanticMediawiki

Par de extensões que proveem suporte à extensão Semantic Project Management. Como a última versão não suporta a nossa versão de MediaWiki, foi necessário descarregar a versão 1.7.1 da extensão.

unzip SemanticMediaWiki1.7.1.zip 
rm -f SemanticMediaWiki1.7.1.zip
chown -R www-data:www-data SemanticMediaWiki Validator/
find SemanticMediaWiki Validator/ -type d -exec chmod 500 {} \; 
find SemanticMediaWiki Validator/ -type f -exec chmod 400 {} \;

No arquivo /var/www/wiki/LocalSettings.php foram adicionadas as linhas para configurar e carregar a extensão:

require_once("extensions/Validator/Validator.php");
include_once("extensions/SemanticMediaWiki/SemanticMediaWiki.php");
enableSemantics('sj.ifsc.edu.br');

Por último, aplicadas todas as modificações na base de dados da wiki (página restritra para administradores).

Semantic Project Management

A versão foi descarregada diretamente do repositório Subversion do projeto - a última versão estável disponível é a r115178.

cd /var/www/wiki/extensions/
svn checkout http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/SemanticProjectManagement/
chown -R www-data:www-data SemanticProjectManagement/
find SemanticProjectManagement/ -type f -exec chmod 400 {} \;
find SemanticProjectManagement/ -type d -exec chmod 500 {} \;

No arquivo /var/www/wiki/LocalSettings.php fo adicionada a linha para configurar e carregar a extensão - após as linhas das dependências:

include_once( "extensions/SemanticProjectManagement/SemanticProjectManagement.php" );

OggHandler

A versão foi descarregada diretamente do repositório Git do projeto. Para a imagem de pré-visualização (thumbnail), foi escolhido o FFmpeg:

aptitude install ffmpeg

Em seguida, a instalação e configuração da extensão:

cd /var/www/wiki/extensions/
git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/OggHandler.git
chown -R www-data:www-data OggHandler
find OggHandler -type f -exec chmod 400 {} \;
find OggHandler -type d -exec chmod 500 {} \;

No arquivo /var/www/wiki/LocalSettings.php foram adicionadas as linhas para configurar e carregar a extensão:

require("extensions/OggHandler/OggHandler.php");
$wgFFmpegLocation = '/usr/bin/ffmpeg';

Luciwik

A versão foi descarregada diretamente do sítio do projeto (já desativado: http://lucidor.org/luciwik/). Abaixo, a instalação e configuração da extensão:

cd /var/www/wiki/extensions/
wget http://lucidor.org/luciwik/luciwik-0.2.zip
unzip luciwik-0.2.zip
rm -f luciwik-0.2.zip
mv luciwik-0.2/Luciwik .
mv luciwik-0.2/LuciwikEPUB .
chown -R www-data:www-data Luciwik*
find Luciwik* -type f -exec chmod 400 {} \;
find Luciwik* -type d -exec chmod 500 {} \;

No arquivo /var/www/wiki/LocalSettings.php foram adicionadas as linhas para carregar e configurar a extensão de acordo com a sua documentação:

require_once("extensions/Luciwik/Luciwik.php");
require_once("extensions/LuciwikEPUB/LuciwikEPUB.php");
$wgWellFormedXml = true;

Widget

A versão foi descarregada usando o git. Abaixo, a instalação e configuração da extensão:

cd /var/www/wiki/extensions/
git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Widgets.git
cd Widgets
git submodule init
git submodule update
chown -R www-data:www-data .
find . -type f -exec chmod 0400 {} \;
find . -type d -exec chmod 0500 {} \;
chmod 0700 compiled_templates/

No arquivo /var/www/wiki/LocalSettings.php foi adicionada a linha para carregar a extensão de acordo com a sua documentação:

require_once("$IP/extensions/Widgets/Widgets.php");

Um exemplo de uso é o do Prezi, em que é preciso editar a página do widget com o código fonte.

Quiz

A versão foi descarregada usando o git. Abaixo, a instalação e configuração da extensão:

cd /var/www/wiki/extensions
mkdir Quiz
cd Quiz
wget "https://git.wikimedia.org/zip/?r=mediawiki/extensions/Quiz&h=refs/heads/master&format=gz" -O quiz.tgz
tar xzf quiz.tgz
rm -f quiz.tgz
chown -R www-data:www-data .
find . -type f -exec chmod 0400 {} \;
find . -type d -exec chmod 0500 {} \;

No arquivo /var/www/wiki/LocalSettings.php foi adicionada a linha para carregar a extensão de acordo com a sua documentação:

require_once("$IP/extensions/Quiz/Quiz.php");

Tooltip

A versão foi descarregada usando o subversion. Abaixo, a instalação e configuração da extensão:

cd /var/www/wiki/extensions
svn checkout http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/Tooltip/
chown -R www-data:www-data Tooltip
find Tooltip -type f -exec chmod 0400 {} \;
find Tooltip -type d -exec chmod 0500 {} \;
curl http://upload.wikimedia.org/wikipedia/mediawiki/c/cf/Ttbg.png -o ../images/ttbg.png
chown www:www ../images/ttbg.png
chown www-data:www-data ../images/ttbg.png
chmod 0400 ../images/ttbg.png

No arquivo /var/www/wiki/LocalSettings.php foi adicionada a linha para carregar a extensão de acordo com a sua documentação:

require_once("$IP/extensions/Tooltip/Tooltip.php");

GoogleDocTag

A versão foi descarregada usando o git. Abaixo, a instalação e configuração da extensão:

cd /var/www/wiki/extensions/
git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/GoogleDocTag.git
chown -R www-data:www-data GoogleDocTag
find GoogleDocTag -type f -exec chmod 0400 {} \;
find GoogleDocTag -type d -exec chmod 0500 {} \;

No arquivo /var/www/wiki/LocalSettings.php foi adicionada a linha para carregar a extensão de acordo com a sua documentação:

require_once("$IP/extensions/GoogleDocTag/GoogleDocTag.php");

MindMap

A versão foi descarregada da página da extensão. Abaixo, a instalação e configuração da extensão:

cd /var/www/wiki/extensions/
wget http://www.pragmas.ch/www-extern/MindMap.zip
unzip MindMap.zip
rm -f MindMap.zip
chown -R www-data:www-data MindMap
find MindMap -type f -exec chmod 0400 {} \;
find MindMap -type d -exec chmod 0500 {} \;

No arquivo /var/www/wiki/LocalSettings.php foi adicionada a linha para carregar a extensão de acordo com a sua documentação:

require_once("$IP/extensions/MindMap/MindMap.php");

Interpretação de Fórmulas Matemáticas

O Mediawiki pode interpretar e apresentar fórmulas matemáticas assim como o LaTeX. Para ativar essa função, deve-se primeiramente instalar os pacotes de sistema para análise léxica e sintática:

aptitude install ocaml cjk-latex

Em seguida, compilar o programa textvc, conforme manual oficial:

aptitude install build-essential
cd /var/www/wiki/math
make clean all
chown www-data:www-data *
chmod 400 *
chmod 500 texvc texvc_test texvc_tex

E, por último, ativar o uso do texvc na configuração (arquivo LocalSettings.php):

$wgUseTeX = true;

Ficando assim:

Cópia dos arquivos carregados (upload)

Testes:

  1. Cópia bruta de servidor antigo para novo: sucesso. A estrutura de diretórios e arquivos manteve-se compatível entre as versões.

Transferência da base de dados (exportação e importação)

No servidor antigo

Primeiramente, foi feita uma cópia da base de dados do atual servidor:

mysqldump -u <usuário> -p <base_original> > /var/backups/<base_original>_20101029.sql
chmod 400 /var/backups/<base_original>_20101029.sql

Em seguida, o arquivo foi copiado para o novo servidor...

scp /var/backups/<base_original>_20101029.sql <servidor_novo>:/var/backups/

No servidor novo

... e importado, usando para tal o servidor de bases <servidor_SQL>:

mysql -h <servidor_SQL> -u <usuário> -p <base> < /var/backups/<base_original>_20101029.sql

Como as versões antiga e nova são diferentes, é preciso atualizar o formato das tabelas no banco, conforme documentação:

cd /var/www/wiki/
php maintenance/update.php

E, por último, manter a compatibilidade com conteúdo gerado em antigas versões do MySQL, ativando o parâmetro wgDBmysql5 no arquivo /var/www/wiki/LocalSettings.php:

$wgDBmysql5 = false;