Versão avaliada: Debian 9.3 Stretch
O Mediawiki é um bom repositório para ser utilizado como para base de conhecimento.
Instalar o Webserver
# apt-get update
# apt-get install nginx-extras -> Existem os pacotes nginx-full ou nginx-light para instalação
Instalando o php7
# apt-get install php7.0 php7.0-fpm php7.0-gd php7.0-mysql php7.0-intl php7.0-mbstring php7.0-xml php7.0-curl php7.0-ldap php7.0-mcrypt php7.0-json php7.0-readline php7.0-cli php7.0-common php-apcu git php-pecl-http composer zip unzip
Ajustar a configuração inicial do NGINX para executar php
# vi /etc/nginx/sites-available/mediawiki.conf
server {
listen 80;
listen [::]:80;
charset utf-8;
access_log /var/log/nginx/mediawiki.access.log;
error_log /var/log/nginx/mediawiki.error.log;
server_name wiki.expoente.com.br;
root /home/RepositorioWeb/webapps/mediawiki;
index index.php;
autoindex off;
client_max_body_size 5m;
client_body_timeout 60;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
include snippets/fastcgi-php.conf;
}
location / {
try_files $uri $uri/ @rewrite;
}
location @rewrite {
rewrite ^/(.*)$ /index.php?title=$1&$args;
}
location ^~ /maintenance/ {
return 403;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico|xml)$ {
try_files $uri /index.php;
expires max;
access_log off;
log_not_found off;
}
location = /_.gif {
expires max;
empty_gif;
}
location ^~ /cache/ {
deny all;
}
location /dumps {
root /home/RepositorioWeb/webapps/mediawiki/local;
autoindex on;
}
location ^~ ^/(cache|includes|maintenance|languages|serialized|tests|images/deleted)/ {
deny all;
}
location ^~ ^/(bin|docs|extensions|includes|maintenance|mw-config|resources|serialized|tests)/ {
internal;
}
# Security for 'image' directory
location ~* ^/images/.*.(html|htm|shtml|php)$ {
types { }
default_type text/plain;
}
# Security for 'image' directory
location ^~ /images/ {
try_files $uri /index.php;
}
location ~ /\. {
access_log off;
log_not_found off;
deny all;
}
}
Configurar o php.ini
# vi /etc/php/7.0/fpm/php.ini
upload_max_filesize = 20M
memory_limit = 128M
Criar link para o site
# ln -s /etc/nginx/sites-available/mediawiki.conf /etc/nginx/sites-enabled/mediawiki
Reiniciado o serviço nginx e php
# nginx -t
# /etc/init.d/nginx restart
# /etc/init.d/php7.0-fpm restart
Nota: Para não gerar problemas pós instalação, é bem interessante realizar o processo de instalação utilizando a URL correta.
Baixar o pacote estável do MediaWiki.
Criar o diretório de armazenamento
# mkdir /home/RepositorioWeb/webapps/mediawiki
Descompactar o arquivo do MediaWiki e disponibilizar no diretório criado anteriormente
Após descompactar execute o comando composer para complementar as dependências
# cd /home/RepositorioWeb/webapps/mediawiki
# composer install --no-dev
Acesse no browser e inicie o processo de configuração:
http://wiki.dominio.com.br
Baixar o arquivo LocalSettings.php e disponibilizar ele no diretório raiz do Mediawiki
Ajustar a permissão do arquivo LocalSettings.php
# chmod 600 LocalSettings.php
Acesse o site novamente e estará pronta para uso.
Alterar somente o necessário no arquivo LocalSettings.php, adicionando no final do arquivo as configurações abaixo:
####################################################################
## If you want to use image uploads under safe mode,
## create the directories images/archive, images/thumb and
## images/temp, and make them all writable. Then uncomment
## this, if it's not already uncommented:
#$wgHashedUploadDirectory = false;
$wgHashedUploadDirectory = true;
#ARQUIVOS
$wgResourceLoaderMaxQueryLength = -1;
$wgFileExtensions = array('png','jpg','jpeg','pdf','zip','rar','odt');
$wgLoadFileinfoExtension = true;
$wgMimeDetectorCommand = "file -bi";
# Permissao
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['read'] = false;
#$wgGroupPermissions['*']['createaccount'] = false;
$wgGroupPermissions['*']['autocreateaccount'] = true;
# Image
$wgUseImageResize = true;
# Short url
$wgArticlePath = "/w/$1";
$wgUsePathInfo = true;
# Favicon
$wgFavicon = "{$wgScriptPath}/images/favicon.ico";
require_once "$IP/extensions/WikiEditor/WikiEditor.hooks.php";
# Enables use of WikiEditor by default but still allows users to disable it in preferences
$wgDefaultUserOptions['usebetatoolbar'] = 1;
# Enables link and table wizards by default but still allows users to disable them in preferences
$wgDefaultUserOptions['usebetatoolbar-cgd'] = 1;
# Displays the Preview and Changes tabs
$wgDefaultUserOptions['wikieditor-preview'] = 1;
# Displays the Publish and Cancel buttons on the top right side
$wgDefaultUserOptions['wikieditor-publish'] = 1;
# Enable LDAP Authentication - ACTIVE DIRECTORY
require_once( "$IP/extensions/LdapAuthentication/LdapAuthentication.php" );
$wgAuth = new LdapAuthenticationPlugin();
$wgLDAPDomainNames = array(
'dominio.com.br'
);
$wgLDAPServerNames = array(
'dominio.com.br' => 'LDAP01.dominio.com.br LDAP02.dominio.com.br'
);
$wgLDAPUseLocal = false;
$wgLDAPEncryptionType = array(
'dominio.com.br' => 'clear',
);
$wgLDAPSearchStrings = array(
'dominio.com.br' => "DOMINIO\\USER-NAME"
#'dominio.com.br' => "USER-NAME@dominio.com.br"
);
$wgLDAPSearchAttributes = array(
'dominio.com.br' => 'sAMAccountName'
);
$wgLDAPBaseDNs = array(
'dominio.com.br' => 'dc=dominio,dc=com,dc=br'
);
// Default: 0 / 1 / 2 / 3
$wgLDAPDebug = 0;
$wgDebugLogGroups['ldap'] = '/home/RepositorioWeb/webapps/mediawiki/log/ldap-mediawiki.log';
# FILTER GROUP ACTIVE DIRECTORY
$wgLDAPGroupUseFullDN = array(
'dominio.com.br' => true
);
$wgLDAPGroupObjectclass = array(
'dominio.com.br' => 'group'
);
$wgLDAPGroupAttribute = array(
'dominio.com.br' => 'member'
);
$wgLDAPGroupNameAttribute = array(
'dominio.com.br' => 'cn'
);
$wgLDAPLocallyManagedGroups = array(
'dominio.com.br' => array( 'GG_SuporteTecnico' )
);
$wgLDAPRequiredGroups = array(
'dominio.com.br' => array(
'cn=GG_UserWiki,ou=Groups,dc=dominio,dc=com,dc=br'
)
);
Acesse o site e baixe o projeto LDAP Autentication no diretorio extensions
# cd /www/mediawiki/extensions
# git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/LdapAuthentication.git
Criar no LDAP/AD o grupo GG_UserWiki e adicionar os membros
Para validar a verão dos pacotes instalados acesse http://wiki.dominio.com.br/w/Special:Version
Baixar novo pacote de descompacte
# wget https://releases.wikimedia.org/mediawiki/1.32/mediawiki-1.32.0.tar.gz
# tar -xvzf mediawiki-1.32.0.tar.gz
Renomeie o diretorio do mediawiki velho para mediawiki.OLD e disponibilize o novo mediawiki
# mv mediawiki/ mediawiki.OLD
# mv /home/suporte/mediawiki /path/www
Executar o composer (ira alertar sobre nao usar o comando como root, pode ignorar)
# cd /path/www/mediawiki
# composer install --no-dev
Copiar o diretorio imagens
# cp -a mediawiki.OLD/images/* mediawiki/images/
# cp -a mediawiki.OLD/extensions/LdapAuthentication/ mediawiki/extensions
Atualizar extensões
# cd mediawiki/extensions/LdapAuthentication
# git fetch --all
# git reset --hard origin/master
# git pull
Executar o configurador web http://wiki.dominio.com.br para atualizar as tabelas de base de dados
Escolha a linguagem que melhor preferrir ou pode manter a inglesa como deault, após clique em Continuar
Verifique se não existe nenhuma pendencia para execução do mediawiki, após clique em '''Continuar'''
Insira os dados de conexao com o banco de dados, após clique em '''Continuar'''
Clique em '''Continuar'''
Clique em começar a usar a sua wiki
Copiar o antigo LocalSettings.php no novo diretório mediawiki.
# cp -a mediawiki.OLD/LocalSettings.php mediawiki
Executar o site http://wiki.dominio.com.br
Acompanhar o log de erro para corrigir caso tenha algum
# tail -f /var/log/nginx/mediawiki.error.log
Para a versao 1.32 foi necessario ajustar os paremetros abaixo
# Enable skins
#wfLoadSkin( 'CologneBlue' );
#wfLoadSkin( 'Modern' );
wfLoadSkin ( 'MonoBook' );
wfLoadSkin ( 'Timeless' );
wfLoadSkin ( 'Vector' );
#require_once "$IP/extensions/WikiEditor/WikiEditor.hooks.php";
Configurar a database
# mysql -u root -p
]> create database mediawiki character set utf8;
]> grant all privileges on mediawiki.* to mediawiki@'%' identified by '<SENHA>';
]> flush privileges;
]> exit
Inicializar o container
$ vi mediawiki.sh
#!/bin/sh
docker stop mediawiki && \
docker rm mediawiki &&\
docker rmi mediawiki:stable
# Se for atualização comentar a linha abaixo
docker volume create mediawiki
docker run --name mediawiki \
-e PHP_TZ='America/Sao_Paulo' \
-p 8081:80 \
-v mediawiki:/var/www/html \
--restart unless-stopped \
-d mediawiki:stable
$ chmod 755 mediawiki.sh
$ ./mediawiki.sh
$ su -
# cd /var/lib/docker/volumes/mediawiki/_data/extensions
# git clone https://github.com/wikimedia/mediawiki-extensions-LDAPAuthentication2 LDAPAuthentication2 && git clone https://github.com/wikimedia/mediawiki-extensions-LDAPProvider LDAPProvider && git clone https://github.com/wikimedia/mediawiki-extensions-PluggableAuth PluggableAuth && git clone https://github.com/wikimedia/mediawiki-extensions-LDAPUserInfo LDAPUserInfo
# git clone https://github.com/wikimedia/mediawiki-extensions-LDAPAuthorization LDAPAuthorization && git clone https://github.com/wikimedia/mediawiki-extensions-LDAPGroups LDAPGroups && git clone https://github.com/wikimedia/mediawiki-extensions-Auth_remoteuser Auth_remoteuser
# chown www-data.www-data -R LDAP* Auth_remoteuser/ PluggableAuth/
FROM owncloud:latest
RUN \
apt-get update && \
apt-get install libldap2-dev -y && \
docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \
docker-php-ext-install ldap
# docker-php-ext-enable ldap
$wgLDAPDebug = 3; //for debugging LDAP
$wgDebugLogGroups['LDAPAuthentication2'] = '/tmp/LDAPAuthentication2.log';
$wgLdapAuthUseLocal = true;
$wgLdapAuthDomainNames = ['xxx.dom'] ;
$LDAPProviderDomainConfigProvider = function() {
$config = [
'xxx.dom' => [
'connection' => [
"server" => "10.76.x.x",
"user" => "CN=xxx,OU=Systembenutzer,DC=xxx,DC=DOM",
"pass" => 'xxxxxxxxx',
"options" => [
"LDAP_OPT_DEREF" => 1
],
"basedn" => "dc=xxx,dc=DOM",
"enctype" => "clear",
"port" => "389",
"groupbasedn" => "OU=Gruppen,DC=xxx,DC=DOM",
"userbasedn" => "ou=xxx,dc=xxx,dc=DOM",
"searchattribute" => "sAMAccountName",
"searchstring" => "",
"usernameattribute" => "sAMAccountName",
"realnameattribute" => "displayName",
"emailattribute" => "mail",
//"grouprequest" => "MediaWiki\\Extension\\LDAPProvider\\UserGroupsRequest\\GroupMember::factory"
],
'authorization' => [
'rules' => [
'groups' => [
'required' => [
"CN=xxx,OU=VL-Statisch,OU=Microsoft Exchange x,DC=LWKN,DC=DOM",
"CN=SCCM-RemoteViewer,OU=SCCM,OU=Gruppen,DC=xxx,DC=DOM"
]
]
]
]
]
];
return new \MediaWiki\Extension\LDAPProvider\DomainConfigProvider\InlinePHPArray( $config );
};
* Execute o comando abaixo
# cd /www/mediawiki
# vi LocalSettings.php
$wgReadOnly = 'Upgrading to MediaWiki 1.28.0';
# php maintenance/update.php
# apt-get install wget
# wget https://getcomposer.org/composer.phar
# mv composer.phar /usr/local/bin/composer
# chmod 755 /usr/local/bin/composer
# composer update
# composer install --no-dev
# php maintenance/update.php
jakub-onderka/php-parallel-lint suggests installing jakub-onderka/php-console-highlighter (Highlight syntax in code snippet)
symfony/yaml suggests installing symfony/console (For validating YAML files using the lint command)
sebastian/global-state suggests installing ext-uopz (*)
phpunit/php-code-coverage suggests installing ext-xdebug (>=2.2.1)
phpunit/phpunit suggests installing phpunit/php-invoker (~1.1)
* Caso utilizado o git para baixar os pacotes, siga os passos.
# cd /www/mediawiki
# git pull
git fetch --all
git reset --hard origin/master
git clean -i
1: clean
git pull
# composer self-update
# composer update
# php maintenance/update.php
* Todo o projeto pode ser baixado do repositório Git, no site segue todas as instruções.