Saltar para o conteúdo
EuroVPSEuroVPS

Como resolver problemas comuns do Apache

FAQ da EuroVPS

Atualizado a 4 min de leitura

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
Um engenheiro da EuroVPS a transportar um nó de servidor no piso do datacenter
Uma conversa com as pessoas que vão cuidar da sua infraestrutura.

Comecemos pela sua infraestrutura.

Um pouco de contexto ajuda-nos a começar a conversa certa.

Utilizaremos os seus dados para responder ao seu pedido. Política de privacidade