Servidores Web

Otimizar o Servidor AlmaLinux para Web

Saiba como otimizar o Servidor AlmaLinux desempenho, segurança e confiabilidade, voltado para hospedagem web com técnicas práticas de configuração, tuning de kernel, serviços, armazenamento e segurança.

Ter um servidor AlmaLinux otimizado para web não é apenas sobre velocidade bruta. Trata-se de um equilíbrio entre desempenho, estabilidade e segurança. Neste guia, apresento um conjunto de boas práticas para configurar um servidor AlmaLinux voltado a aplicações web (sites estáticos e dinâmicos, APIs, WordPress, Node.js, etc.). Abordaremos:

  • Arquitetura e planejamento: escolha de kernels, serviços e recursos.
  • Desempenho: configuração de Nginx/Apache, PHP-FPM, caching, tuning de sysctl.
  • Armazenamento e rede: I/O eficiente, RAID, armazenamento em SSD, opções de rede.
  • Segurança: hardening, firewall, fail2ban, TLS, atualizações.
  • Automação e manutenção: backup, monitoramento, atualizações automáticas recomendadas.

Vamos aos passos práticos para deixar seu servidor mais rápido, seguro e estável, pronto para servir conteúdos na web com confiabilidade e escalabilidade.

Suponha que você tem um VPS: 6 vCPU + 12GB RAM + Apache + WHM + PHP 8.3

Não faça nada disso sem antes fazer backup do servidor completo, ou todos os sites instalados no servidor. E também não configura nada se não souber o que está fazendo. Tudo é por sua conta e risco!


1. Otimizar o Servidor AlmaLinux

1.1 Atualizar o Sistema

# Atualizar todos os pacotes
sudo dnf update -y

# Instalar ferramentas essenciais
sudo dnf install -y htop iotop nethogs tuned

1.2 Configurar Perfil de Performance

# Ativar perfil de performance
sudo systemctl enable tuned
sudo systemctl start tuned
sudo tuned-adm profile throughput-performance

# Verificar perfil ativo
sudo tuned-adm active

1.3 Otimizar Parâmetros do Kernel

Edite /etc/sysctl.conf:

sudo nano /etc/sysctl.conf

Adicione estas linhas:

# Otimizações de rede
net.core.rmem_default = 262144
net.core.rmem_max = 16777216
net.core.wmem_default = 262144
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 12582912 16777216
net.ipv4.tcp_wmem = 4096 12582912 16777216
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_congestion_control = bbr

# Otimizações de memória
vm.swappiness = 10
vm.dirty_ratio = 15
vm.dirty_background_ratio = 5
vm.vfs_cache_pressure = 50

# Otimizações de arquivo
fs.file-max = 2097152

Aplicar alterações:

sudo sysctl -p

2. Otimizar o Apache

2.1 Configurar MPM Event (Mais Eficiente)

Edite /etc/httpd/conf.modules.d/00-mpm.conf:

# Descomente esta linha:
LoadModule mpm_event_module modules/mod_mpm_event.so

# Comente estas linhas:
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

2.2 Configurar Parâmetros do MPM Event

Edite /etc/httpd/conf.d/mpm_event.conf (crie se não existir):

<IfModule mpm_event_module>
    StartServers             4
    MinSpareThreads         75
    MaxSpareThreads        250
    ThreadsPerChild         25
    MaxRequestWorkers      400
    MaxConnectionsPerChild   0
    ServerLimit             16
    ThreadLimit             64
</IfModule>

2.3 Otimizar Configuração Principal do Apache

Edite /etc/httpd/conf/httpd.conf:

# Adicione estas diretivas:
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

# Desabilitar módulos desnecessários
# Comente estas linhas se existirem:
#LoadModule autoindex_module modules/mod_autoindex.so
#LoadModule userdir_module modules/mod_userdir.so
#LoadModule status_module modules/mod_status.so

2.4 Habilitar Compressão

Edite /etc/httpd/conf.d/compression.conf (crie o arquivo):

<IfModule mod_deflate.c>
    # Comprimir texto, html, javascript, css, xml
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/xml
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/x-javascript
    
    # Não comprimir imagens
    SetEnvIfNoCase Request_URI \
        \.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI \
        \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
</IfModule>

2.5 Configurar Cache de Arquivos Estáticos

Edite /etc/httpd/conf.d/expires.conf (crie o arquivo):

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType image/jpg "access plus 1 year"
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/gif "access plus 1 year"
    ExpiresByType image/ico "access plus 1 year"
    ExpiresByType image/x-icon "access plus 1 year"
</IfModule>

3. Otimizar o PHP 8.3

3.1 Configurar OPcache

Edite o arquivo de configuração do OPcache (localização pode variar):

sudo nano /etc/php.d/10-opcache.ini

Configure assim:

