Instalar MediaWiki com Nginx no CentOS 7

TL;DR
Este guia passo a passo mostra como instalar o MediaWiki 1.30 em um servidor CentOS 7 usando Nginx, PHP-FPM e MariaDB, e como proteger o site com certificados Letsencrypt. Inclui comandos, dicas de permissões, resolução de problemas comuns, renovação de SSL e recomendações de segurança.
O que faremos
- Instalar o Nginx no CentOS 7
- Instalar e configurar PHP-FPM
- Instalar e configurar MariaDB
- Baixar e preparar o MediaWiki
- Gerar certificado SSL Letsencrypt
- Configurar o virtual host do Nginx para MediaWiki
- Instalar o MediaWiki via navegador
- Instalar e ativar a skin padrão
Pré-requisitos
- Um servidor CentOS 7 com acesso root ou sudo
- Conectividade à internet para instalar pacotes e baixar dependências
- Um domínio DNS apontando para o servidor (exemplo usado: wiki.hakase-labs.co)
Visão geral técnica curta
MediaWiki é um software wiki open source escrito em PHP. Para operar com desempenho e segurança, recomendamos rodar MediaWiki atrás de Nginx + PHP-FPM, com banco MariaDB e HTTPS válido. Este tutorial foca em compatibilidade com CentOS 7 e PHP 7.0 conforme o ambiente original.
Etapas detalhadas
1. Instalar Nginx no CentOS 7
O Nginx não está no repositório base do CentOS 7 por padrão, por isso usamos o EPEL. Atualize o sistema e instale o epel-release
yum -y update
yum -y install epel-release
Instale o Nginx
yum -y install nginx
Inicie e habilite o serviço
systemctl start nginx
systemctl enable nginx
Verifique conexões de rede e portas usadas
netstat -plntu
Observações importantes
- Se o comando netstat não existir, instale net-tools com yum -y install net-tools
- Confirme que as portas 80 e 443 não estão bloqueadas por firewall ou por outro serviço
2. Instalar e configurar PHP-FPM
Usaremos PHP 7.0 a partir do repositório webtatic, conforme o ambiente original. Adicione o repositório
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
Instale PHP 7.0 e extensões necessárias
yum -y install ImageMagick php70w-fpm php70w-intl php70w-xml php70w-curl php70w-gd php70w-mbstring php70w-mysql php70w-cli php70w-pear php70w-pecl-apcu
Configurações essenciais
- Edite /etc/php.ini e descomente/ajuste
vim /etc/php.ini
Dentro do arquivo, defina
cgi.fix_pathinfo=0
- Configure o pool www do PHP-FPM para usar o usuário nginx e socket
vim /etc/php-fpm.d/www.conf
Altere as linhas relevantes
user = nginx
group = nginx
listen = /run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Descomente também as variáveis de ambiente para o processo
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
Crie diretório de sessões e ajuste permissões
mkdir -p /var/lib/php/session/
chown -R nginx:nginx /var/lib/php/session/
Inicie e habilite php-fpm
systemctl start php-fpm
systemctl enable php-fpm
Verifique o socket e processo
netstat -pl | grep php
Notas de compatibilidade
- Se usar uma versão mais recente do PHP, os pacotes e nomes de módulo podem mudar. Teste em um ambiente de staging antes de atualizar produção.
- Se preferir usar repositórios oficial do Remi em vez do webtatic, adapte os nomes dos pacotes conforme necessário.
3. Instalar e configurar MariaDB
MediaWiki funciona com MySQL/MariaDB ou SQLite. Para produção, recomendamos MariaDB/MySQL.
Instale MariaDB
yum -y install mariadb mariadb-server
Inicie e habilite
systemctl start mariadb
systemctl enable mariadb
Execute a rotina de segurança
mysql_secure_installation
Responda conforme política desejada; normalmente aceita-se ‘Y’ para remover anônimos, remover banco de testes e recarregar privilégios.
Criar banco e usuário para MediaWiki
mysql -u root -p
# dentro do prompt mysql:
create database mediawikidb;
grant all privileges on mediawikidb.* to mediawiki@'localhost' identified by 'mypassword';
flush privileges;
exit;
Boas práticas para banco de dados
- Use senhas fortes e diferentes para cada serviço
- Em produção, limite conexões remotas ao host do aplicativo
- Faça backups regulares com mysqldump ou ferramentas de réplica
Exemplo rápido de backup
mysqldump -u root -p mediawikidb > /root/backups/mediawikidb-$(date +%F).sql
4. Baixar e configurar MediaWiki
Instale git, composer e ferramentas de zip
yum -y install git zip unzip composer
Clone o repositório do core do MediaWiki para /var/www/mediawiki
mkdir -p /var/www/mediawiki
git clone https://gerrit.wikimedia.org/r/p/mediawiki/core.git /var/www/mediawiki
Instale dependências PHP com composer
cd /var/www/mediawiki
composer install --no-dev
Ajuste permissões
chown -R nginx:nginx /var/www/mediawiki
Notas sobre permissões
- O usuário do processo web (nginx neste guia) precisa ter acesso de leitura no código e permissão de escrita em diretórios que o MediaWiki usa para upload e cache.
- Em algumas distribuições, o usuário web é www-data; neste guia usamos nginx. Ajuste conforme sua distro.
5. Gerar SSL Letsencrypt no CentOS 7
MediaWiki deve rodar em HTTPS. Usaremos um certificado gratuito Letsencrypt.
Instale o cliente letsencrypt (pacote antigo) ou certbot se preferir. No guia original foi usado letsencrypt:
yum -y install letsencrypt
Antes de rodar, pare o Nginx se for usar o modo standalone
systemctl stop nginx
Abra as portas no firewalld
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
Gerar certificado
letsencrypt certonly
Escolha a opção para rodar um servidor temporário (standalone), informe um e-mail para notificações e digite seu domínio, por exemplo wiki.hakase-labs.co
Resultado esperado: certificados salvos em /etc/letsencrypt/live/seu-dominio
Renovação automática
- Letsencrypt gera certificados com validade curta. Configure um cron ou systemd timer para renovar automaticamente.
- Com o cliente letsencrypt/certbot, o comando de renovação é
letsencrypt renew --quiet
ou
certbot renew --quiet
Adicione um cron diário, por exemplo em /etc/cron.d/cert_renew com execução como root
0 3 * * * root certbot renew --quiet && systemctl reload nginx
Importante
- Se usar o modo webroot em vez do standalone, você pode gerar certificados sem parar o Nginx. Exemplo: certbot certonly –webroot -w /var/www/html -d seu-dominio
6. Configurar virtual host Nginx para MediaWiki
Crie um arquivo de configuração em /etc/nginx/conf.d/mediawiki.conf
cd /etc/nginx/
vim conf.d/mediawiki.conf
Cole a configuração abaixo e ajuste server_name e caminhos de certificado para seu domínio
# HTTP Request will be Redirected to the HTTPS
server {
listen 80;
listen [::]:80;
server_name wiki.hakase-labs.co;
return 301 https://$host$request_uri;
}
# HTTPS Configuration
server {
listen 443 ssl;
listen [::]:443;
server_name wiki.hakase-labs.co;
root /var/www/mediawiki;
index index.php;
autoindex off;
# SSL Certificate Configuration
ssl_certificate /etc/letsencrypt/live/wiki.hakase-labs.co/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/wiki.hakase-labs.co/privkey.pem;
client_max_body_size 5m;
client_body_timeout 60;
location / {
try_files $uri $uri/ @rewrite;
}
location @rewrite {
rewrite ^/(.*)$ /index.php?title=$1&$args;
}
location ^~ /maintenance/ {
return 403;
}
# PHP-FPM Configuration Nginx
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
try_files $uri /index.php;
expires max;
log_not_found off;
}
location = /_.gif {
expires max;
empty_gif;
}
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;
}
}
Teste a configuração e reinicie o Nginx
nginx -t
systemctl restart nginx
Explicações rápidas
- O bloco server em porta 80 só redireciona para HTTPS
- fastcgi_pass usa socket Unix para performance; se preferir TCP, use 127.0.0.1:9000 e ajuste php-fpm
- As diretivas internal e deny ajudam a proteger diretórios sensíveis
7. Instalação via web do MediaWiki
Abra no navegador
- http://wiki.hakase-labs.co/ (será redirecionado para HTTPS)
Clique em ‘Set up the wiki’ ou equivalente na interface em português, e siga os formulários.
Passos comuns no instalador
- Selecionar idioma
- Verificação de ambiente - garanta que todas as checagens passem
- Configurar banco de dados — preencha mediawikidb, usuário mediawiki, e senha
- Criar usuário administrador e demais ajustes
- Ao final, faça o download do arquivo LocalSettings.php
Upload do LocalSettings.php
- Transfira LocalSettings.php para /var/www/mediawiki no servidor
scp LocalSettings.php [email protected]:/var/www/mediawiki/
- Ajuste permissões garantindo que nginx seja dono do arquivo
chown -R nginx:nginx /var/www/mediawiki
Observação de correção
- Se o instalador sugerir chown para www-data, ajuste para o usuário correto do seu servidor. Neste guia usamos nginx.
Depois de subir o arquivo, clique em ‘enter your wiki’ e verifique se o site responde
8. Instalar e ativar a skin Vector padrão
Clone a skin Vector no diretório skins
cd /var/www/mediawiki/skins/
sudo git clone https://gerrit.wikimedia.org/r/mediawiki/skins/Vector
Ajuste proprietários
chown -R nginx:nginx /var/www/mediawiki/skins/
Ative a skin em LocalSettings.php adicionando no final
wfLoadSkin( 'Vector' );
Atualize o navegador para ver o novo tema
Melhores práticas e segurança
- Forneça apenas os módulos PHP estritamente necessários
- Use HTTPS sempre e renove certificados automaticamente
- Configure firewall e limite acessos SSH por IP e chave
- Desabilite a criação anônima de contas se não forem necessárias
- Faça backups periódicos do banco e do diretório de imagens
Considerações sobre SELinux
Se o SELinux estiver ativo no CentOS 7, você precisará garantir o contexto correto nos diretórios web. Exemplos de comandos úteis:
# aplicar contexto para permitir escrita por httpd
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/mediawiki(/.*)?'
restorecon -Rv /var/www/mediawiki
Se os comandos semanage não estiverem disponíveis, instale policycoreutils-python com yum -y install policycoreutils-python
Resolução de problemas comum
- 502 Bad Gateway após configurar php-fpm: verifique se php-fpm está rodando e se fastcgi_pass aponta para o socket correto (/run/php-fpm/php-fpm.sock) ou para o endereço TCP correto
- Permissão negada em uploads: confirme dono e permissões em /var/www/mediawiki/images e outros diretórios de armazenamento
- Erro de certificado: confirme paths em nginx para fullchain.pem e privkey.pem e que os arquivos existem em /etc/letsencrypt/live/seu-dominio
Diagnóstico rápido
systemctl status php-fpm nginx mariadb
tail -n 200 /var/log/nginx/error.log
tail -n 200 /var/log/php-fpm/www-error.log
Testes e critérios de aceitação
- Página principal do MediaWiki carrega via HTTPS sem erros de certificado
- Login do admin funciona e criação de página funciona
- Upload de imagem funciona (testar com uma imagem pequena)
- As páginas estáticas (css/js) são servidas sem 404
- Monitorar logs por 24 horas para identificar erros 5xx
Checklist por função
Administrador de sistema
- Repositórios necessários instalados (EPEL, webtatic ou similares)
- Serviços nginx, php-fpm, mariadb rodando e habilitados
- Certificado Letsencrypt válido e renovação configurada
- Firewall configurado para 80/443
Administrador do Wiki
- Conta admin criada e testada
- LocalSettings.php testado em /var/www/mediawiki
- Backup inicial do banco e arquivos realizado
Desenvolvedor
- Composer instalado e dependências aplicadas
- Extensões testadas em ambiente de staging
Como migrar para outra versão ou servidor (mini metodologia)
- Teste atualização do MediaWiki em um ambiente de staging com cópia do banco e arquivos
- Verifique compatibilidade de extensões e temas
- Faça backups completos antes de qualquer migração
- Sincronize uploads e arquivos de configuração
- Planeje janela de manutenção para a troca em produção
Tabela de verificação rápida (SOP) antes de colocar em produção
- certificado HTTPS válido e renovação automática configurada
- firewall e SELinux ajustados conforme política
- permissões e dono dos diretórios web configurados para nginx
- backup do banco efetuado e teste de restauração validado
Considerações de privacidade
- Se armazenar dados pessoais, garanta políticas de retenção e proteção conforme legislação aplicável
- Proteja endpoints administrativos com autenticação forte e, se possível, com 2FA
Notas finais
A instalação do MediaWiki em CentOS 7 com Nginx e PHP-FPM é estável e adequada para ambientes internos e externos. Planeje atualizações do PHP e do próprio MediaWiki em ciclos regulares e teste extensões antes de aplicar em produção.
Resumo
- Instale e configure Nginx, PHP-FPM e MariaDB
- Baixe o MediaWiki e instale dependências via composer
- Gere certificados Letsencrypt e configure Nginx para HTTPS
- Faça a instalação via web, suba LocalSettings.php e ajuste permissões
Referência
Materiais semelhantes

Baixar e usar YouTube TV na Índia

Ativar módulos de protocolo e clientes WiKID
Corrigir travamento do driver de vídeo no Windows

Instalar Apache Cassandra no CentOS 8

Ethernet mais lento que o Wi‑Fi? Causas e soluções
