Como resolver problemas comuns do Apache
O Apache é um servidor web estável e amplamente utilizado. A maioria dos problemas vem da configuração, de conflitos de portas ou da integração com outros serviços no mesmo host.
Verificar os logs do Apache
Comece pelo log de erros. Localizações habituais:
As localizações habituais do log de erros do Apache são as seguintes, para consulta rápida.
cPanel
/usr/local/apache/logs/error_log
Plesk
/var/log/httpd/error_log
CentOS/Fedora
/var/log/httpd/error_log
Debian/Ubuntu
/var/log/apache2/error_log
tail -f /var/log/httpd/error_log
Problemas comuns do Apache
Conflitos de portas
Confirme que nada mais está à escuta nas portas 80 e 443:
[root@server ~]# netstat -plan | grep :80
tcp 0 0 203.0.113.10:80 0.0.0.0:* LISTEN 18950/nginx
tcp 0 0 203.0.113.10:80 203.0.113.10:52630 TIME_WAIT -
tcp 0 0 203.0.113.10:51704 203.0.113.10:80 TIME_WAIT -
tcp 0 0 203.0.113.10:80 203.0.113.10:52626 TIME_WAIT -
tcp 0 0 203.0.113.10:80 203.0.113.10:51712 TIME_WAIT -
tcp 0 0 203.0.113.10:80 203.0.113.10:52622 TIME_WAIT -
Como se vê, o Nginx já está a usar a porta 80 na interface pública e o Apache não arranca. Termine o Nginx e volte a iniciar o Apache.
Outras instâncias do Apache paradas a reter as portas.
Pode receber erros semelhantes aos de conflito de portas, com origem em processos do Apache iniciados e não terminados que continuam a reter as portas. Com os comandos abaixo verifica se existem processos desse tipo no servidor.
[root@server ~]# ps aux | grep "httpd\|apache" | grep -v grep
root 18663 0.0 0.6 394336 32168 ? SNs 15:25 0:00 /usr/sbin/httpd
apache 18666 0.0 0.3 252844 17436 ? SN 15:25 0:00 /usr/sbin/httpd
apache 18667 0.0 0.5 395040 25532 ? SN 15:25 0:00 /usr/sbin/httpd
apache 18668 0.0 0.5 395440 25592 ? SN 15:25 0:00 /usr/sbin/httpd
apache 18670 0.0 0.5 395032 25716 ? SN 15:25 0:00 /usr/sbin/httpd
apache 18671 0.0 0.5 394984 25676 ? SN 15:25 0:00 /usr/sbin/httpd
apache 18672 0.0 0.5 394944 25640 ? SN 15:25 0:00 /usr/sbin/httpd
apache 18673 0.0 0.5 395000 25468 ? SN 15:25 0:00 /usr/sbin/httpd
apache 18674 0.0 0.4 394912 25384 ? SN 15:25 0:00 /usr/sbin/httpd
apache 18675 0.0 0.5 395076 25780 ? SN 15:25 0:00 /usr/sbin/httpd
apache 18676 0.0 0.5 394940 25636 ? SN 15:25 0:00 /usr/sbin/httpd
apache 18677 0.0 0.4 394892 25280 ? SN 15:25 0:00 /usr/sbin/httpd
Termine todos os processos do Apache encontrados com o comando kill, como abaixo.
[root@server ~]# kill -9 18666 18663 18667 18668 18670 18671 18672 18673 18674 18675 18676 18677
Erros de sintaxe no ficheiro httpd.conf
Um erro de sintaxe no httpd.conf impede o Apache de arrancar. O erro indica a linha:
Syntax error on line 218 of /etc/httpd/conf/httpd.conf
Verifique a sintaxe antes de reiniciar:
[root@server ~]# apachectl -t
Syntax OK
[root@server ~]# httpd -t
Syntax OK
Em Debian e Ubuntu, a verificação de sintaxe faz-se assim.
apache2ctl -t
Similarly you cause the command with -S switch to list all virtual hosts with essential information like configured ports, defined line number in configuration etc.
Do mesmo modo, com a opção -S lista todos os virtual hosts com a informação essencial, como as portas configuradas e a linha da configuração em que estão definidos.
[root@server ~]# httpd -S
VirtualHost configuration:
127.0.0.1:7080 is a NameVirtualHost
O Apache não arranca se o ficheiro .htaccess não estiver corretamente criado.
Para que os ficheiros .htaccess sejam tidos em conta, os virtual hosts do Apache têm de ter as definições adequadas. Se essas diretivas faltarem, o ficheiro .htaccess não é considerado e as suas definições não são carregadas. Abaixo, uma definição de exemplo.
</VirtualHost>
<Directory /home/eurovps/public_html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Feito isto, um ficheiro .htaccess criado em /home/eurovps/public_html/ passa a ser considerado pelo Apache. O ficheiro precisa do modo 644 e do utilizador do domínio como dono:
Exemplo de criação do ficheiro .htaccess e das respetivas permissões.
vi /home/eurovps/public_html/.htaccess
#++++Sample_contents++++#
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
#++++Sample_contents++++#
Esc + :wq
chmod 644 /home/eurovps/public_html/.htaccess
chown eurovps.eurovps /home/eurovps/public_html/.htaccess
Dicas: experimente ativar logs detalhados para depuração (LogLevel debug). Verifique o syslog e o dmesg em busca de indícios de terminação de processos, e verifique a memória livre e o espaço em disco disponível no servidor.
Das FAQ da EuroVPS.
Mais na categoria «Guias»O seu próximo parceiro de infraestrutura
Ainda tem
uma pergunta?
Diga-nos o que está a tentar fazer. Um engenheiro vai ler e responder.
+357 222 32280
Comecemos pela sua infraestrutura.
Um pouco de contexto ajuda-nos a começar a conversa certa.
