Instalação do MediaWiki em uma Project web do SourceForge
Autor: Antonio | Publicado: 2010-06-27T00:29:00-03:00

O SourceForge disponibiliza uma wiki pré-instalada para os projetos de seus usuários, porém ela é um tanto limitada de recursos. Eu decidi fazer minha própria instalação do MediaWiki na Project web do AvmLinux. Foi um pouco difícil, mas eu consegui. Por isso escrevo esse tutorial com o passo-a-passo completo para os que tiverem seus projetos no SourceForge e decidirem fazer o mesmo.



No final deste artigo, você terá uma wiki como home page do seu site. Somente a título de curiosidade, o MediaWiki foi o mesmo software utilizado para produzir a wiki da Wikipédia. Acho que só esse exemplo já basta para ilustrar o quanto este software é funcional.

Vou procurar focar na finalidade do artigo, que é conseguir implantar uma wiki em uma Project web do SourceForge. Este artigo, portanto, destina-se a pessoas que utilizam o SourceForge para armazenar seus projetos e não abordará quaisquer conceitos que não estejam diretamente ligados ao seu objetivo, apesar de não ser de difícil compreensão. Você pode encontrar mais informações a respeito do SourceForge e do MediaWiki nas suas respectivas documentações aqui e aqui.

Para facilitar a explicação, suponhamos que:

seu login no SourceForge é usuario
o nome UNIX do seu projeto é meuprojeto
o GROUP ID do seu projeto é 123456

Dica: se você não sabe o GROUP ID do seu projeto, faça login no SourceForge, acesse a página do seu projeto ("http://sourceforge.net/projects/meuprojeto/") e clique em "Project Admin". Você deve ser levado a uma página com o endereço "https://sourceforge.net/project/admin/?group_id=123456". Esse último número do endereço é o GROUP ID do seu projeto.

Requisitos
Antes de tudo nós devemos baixar a versão estável mais recente do MediaWiki (no momento da elaboração deste tutorial é a 1.15.4). Para isso, execute o comando a seguir (você pode ir até a página de Download do MediaWiki para verificar se já existe uma versão mais nova).

$ wget http://download.wikimedia.org/mediawiki/1.15/mediawiki-1.15.4.tar.gz
Além disso, precisaremos de um cliente de FTP para enviar o MediaWiki para a Project web. Eu utilizei dois: o FileZilla (aplicação gráfica) e o sftp (programa de linha de comando), dando preferência a usar o FileZilla e deixando o sftp apenas para criar os symbolic links, já que o FileZilla não consegue fazer isso. Darei aqui instruções genéricas, que poderão ser executadas em qualquer cliente de FTP. Utilize aquele com o qual você já está acostumado.

Para instalar o FileZilla e o sftp em uma distribuição Debian ou derivada, você pode executar o seguinte comando no terminal:

# apt-get install openssh-client filezilla
No mais, precisaremos de um navegador para acessar os sites (provavelmente você está usando um para ler isto, então com navegador não precisamos nos preocupar) e algum programa para editar os arquivos PHP. Para isso um editor de texto já é suficiente (o KWrite, que foi o que eu utilizei, reconhece inclusive a sintaxe do PHP), mas você pode utilizar algum programa mais específico, se preferir.

Pelo menos em tese não é necessário um ambiente Linux para realizar esse passo-a-passo, visto que o que descrevo aqui é basicamente a instalação de uma aplicação web. No entanto, é recomendável, visto que precisaremos criar symbolic links, que são característicos do Linux. Se você encontrar um cliente de FTP para Windows que ofereça a possibilidade de criar symbolic links, pode fazer todo o passo-a-passo utilizando programas de Windows.

Configurações preliminares
Antes de iniciar a instalação propriamente dita do MediaWiki, precisamos fazer algumas alterações no seu código para adaptá-lo ao servidor do SourceForge e configurar a base de dados do projeto (a Project database), que será utilizada para armazenamento do conteúdo que será postado futuramente na wiki.

Vamos primeiramente às alterações referentes ao código do MediaWiki.

Extraia o arquivo compactado que você baixou do site do MediaWiki na etapa anterior:

$ tar -zxvf mediawiki-1.15.4.tar.gz
Será criada uma pasta com o nome "mediawiki-versão" (nesse caso, "mediawiki-1.15.4"). Para facilitar as coisas, vamos renomeá-la para "mediawiki":