[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=0
opcache.memory_consumption=512
opcache.interned_strings_buffer=64
opcache.max_accelerated_files=32531
opcache.validate_timestamps=0
opcache.save_comments=1
opcache.fast_shutdown=1
opcache.revalidate_freq=0
opcache.max_file_size=0
opcache.file_cache=/tmp/opcache

3.2 Otimizar php.ini

Edite /etc/php.ini:

# Configurações de memória
memory_limit = 512M
max_execution_time = 300
max_input_time = 300
post_max_size = 64M
upload_max_filesize = 64M

# Otimizações de performance
max_input_vars = 3000
realpath_cache_size = 4096K
realpath_cache_ttl = 600

# Configurações de sessão
session.save_handler = files
session.gc_maxlifetime = 3600
session.gc_probability = 1
session.gc_divisor = 1000

# Desabilitar funções desnecessárias
disable_functions = exec,passthru,shell_exec,system,proc_open,popen

3.3 Configurar PHP-FPM (Se usando)

Se estiver usando PHP-FPM, edite /etc/php-fpm.d/www.conf:

[www]
user = apache
group = apache
listen = /run/php-fpm/www.sock
listen.owner = apache
listen.group = apache
listen.mode = 0660

pm = dynamic
pm.max_children = 50
pm.start_servers = 8
pm.min_spare_servers = 5
pm.max_spare_servers = 15
pm.max_requests = 500

php_admin_value[memory_limit] = 512M

4. Otimizar o Bando de Dados

4.1 MySQL/MariaDB – Edite /etc/my.cnf.d/server.cnf:

[mysqld]
# Configurações básicas
innodb_buffer_pool_size = 8G  # 70% da RAM disponível
innodb_log_file_size = 512M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT

# Cache de consultas
query_cache_type = 1
query_cache_size = 256M
query_cache_limit = 2M

# Conexões
max_connections = 200
connect_timeout = 10
wait_timeout = 300

# Buffers
key_buffer_size = 256M
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M

# Logs
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2

5. Configurar Redis Para Cache

O Redis é um cache de objetos para banco de dados:

5.1 Instalar Redis

sudo dnf install -y redis
sudo systemctl enable redis
sudo systemctl start redis

5.2 Configurar Redis – Edite /etc/redis/redis.conf:

# Configurações de memória
maxmemory 2gb
maxmemory-policy allkeys-lru

# Performance
save 900 1
save 300 10
save 60 10000

# Rede
bind 127.0.0.1
port 6379
timeout 300

# Logs
loglevel notice
logfile /var/log/redis/redis-server.log

6. MONITORAMENTO E FERRAMENTAS

6.1 Instalar Ferramentas de Monitoramento

# Instalar htop, iotop, etc.
sudo dnf install -y htop iotop nethogs glances

# Instalar ferramentas de análise web
sudo dnf install -y curl wget ab siege

6.2 Scripts de Monitoramento

Crie /usr/local/bin/server-status.sh:

#!/bin/bash
echo "=== STATUS DO SERVIDOR ==="
echo "CPU Usage:"
top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4"%"}'

echo -e "\nMemória:"
free -m | awk 'NR==2{printf "%.2f%%\n", $3*100/$2 }'

echo -e "\nApache Status:"
systemctl is-active httpd

echo -e "\nPHP-FPM Status:"
systemctl is-active php-fpm

echo -e "\nMySQL Status:"
systemctl is-active mysqld

echo -e "\nRedis Status:"
systemctl is-active redis
chmod +x /usr/local/bin/server-status.sh

7. CONFIGURAÇÕES DE SEGURANÇA E FIREWALL

7.1 Configurar Firewall

# Configurar firewalld
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload

7.2 Configurar Fail2Ban

# Instalar fail2ban
sudo dnf install -y fail2ban

# Configurar
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

# Editar configurações
sudo nano /etc/fail2ban/jail.local

8. COMANDOS DE REINICIALIZAÇÃO

8.1 Reiniciar Todos os Serviços

#!/bin/bash
# Script para reiniciar todos os serviços

echo "Reiniciando Apache..."
sudo systemctl restart httpd

echo "Reiniciando PHP-FPM..."
sudo systemctl restart php-fpm

echo "Reiniciando MySQL..."
sudo systemctl restart mysqld

echo "Reiniciando Redis..."
sudo systemctl restart redis

echo "Limpando cache do sistema..."
sudo sync; echo 3 > /proc/sys/vm/drop_caches

echo "Todos os serviços reiniciados!"

9. TESTES DE PERFORMANCE

9.1 Comandos para Testar

# Teste de stress do Apache
ab -n 1000 -c 10 http://seu-site.com/

# Teste com Siege
siege -c 20 -t 1M http://seu-site.com/

# Verificar tempo de resposta
curl -o /dev/null -s -w "Time: %{time_total}s\n" http://seu-site.com/

# Monitorar recursos em tempo real
htop

10. MANUTENÇÃO REGULAR

10.1 Script de Limpeza Diária

Crie /usr/local/bin/daily-cleanup.sh:

#!/bin/bash
# Limpeza diária do servidor

# Limpar logs antigos
find /var/log -name "*.log" -mtime +30 -delete

# Limpar cache do OPcache
find /tmp/opcache -type f -mtime +1 -delete

# Otimizar tabelas MySQL
mysqlcheck --optimize --all-databases

# Limpar cache do sistema
sync; echo 1 > /proc/sys/vm/drop_caches

echo "Limpeza concluída em $(date)"

10.2 Agendar no Crontab

# Adicionar ao crontab
0 3 * * * /usr/local/bin/daily-cleanup.sh >> /var/log/cleanup.log 2>&1

RESUMO DAS MELHORIAS ESPERADAS

Após implementar todas essas otimizações, você deve observar:

Redução de 60-80% no tempo de respostaAumento de 3-5x na capacidade de usuários simultâneosMenor uso de CPU e memóriaMelhor pontuação em ferramentas como GTmetrix/PageSpeedMaior estabilidade do servidor

Tempo estimado para implementação completa: 2-3 horas

Artigos relacionados

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Botão Voltar ao topo