MediaWiki
Sobre
Olá! Visitante, reunimos aqui, informações sobre configurações avançadas da MediaWiki, com estes ajustes além de fazer uma configuração mais personalizada e segura, também é possível configurar a sua wiki de maneira profissional com o AD da sua empresa, assim deixando os usuários de seu controlador de domínios podendo autenticar na sua wiki, este tipo de situação é interessante quando se precisa disponibilizar uma Wiki Corporativa.
Configurações
Edições
- 1 - Bloquear exceções de captcha:
# vim ConfirmEdit/ConfirmEdit.php
$wgGroupPermissions['*' ]['skipcaptcha'] = false; $wgGroupPermissions['user' ]['skipcaptcha'] = false; $wgGroupPermissions['autoconfirmed']['skipcaptcha'] = false; $wgGroupPermissions['bot' ]['skipcaptcha'] = false; // registered bots $wgGroupPermissions['sysop' ]['skipcaptcha'] = false; $wgAvailableRights[] = 'skipcaptcha';
- 2 - Definição de ações que solicitarão captcha:
$wgCaptchaTriggers = array(); $wgCaptchaTriggers['edit'] = false; // Would check on every edit $wgCaptchaTriggers['create'] = true; // Check on page creation. $wgCaptchaTriggers['sendemail'] = false; // Special:Emailuser $wgCaptchaTriggers['addurl'] = false; // Check on edits that add URLs $wgCaptchaTriggers['createaccount'] = true; // Special:Userlogin&type=signup $wgCaptchaTriggers['badlogin'] = true; // Special:Userlogin after failure
Integração com AD
- 1 - Download da última versão em: http://www.mediawiki.org/wiki/Extension:LDAP_Authentication#Current_version
- 2 - Habilitar o módulo no LocalSettings.php:
require_once( "$IP/extensions/LdapAuthentication/LdapAuthentication.php" ); $wgAuth = new LdapAuthenticationPlugin();
- 3 - Configurações básicas:
$wgLDAPDomainNames = array( 'dominio' ); $wgLDAPServerNames = array( 'dominio' => 'servidor.dominio.com' ); $wgLDAPSearchStrings = array( "dominio" => "DOMINIO\\USERNAME" ); $wgLDAPEncryptionType = array( "dominio" => "clear" );
- 4 - Fazer o update de banco para adicionar as tabela "wikidb.ldap_domains":
# cd /var/www/mediawiki/maintenance # php update.php
- 5 - Testar a autenticação.
Restrições de Grupos
- 1 - Adicionar as seguintes opções no LocalSettings.php:
$wgLDAPGroupUseFullDN = array( "DOMINIO" => true ); $wgLDAPBaseDNs = array( 'DOMINIO' => 'dc=dominio,dc=com' ); $wgLDAPSearchAttributes = array( 'DOMINIO' => 'sAMAccountName' );
- 2 - Definição dos atributos de busca por grupos:
$wgLDAPGroupObjectclass = array( 'DOMINIO' => 'group' ); $wgLDAPGroupAttribute = array( 'DOMINIO' => 'member' ); $wgLDAPGroupNameAttribute = array( 'DOMINIO' => 'cn' );
- 3 - Definição de quais grupos precisa pertencer:
$wgLDAPRequiredGroups = array( 'DOMINIO' => array( 'cn=Wiki_Edicao,ou=Acessos_Wiki,dc=dominio,dc=com','cn=Wiki_Leitura,ou=Acessos_Wiki,dc=dominio,dc=com' ) );
- OBS.: Da mesma forma podem ser usados grupos de exclusão usando a tag "$wgLDAPExcludedGroups"
$wgLDAPExcludedGroups = array( 'DOMINIO' => array( 'cn=Wiki_Negado,ou=Acessos_Wiki,dc=dominio,dc=com' ) );
- 4 - Aplicação de permissões baseadas em grupos:
$wgLDAPUseLDAPGroups = array( 'DOMINIO' => true ); $wgGroupPermissions['*']['createaccount'] = false; $wgGroupPermissions['*']['edit'] = false; $wgGroupPermissions['*']['read'] = false; $wgGroupPermissions['user']['edit'] = false; $wgGroupPermissions['user']['createpage'] = false; $wgGroupPermissions['user']['upload'] = false; $wgGroupPermissions['Wiki_Leitura' ]['edit'] = false; $wgGroupPermissions['Wiki_Edicao' ]['edit'] = true; $wgGroupPermissions['Wiki_Edicao' ]['createpage'] = true; $wgGroupPermissions['Wiki_Edicao' ]['upload'] = true; $wgGroupPermissions['Wiki_Admin' ]['edit'] = true; $wgGroupPermissions['Wiki_Admin' ]['createpage'] = true; $wgGroupPermissions['Wiki_Admin' ]['upload'] = true; $wgGroupPermissions['Wiki_Admin' ] = $wgGroupPermissions[ 'sysop' ];
Busca de Atributos
- 1 - Adicionar a seguinte linha para buscar e-mail, nome, login e idioma:
$wgLDAPPreferences = array( 'dominio.com' => array( 'email'=>'mail','realname'=>'cn','nickname'=>'sAMAccountName','language'=>'preferredLanguage'));
Referências
- http://ryandlane.com/blog/2009/03/23/using-the-ldap-authentication-plugin-for-mediawiki-the-basics-part-1/
- http://www.mediawiki.org/wiki/Manual:User_rights
- http://www.mediawiki.org/wiki/Extension:LDAP_Authentication/Options#Enabling_the_plugin
- http://www.mediawiki.org/wiki/Extension:LDAP_Authentication/AD_Configuration_Examples
Múltiplas Instâncias
Quando há a necessidade de mais bases Wiki no mesmo servidor, uma boa solução é criar endereços de wikis diferentes e com bases de dados diferentes mas usando os mesmos arquivos do MediaWiki.
- 1 - Renomear o arquivo LocalSettings.php
mv LocalSettings.php LocalSettings_Wiki1.php
- 2 - Acessar http://wiki.dominio.com/mw-config/index.php e proceder com a configuração da nova database.
- 3 - Fazer uma cópia do LocalSettings_Wiki1.php para LocalSettings_Wiki2.php e ajustar os seguintes parâmetros:
$wgServer $wgDBname $wgSecretKey $wgUpgradeKey
- 4 - Verificar e ajustar as permissões de grupos e autenticação.
- 5 - Criar um arquivo LocalSettings.php com o seguinte conteúdo:
<?php $callingURL = strtolower($_SERVER['SERVER_NAME']); $pos = strpos( $callingURL, 'wiki1'); if ( $pos === false ) { require_once('LocalSettings_Wiki1.php'); }else{ require_once('LocalSettings_Wiki2.php'); } ?>
- 6 - Ajustar os diretórios de uploads na Wiki2:
$wgUploadDirectory = "{$IP}/wiki2/images"; $wgUploadPath = "{$wgScriptPath}/wiki2/images";
Procedimentos
SQL
Criar Admin
INSERT INTO user_groups ( ug_user, ug_group ) VALUES ( 1, "bureaucrat" ); INSERT INTO user_groups ( ug_user, ug_group ) VALUES ( 1, "sysop" );
Backup
/usr/local/bin/bkp_mediawiki.sh
#!/bin/bash # VARIAVEIS DIR_BKP="/mnt/BACKUP" BKPS="2" DATE="`date +%Y-%m-%d`" DATE_APAGAR=$(date --date "$BKPS days ago" +%Y-%m-%d) # COMANDOS mysqldump -u wiki_user -p"senha" wiki > $DIR_BKP/wiki_$DATE.sql mysqldump -u wiki_user -p"senha" wiki2 > $DIR_BKP/wiki2_$DATE.sql tar -cvzf $DIR_BKP/wikidir_$DATE.tgz /var/www/wiki* /var/www/mediawiki* # Verifica e remove arquivos antigos. if [ -e $DIR_BKP/wikidir_$DATE_APAGAR.tgz ]; then rm -f $DIR_BKP/wikidir_$DATE_APAGAR.tgz fi if [ -e $DIR_BKP/wiki_$DATE_APAGAR.sql ]; then rm -f $DIR_BKP/wiki_$DATE_APAGAR.sql fi if [ -e $DIR_BKP/wiki2_$DATE_APAGAR.sql ]; then rm -f $DIR_BKP/wiki2_$DATE_APAGAR.sql fi
Upload de outros arquivos
Por padrão, a MediaWiki permite o upload de apenas alguns tipos de arquivos:
array( 'png', 'gif', 'jpg', 'jpeg' );
Modificando uma configuração no arquivo LocalSettings.php podemos adicionar outros tipos:
// Override the default with a bundle of filetypes: $wgFileExtensions = array( 'png', 'gif', 'jpg', 'jpeg', 'jp2', 'webp', 'ppt', 'pdf', 'psd', 'mp3', 'xls', 'xlsx', 'swf', 'doc','docx', 'odt', 'odc', 'odp', 'odg', 'mpp' );
Referências
https://www.mediawiki.org/wiki/Manual:$wgFileExtensions
Configuração SMTP
Primeiro instalamos os pacotes necessários:
- CentOS
yum install php-pear php-PHPMailer pear install mail Net_SMTP Auth_SASL mail_mime systemctl restart httpd
- Debian
apt-get install php-pear php-PHPMailer pear install mail Net_SMTP Auth_SASL mail_mime /etc/init.d/apache2 restart
Todas as configurações devem ser feitas no arquivo LocalSettings.php.
$wgSMTP = array( 'host' => "smtp.dominio.com.br", // could also be an IP address. Where the SMTP server is located 'IDHost' => "dominio.com.br", // Generally this will be the domain name of your website (aka mywiki.org) 'port' => 587, // Port to use when connecting to the SMTP server 'auth' => true, // Should we use SMTP authentication (true or false) 'username' => "[email protected]", // Username to use for SMTP authentication (if being used) 'password' => "****" // Password to use for SMTP authentication (if being used) ); $wgEnableEmail = true; $wgEnableUserEmail = true; # UPO $wgAllowHTMLEmail = true; $wgNoReplyAddress = true; $wgUserEmailUseReplyTo = true; $wgEmailAuthentication = false; $wgEmergencyContact = "[email protected]"; $wgPasswordSender = "[email protected]"; $wgPasswordReminderResendTime = 2; $wgEnotifUserTalk = true; # UPO $wgEnotifWatchlist = true; # UPO #$wgEnotifImpersonal = true; $wgEnotifMaxRecips = 50; $wgEnotifMinorEdits = true; $wgEnotifRevealEditorAddress = true; $wgUseEnotif = true;
Referências
- https://www.mediawiki.org/wiki/Manual:Configuration_settings
- https://www.mediawiki.org/wiki/Extension:Email_notification
- https://snowulf.com/2011/08/30/configuring-mediawiki-to-use-external-smtp/
Extensões
Aproved Revs
Extensão usada para administradores aprovarem as modificações antes de publicá-las.
Algumas características:
- Caso uma página não possua nenhuma revisão aprovada, mostrará sempre a última revisão.
- Caso uma revisão seja aprovada, todas as anteriores são aprovadas também (isso é lógico).
- Os ajustes de permissões com base em grupos do AD, por exemplo, podem ser feitos em LocalSettings.php.
- Os ajustes mais genéricos de permissões podem ser feitos em extenstions/ApprovedRevs/ApprovedRevs.php
$wgGroupPermissions['*']['viewlinktolatest'] = false; $wgGroupPermissions['sysop']['viewlinktolatest'] = true;
Flagged Revs
Extensão mais complexa e flexível para controle de revisões na MediaWiki. É a extensão usada pela Wikipedia.
Upload de formatos diferentes
Para liberar novos formatos de arquivos, adicionar no LocalSettings.php
$wgFileExtensions = array_merge( $wgFileExtensions, array( 'pdf', 'ppt', 'xml', 'rar', 'doc','docx', 'xls', 'xlsx', 'zip' ) );
Troubleshooting
searchindex corrompido
Ao fazer buscas na Wiki, aparece uma mensagem semelhante à essa:
"...searchindex' is marked as crashed and should be repaired (localhost)"
Uma tabela da Wiki está corrompida e precisa ser recriada. A maneira mais rápida de fazer isso é pelo script update.php:
cd /var/www/wiki/maintenance php update.php