$ mv mediawiki-1.15.4 mediawiki
Vamos agora abrir o arquivo "mediawiki/config/index.php", que é o script de instalação do MediaWiki, e fazer algumas alterações nele. Utilize seu editor de texto favorito para abrí-lo (eu utilizei o KWrite, que detecta a sintaxe do PHP):

$ kwrite mediawiki/config/index.php
Substitua a seguinte linha (se você baixou o MediaWiki pelo link forneci acima, é a linha 30):

$IP = dirname( dirname( __FILE__ ) );
por:

$IP = '/home/groups/m/me/meuprojeto/htdocs/mediawiki';
Nesse mesmo arquivo, onde houver "dbsource( "../maintenance" (são quatro linhas: 1099, 1133, 1134, 1167), devemos substituir por "dbsource( "$IP/maintenance".

Assim, devemos substituir:

Na linha 1099: dbsource( "../maintenance/users.sql", $wgDatabase );
Na linha 1133: dbsource( "../maintenance/tables.sql", $wgDatabase );
Na linha 1134: dbsource( "../maintenance/interwiki.sql", $wgDatabase );
Na linha 1167: dbsource( "../maintenance/users.sql", $wgDatabase );
por:

Na linha 1099: dbsource( "$IP/maintenance/users.sql", $wgDatabase );
Na linha 1133: dbsource( "$IP/maintenance/tables.sql", $wgDatabase );
Na linha 1134: dbsource( "$IP/maintenance/interwiki.sql", $wgDatabase );
Na linha 1167: dbsource( "$IP/maintenance/users.sql", $wgDatabase );
Salve e feche o arquivo "mediawiki/config/index.php".

Se quiser reduzir o tamanho do upload, você pode excluir as traduções do MediaWiki referentes aos idiomas que você não utilizará na sua wiki. Elas se encontram na pasta "mediawiki/languages/messages/". Eu deixei apenas os arquivos "MessagesEn.php" e "MessagesPt_br.php", que representam as traduções para o inglês internacional e o português brasileiro, respectivamente. Com isso eu reduzi o tamanho da pasta "mediawiki" em incríveis 32 MB!

Feito isso, terminamos as alterações com relação ao código do MediaWiki.

Vamos criar agora o arquivo ".htaccess" fora da pasta "mediawiki". Os usuários de Apache já devem saber que esse arquivo nos permite fazer alterações na configuração do Apache de forma local, sem ter acesso à configuração do servidor em si (arquivo "httpd.conf"). No caso do MediaWiki, ele terá dois propósitos interessantes: reduzir o endereço dos artigos (você pode obter mais informações sobre esta utilização em particular aqui) e redirecionar o usuário do endereço da Project web para o endereço da wiki.

Novamente, utilizarei o KWrite. Com o comando a seguir, o arquivo será criado no mesmo diretório do arquivo "mediawiki-1.15.4.tar.gz" e da pasta "mediawiki":

$ kwrite .htaccess
Copie e cole o seguinte conteúdo para dentro do arquivo, salve-o e feche-o:

RewriteEngine On
RewriteRule ^admin/([a-z]*)/(.*)$ /mediawiki/index.php?action=$1&title=$2 [L,QSA]
RewriteRule ^wiki/(.*)$ /mediawiki/index.php?title=$1 [PT,L,QSA]
RewriteRule ^wiki/*$ /mediawiki/index.php [L,QSA]
RewriteRule ^/*$ /mediawiki/index.php [L,QSA]
RewriteRule ^admin/login /wiki/Special:UserLogin [L,QSA]
RewriteRule ^admin/logout /wiki/Special:UserLogout [L,QSA]
RewriteRule ^admin/sidebar /admin/edit/MediaWiki:Sidebar [L,QSA]
Vamos agora às configurações referentes ao SourceForge.

Faça login no SourceForge, acesse a página do seu projeto ("http://sourceforge.net/projects/meuprojeto/"), aponte para "Project Admin" e clique em "Feature Settings". Clique então no link "Manage" ao lado de "Project Database (MySQL)".

Nessa página, você pode definir as senhas dos três usuários que o SourceForge disponibiliza para que as páginas da sua Project web acessem a Project database (para mais informações, veja a documentação da Project database). Defina as senhas dos três usuários, com destaque para o último usuário ("m12345admin"), que tem privilégios de administrador e será utilizado pelo MediaWiki para acessar a base de dados do seu projeto.

Acesse agora a interface do phpMyAdmin no SourceForge em "https://mysql-m.sourceforge.net/" (para mais informações, veja a documentação do phpMyAdmin no SourceForge) usando o usuário "m12345admin" e a senha que você acabou de definir e crie um banco de dados para o MediaWiki. Sugiro que o nome seja algo como "m12345_wiki".

Upload do MediaWiki
Feitas as configurações preliminares, podemos enviar os arquivos do MediaWiki para o servidor e prosseguir à instalação. Usando um cliente de FTP, se conecte ao servidor do SourceForge e entre na Project web. Lembre-se que, para isso, você deve fornecer ao cliente de FTP os seguintes dados (para mais informações veja a documentação da Project web no SourceForge):

Host: web.sourceforge.net
Porta: 22
Tipo de conexão: SFTP (SSH File Transfer Protocol)
Usuário: usuario,meuprojeto
Senha: a senha da sua conta (usuario) no SourceForge
Pasta remota pré-definida: /home/groups/m/me/meuprojeto/htdocs/

Faça o upload do diretório "mediawiki" e do arquivo ".htaccess" para a raiz do site ("/home/groups/m/me/meuprojeto/htdocs/"). Depois, entre no diretório "mediawiki" que está no site e apague os diretórios "config" e "images".

Entre agora no diretório "persistent" do servidor ("/home/groups/m/me/meuprojeto/persistent/") e crie um diretório "mediawiki". Entre no diretório "mediawiki" do seu computador e faça o upload dos diretórios "config" e "images" para o diretório "mediawiki" que você acabou de criar no servidor ("/home/groups/m/me/meuprojeto/persistent/mediawiki/").

Agora vamos criar symbolic links para os diretórios "config" e "images" que acabamos de enviar para o servidor dentro da pasta "mediawiki" para que eles possam ser acessados pelo MediaWiki. Essa parte deve ser feita usando o sftp. Os comandos que devem ser executados são os listados abaixo. O primeiro comando serve apenas para fazer a conexão, portanto se você já vinha usando o sftp sua execução é desnecessária.

$ sftp usuario,meuprojeto@web.sourceforge.net:/home/groups/m/me/meuprojeto/htdocs/

sftp> symlink /home/groups/m/me/meuprojeto/persistent/mediawiki/config /home/groups/m/me/meuprojeto/htdocs/mediawiki/config

sftp> chmod 777 /home/groups/m/me/meuprojeto/persistent/mediawiki/config

sftp> symlink /home/groups/m/me/meuprojeto/persistent/mediawiki/images /home/groups/m/me/meuprojeto/htdocs/mediawiki/images

sftp> chmod 777 /home/groups/m/me/meuprojeto/persistent/mediawiki/images

sftp> exit
Em uma instalação normal, não seria necessário armazenar os diretórios "config" e "images" em um local externo ao diretório "mediawiki" e referenciá-los através de symbolic links. O problema é que a configuração do Apache no SourceForge é feita de maneira a não permitir a gravação de arquivos no diretório "/home/groups/m/me/meuprojeto/htdocs". Assim, temos que usar o diretório "/home/groups/m/me/meuprojeto/persistent", que eles criaram para essa finalidade.

Se não fizéssemos essa "manobra", ao executar o script de instalação do MediaWiki obteríamos uma mensagem de erro informando que são necessários direitos de gravação no diretório "config". A mesma coisa aconteceria com o diretório "images" ao tentar fazer uploads de imagens para a wiki após a instalação.

Instalação
Agora sim podemos prosseguir à instalação normal do MediaWiki. Acesse o endereço "http://meuprojeto.sourceforge.net/mediawiki/config/" em seu navegador e preencha o formulário que aparece com os seguintes dados:

Wiki name: MeuProjeto
Contact e-mail: usuario@users.sourceforge.net
Admin username: WikiSysop
Password: defina uma senha de sua preferência
Desabilite todas as funções referentes a cache e e-mail
Database type: MySQL
Database host: mysql-m
Database name: m12345_wiki
DB username: m12345admin
DB password: coloque a senha do usuário "m12345admin"

Fornecidos os dados necessários, clique em "Install MediaWiki!", no final da página.

Terminada a configuração, ele gerará o arquivo "LocalSettings.php" dentro da pasta "/home/groups/m/me/meuprojeto/persistent/mediawiki/config" no servidor. Usando o cliente de FTP, baixe esse arquivo para que possamos fazer algumas alterações nele e enviá-lo novamente para o servidor.

Abra-o com o editor de texto:

$ kwrite LocalSettings.php
Antes da linha:

$wgScriptExtension = ".php";
acrescente as linhas a seguir (para mais informações sobre a função dessas linhas, leia esta página):

$actions = array('view', 'edit', 'watch', 'unwatch', 'delete','revert', 'rollback', 'protect',
'unprotect','info','markpatrolled','validate','render','deletetrackback','print',
'dublincore','creativecommons','credits','submit','viewsource','history','purge');

foreach ($actions as $a)
$wgActionPaths[$a] = "/admin/$a/$1";

$wgArticlePath = "/wiki/$1";
$wgUsePathInfo = true;
Habilite os uploads alterando essa linha:

$wgEnableUploads = false;
para:

$wgEnableUploads = true;
Se desejar, você pode fazer mais configurações nesse arquivo. No meu caso, eu impedi que os usuários não cadastrados fizessem qualquer coisa que não fosse ler os artigos da wiki, até mesmo a criação de uma conta só poderá ser feita pelo administrador da wiki:

$wgGroupPermissions['*']['createaccount']    = false;
$wgGroupPermissions['*']['read']             = true;
$wgGroupPermissions['*']['edit']             = false;
$wgGroupPermissions['*']['createpage']       = false;
$wgGroupPermissions['*']['createtalk']       = false;
$wgGroupPermissions['*']['writeapi']         = false;

$wgDisabledActions = array('history');
Eu também instalei as extensões Multilang, Polyglot e LanguageSelector, referentes à visualização de conteúdo em diferentes idiomas. Não entrarei em detalhes à respeito de personalizações do MediaWiki, deixando esse assunto para um possível próximo artigo.

Terminadas as alterações, salve o arquivo, feche o editor de texto, volte ao cliente de FTP e faça o upload do arquivo "LocalSettings.php" alterado para a pasta "/home/groups/m/me/meuprojeto/htdocs/mediawiki/" no servidor.

Finalmente, por questões de segurança, apague o symbolic link para o diretório "config" criado na etapa anterior, impedindo que qualquer um tenha acesso ao script de instalação do MediaWiki.

Utilização
Se nada de errado ocorreu, você agora tem uma wiki que funciona de forma semelhante à Wikipédia. 

Para fins de demonstração, acesse a home page do seu projeto:

http://meuprojeto.sourceforge.net/
Você será redirecionado automaticamente para o endereço da wiki:

http://meuprojeto.sourceforge.net/wiki/
O caminho para qualquer artigo com o título MeuArtigo será:

http://meuprojeto.sourceforge.net/wiki/MeuArtigo
Aliás, o caminho para a home page (que, na wiki, também é considerada um artigo) será:

http://meuprojeto.sourceforge.net/wiki/Main_Page
Além disso, quaisquer ações (editar, excluir, deletar, mover) referentes aos artigos serão acessadas via:

http://meuprojeto.sourceforge.net/admin/nome_da_acao/nome_do_artigo
Por exemplo:

http://myproject.sourceforge.net/admin/edit/Main_Page
O login, o logout e a edição da barra de navegação lateral também foram facilitados:

http://myproject.sourceforge.net/admin/login
http://myproject.sourceforge.net/admin/logout
http://myproject.sourceforge.net/admin/sidebar
Para os que desejarem ver o resultado desse artigo já em aplicação, aqui está o link para a home page do projeto AvmLinux.

Espero que tenham gostado do passo-a-passo e que ele possa ser útil para vocês assim como foi para mim. Um abraço a todos e até a próxima.

Fontes
http://monda.hu/blog/2006/03/03/mediawiki-on-sourceforge-the-howto/https://sourceforge.net/apps/trac/sourceforge/wiki/WikiStarthttp://sourceforge.net/apps/trac/sourceforge/wiki/Project webhttp://sourceforge.net/apps/trac/sourceforge/wiki/Project databasehttps://sourceforge.net/apps/trac/sourceforge/wiki/phpMyAdminhttp://www.mediawiki.org/wiki/Sysadmin_hubhttp://www.mediawiki.org/wiki/Manual:Running_MediaWiki_on_Sourceforge.nethttp://www.mediawiki.org/wiki/Manual:Short_URL/wiki/Page_title_--_no_root_accesshttp://www.mediawiki.org/wiki/Manual:$wgActionPaths