O Apache não consegue recarregar… Existe um log que eu possa procurar por detalhes?

10

Eu tenho um servidor na qual estou trabalhando para adicionar um site.

Depois de executar a2ensite , executei service apache2 reload e obtive isso:

[FAIL] Reloading web server config: apache2 failed!

Existe um arquivo de log que eu possa procurar mais detalhes?

    
por Questionmark 16.03.2014 / 23:48

3 respostas

9

Você pode ver onde httpd está configurado para procurar seus arquivos de configuração usando a opção -V :

$ httpd -V
Server version: Apache/2.2.15 (Unix)
Server built:   Feb 13 2012 22:31:42
Server's Module Magic Number: 20051115:24
Server loaded:  APR 1.3.9, APR-Util 1.3.9
Compiled using: APR 1.3.9, APR-Util 1.3.9
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/etc/httpd"
 -D SUEXEC_BIN="/usr/sbin/suexec"
 -D DEFAULT_PIDLOG="run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="logs/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

Você também pode usar o comando lsof para ver quais arquivos um processo Unix está acessando. Minha versão do httpd está usando a porta de estoque 80, então mude o 80 para o 8443 no seu caso!

$ netstat -tapn|grep ::80
tcp        0      0 :::80                       :::*                        LISTEN      5338/httpd     

Agora você pode executar lsof para descobrir onde os arquivos de log estão sendo gravados:

$ lsof -p 5338|grep log
httpd   5338 root  mem    REG  253,0    10440   3141 /usr/lib64/httpd/modules/mod_logio.so
httpd   5338 root  mem    REG  253,0    27200   3139 /usr/lib64/httpd/modules/mod_log_config.so
httpd   5338 root    2w   REG  253,0     2014 395029 /var/log/httpd/error_log
httpd   5338 root    7w   REG  253,0     4140 394789 /var/log/httpd/access_log

Você deve ser capaz de determinar a localização do access_log , bem como os arquivos de configuração, e verificar através deles para determinar as diretivas "Directory" e "Location". Eles especificam quais diretórios locais devem ser usados ao informar ao Apache quais arquivos devem ser exibidos.

Agora o que?

Eu procuraria pelo access_log para ter certeza de que existem entradas que correspondem aos acessos ao servidor. O que quero dizer com isso é que, se eu navegar no servidor em http://www.somedom.com/somefile , eu verei esse acesso registrado no arquivo access_log da seguinte forma:

192.168.1.110 - - [17/Jul/2013:14:39:50 -0400] "GET /somefile HTTP/1.1" 200 4303 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/5
37.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"

Onde estão os arquivos?

Você pode ter o conhecimento acima que adquirimos e começar a aplicá-lo da seguinte forma:

Esses bits de httpd -V nos dizem a raiz do Apache:

-D HTTPD_ROOT="/etc/httpd"
-D SERVER_CONFIG_FILE="conf/httpd.conf"

Então sabemos que o arquivo de configuração principal está aqui: /etc/httpd/conf/httpd.conf . Então olhe através desse arquivo para estas linhas:

$ grep -E "DocumentRoot|Directory \"|^Include" /etc/httpd/conf/httpd.conf |grep -v "^#"
Include conf.d/*.conf
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
<Directory "/var/www/icons">
<Directory "/var/www/cgi-bin">
    <Directory "/var/www/error">

Então, agora sei que esses diretórios são fontes potenciais para o arquivo que vimos no access_log . O DocumentRoot e Directories que eu procuraria pelo arquivo, somefile . Se não estiver em nenhum desses locais, em seguida, eu me concentrarei no diretório Include mencionado acima na grep output, /etc/httpd/conf.d/*.conf .

Esses arquivos são configurações adicionais que o Apache usa, então você precisa repetir as etapas usando o grep para examinar esses arquivos também.

    
por 17.03.2014 / 00:00
12

Se você não encontrar o arquivo de log ou o arquivo de log estiver vazio, você pode executar o teste de configuração do apache que imprimirá qualquer problema com os arquivos de configuração:

apachectl configtest
    
por 06.03.2015 / 17:06
2

Execute service apache2 restart . Ele exibirá qualquer mensagem de erro (geralmente o serviço executa um teste de configuração antes de interromper e iniciar o apache)

    
por 27.12.2014 / 05:03