Come eseguire il debug di una configurazione host virtuale apache?


138

Ancora una volta, ho un problema con la configurazione dell'host virtuale di Apache. (Viene utilizzata la configurazione predefinita anziché la mia specifica).

Il problema non è proprio la configurazione errata ma come risolverlo.

Qualcuno ha buoni consigli per risolvere rapidamente questo tipo di problema?

Qualche informazione in più.

Il file conf predefinito è questo:

NameVirtualHost *
<VirtualHost *>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
        ServerSignature On

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

E la configurazione dell'host virtuale che non si applica è questa:

<VirtualHost *:*>

ProxyPreserveHost On
ProxyPass / http://ip.ip.ip.ip:8088/
ProxyPassReverse / http://ip.ip.ip.ip:8088/
ServerName wiki.mydomain.com

</VirtualHost>

Risposte:


198

Controllo della sintassi

Per verificare la presenza di errori di sintassi nei file di configurazione:

# Red Hat-based (Fedora, CentOS) and OSX
httpd -t

# Debian-based (Ubuntu)
apache2ctl -t

# MacOS
apachectl -t

Elenca host virtuali

Per elencare tutti gli host virtuali e le loro posizioni:

# Red Hat-based (Fedora, CentOS) and OSX
httpd -S

# Debian-based (Ubuntu)
apache2ctl -S

# MacOS
apachectl -S

5
-Sè sinonimo di -t -D DUMP_VHOSTSquindi quei due sono gli stessi
aron.duby

2
Per Windows, (se stai usando xampp), hai questi stessi comandi su: \ xampp \ apache \ bin
Jahmic,

Per Wamp:c:\\wamp\\bin\\apache\\apache2.4.9\\bin\\httpd.exe -S
Lg102,

2
È molto utile, grazie ma non è abbastanza, ho avuto qualche problema con un vhost che dovrebbe essere usato e non lo è, non so perché, desidero ottenere i log su come apache sceglie il vhost.
Loenix,

1
Esiste un modo per fare in modo che Apache aggiunga un messaggio al file degli errori o altrove quando arriva un accesso effettivo per un host virtuale o principale che fornisce informazioni dinamiche su quale host è stato scelto? Ho provato LoadModule log_debug_module modules / mod_log_debug.so ... LogMessage "Debug 1" hook = all
David Spector

28

Ecco un comando che penso possa essere di qualche aiuto:

apachectl -t -D DUMP_VHOSTS

Otterrai un elenco di tutti i vhosts, saprai quale è quello predefinito e ti assicurerai che la tua sintassi sia corretta (come la configurazione di apachectl suggerita da yojimbo87).

Saprai anche dove viene dichiarato ogni vhost. Può essere utile se i tuoi file di configurazione sono un disastro. ;)


24

Se stai tentando di eseguire il debug della configurazione dell'host virtuale, potresti trovare utile l'opzione della riga di comando di Apache -S. Cioè, digitare il comando seguente:

httpd -S

Questo comando scaricherà una descrizione di come Apache ha analizzato il file di configurazione. Un attento esame degli indirizzi IP e dei nomi dei server può aiutare a scoprire errori di configurazione. (Vedi i documenti per il programma httpd per altre opzioni della riga di comando).


9
In Apache2 questo èapache2ctl -S
artfulrobot il

1
o in alternativaAPACHE_RUN_USER=www-data APACHE_RUN_GROUP=www-data /usr/sbin/apache2 -S
rleir,

12

Prima controlla i file di configurazione per gli errori di sintassi con apachectl configteste poi guarda nei log degli errori di Apache .


Non ho errori di sintassi perché il mio server si riavvia e ricarica la configurazione senza alcun problema. Non so in quale registro potrei trovare dettagli sulla mia configurazione.
GaetanZ,

I log degli errori si trovano di solito nel file '/var/log/apache2/error.log'.
yojimbo87

Puoi anche usare "apache2ctl -t".
Larry Silverman,

11

Avevo un nuovo file di configurazione di VirtualHost che non veniva mostrato quando si utilizzava il apachectl -Scomando. Dopo aver grattato la testa, mi sono reso conto che il mio file non aveva il suffisso ".conf". Una volta che ho rinominato il file con quel suffisso, il mio Vhost ha iniziato a mostrare e funzionare!


8

Di recente ho avuto alcuni problemi con un VirtualHost. Ho usato a2ensiteper consentire a un ospite, ma prima di eseguire un riavvio (che avrebbe ucciso il server su fail) mi sono imbattuto

apache2ctl -S

Che ti dà alcune informazioni su cosa sta succedendo con i tuoi host virtuali. Non è perfetto, ma aiuta.


3

Ho trovato il mio errore, non ho aggiunto il nome del file di registro: ErrorLog / var / log / apache2
E questo percorso: Directory "/ usr / share / doc /" Non conteneva fonti di siti Web.

Dopo aver cambiato questi due, tutto ha funzionato. È interessante notare che Apache non ha emesso alcun errore, ma non ha aperto il mio sito Web in silenzio sul mio Mac OS Sierra.


Buona risposta, aiutami a trovare un problema simile. Tutta la sintassi e -S vosts corretti, sito ancora errato pubblicato. Si è rivelato essere: 80 e: 443 ha lo stesso file di registro di accesso, che sembrava confondere le cose. File separato per ciascuna porta e i siti hanno iniziato a funzionare.
David McNeill
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.