Gentoo Logo

Disclaimer : Dit document is niet juist en is niet meer onderhouden.


Troubleshooting Apache

Inhoud:

1.  De logs controleren

Als er iets mis is met Apache, maar geen idee hebt wat het kan zijn, kun je wat aanwijzingen vinden in de log bestanden.

Er zijn een aantal verschillende logfiles. Je vindt ze allemaal in /var/log/apache2/. Niet alle logs zul je vinden op jouw systeem, dit is afhankelijk va nde geïnstalleerde modules.

access_log

Codevoorbeeld 1.1: access_log

67.185.0.236 - - [18/Jun/2005:12:05:50 -0700] "GET / HTTP/1.0" 200 721
10.0.1.80 - - [18/Jun/2005:12:11:07 -0700] "GET /~jaspenelle/__journal1.jpg HTTP/1.1" 200 19079
66.239.233.163 - - [18/Jun/2005:12:15:06 -0700] "GET /~jaspenelle/avy14.gif HTTP/1.0" 200 1661
67.185.60.155 - - [18/Jun/2005:12:18:48 -0700] "GET / HTTP/1.0" 200 721
67.185.0.236 - - [18/Jun/2005:12:25:39 -0700] "GET / HTTP/1.0" 200 721
10.0.1.80 - - [18/Jun/2005:12:28:04 -0700] "GET /~jaspenelle/avy14.gif HTTP/1.1" 200 1661
10.0.1.80 - - [18/Jun/2005:12:28:46 -0700] "GET /~jaspenelle/avy7.png HTTP/1.1" 200 13066

Dit bestand is gewoon een lijst met ieder bestand dat opgevraagd is van je server. Als je niets aan je configuratie veranderd hebt, is dit in "Common Log" formaat:

Codevoorbeeld 1.2: Common Log Formaat syntax

remotehost rfc931 authuser [date] "request" status bytes
remotehost Externe hostname of ip-adres
rfc931 De externe loginnaam van de gebruiker.
authuser De gebruikersnaam waarmee de gebruiker zich heeft geïdentificeerd.
[date] Datum en tijd van het verzoekt.
"request" De aanvraag, precies zoals de cient hem stuurdet.
status De HTTP status code die de client terugkreeg.
bytes De grootte van het verzonden document.

error_log

Codevoorbeeld 1.3: error_log

[Mon Feb 07 23:33:18 2005] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec2)
[Mon Feb 07 23:33:18 2005] [notice] Digest: generating secret for digest authentication ...
[Mon Feb 07 23:33:18 2005] [notice] Digest: done
[Mon Feb 07 23:33:18 2005] [notice] Apache/2.0.52 (Gentoo/Linux) PHP/4.3.10 configured -- resuming normal operations
[Sat Jun 18 13:01:54 2005] [error] [client 10.0.1.80] File does not exist: /var/www/localhost/htdocs/favicon.ico
[Sat Jun 18 13:02:14 2005] [error] [client 10.0.1.80] File does not exist: /var/www/localhost/htdocs/favicon.ico
[Sat Jun 18 13:02:18 2005] [error] [client 10.0.1.80] File does not exist: /var/www/localhost/htdocs/favicon.ico
[Sat Jun 18 13:02:21 2005] [error] [client 10.0.1.80] File does not exist: /var/www/localhost/htdocs/favicon.ico
[Sat Jun 18 13:02:24 2005] [error] [client 10.0.1.80] File does not exist: /var/www/localhost/htdocs/favicon.ico

Zoals je ziet, kan dit bestand veel gegevens bevatten, afhankelijk van de ErrorLevel instelling in je httpd.conf bestand. Het verteld je of apache juist is opgestart, welke fouten het tegenkwam, ... Algemeen zegt het je alles wat fout gegaan is. Als iets niet goed werkt, is dit het nuttigste bestand voor meer informatie.

suexec_log

Codevoorbeeld 1.4: suexec_log

[2005-02-11 22:33:19]: uid: (1000/vericgar) gid: (1000/1000) cmd: test.cgi
[2005-03-11 19:20:13]: uid: (1000/vericgar) gid: (1000/1000) cmd: test.cgi
[2005-03-11 19:34:47]: uid: (1000/vericgar) gid: (1000/1000) cmd: test.cgi

Dit bestand bevat een regel voor elke keer een CGI script draait en "suexec" gebruikt. Als je een script niet werkend krijgt met suexec, is dit het nuttigste bestand aangezien het over het algemeen een regel heeft die stelt waarom het script niet uitgevoerd werd.

2.  Ik heb een module geïnstalleerd, maar ze werkt niet!!!

Een module installeren is niet voldoende, je moet nog expliciet vermelden dat je ze wilt activeren. We doen dit om het aan- en afleggen van modules eenvoudig te houden, wat het simpeler maakt om uit te vissen welke modules problemen veroorzaaken.

Als je een module installeerd, zou het een melding zolas deze moeten geven:

Codevoorbeeld 2.1: Post-installatie bericht van emerge

 *
 * To enable mod_layout, you need to edit your /etc/conf.d/apache2 file and
 * add '-D LAYOUT' to APACHE2_OPTS.
 *
 *
 * Configuration file installed as
 *     /etc/apache2/modules.d/15_mod_layout.conf
 * You may want to edit it before turning the module on in /etc/conf.d/apache2
 *

Dit is nogal vanzelfsprekend. Het zegt je precies wat je moet doen om deze module te activeren.

Als je dit bericht niet hebt gelezen, is er nog een manier om te achterhalen wat je moet toevoegen aan APACHE3_OPTSin /etc/conf.d/apache2: Controleer gewoon het configuratiebestand dat werdt toegevoegd in /etc/apache2/modules.d/. Zoek naar een regel met IfDefine:

Codevoorbeeld 2.2: Een stukje uit 15_mod_layout.conf

<IfDefine LAYOUT>
  <IfModule !mod_layout.c>
    LoadModule layout_module    modules/mod_layout.so
  </IfModule>
</IfDefine>

Het IfDefine stukje wordt geparsed als je -D LAYOUT toevoegt aan /etc/conf.d/apache2. LAYOUT is slechts een voorbeeld.

Er zijn verschillende opties die je kunt toevoegen aan APACHE2_OPTS die in de standaardconfiguratie staan:

Optie Resultaat
USERDIR Activeert de public_html folders van gebruikers zodat ze toegankelijk zijn via http://server/~username
INFO Activeert de mod_info module, die informatie over de draaiende serverconfiguratie geeft via http://localhost/server-info
PROXY Activeert mod_proxy
SSL Start SSL/HTTPS ondersteuning. (Apache moet gecompiled zijn met de ssl USE-Flag)
DAV Activeert mod_dav, de ingebouwde WebDav module
DAV_FS Activeert mod_dav_fs, ondersteuning voor bestandsystemen in WebDav
LDAP Activeert mod_ldap, die Apache de mogelijkheid geeft om te verbinden naar LDAP bronnen. (Vereist de ldap USE-vlag)
AUTH_LDAP Activeert authenticatie via een LDAP server.

Documentatie voor alle ingebouwde modules kun je vinden in de Apache 2.0 documentatie.

3.  Apache geeft lege pagina's weer of segfault

Dit gebeurt meestal na een upgrade omdat binaire compatibiliteit gebroken is in APR (Wat door verschillende dingen kan gebeuren). Om dit te vermaken, moet je de apache tool stack hercompilen:

Codevoorbeeld 3.1: De Apache tool stack hercompilen

(Doe dit in de juiste volgorde, belangerijk!)

(Eerst verwijderen we de huidige installatie)
# emerge -aCv '=net-www/apache-2*'

(Dan hercompilen we de toolstack)
# emerge -av '=dev-libs/apr-0*' '=dev-libs/apr-util-0*'

(Daarna herinstalleren we apache)
# emerge -av '=net-www/apache-2*'

(Dependencies zoeken)
$ equery depends net-www/apache
[ Searching for packages depending on net-www/apache... ]
dev-php/phpsysinfo-2.3-r2
dev-php/phpsysinfo-2.1-r2
dev-php/mod_php-4.3.11-r2
net-www/mod_layout-4.0.1a-r1
www-servers/gorg-0.5

(Alle geïnstalleerde modules hercompilen)
# emerge -av '=dev-php/mod_php-4.3.11-r2' '=net-www/mod_layout-4.0.1.a-r1'

Een buggy add-on bepalen

Als je hierna nog steeds problemen hebt, dan is de schuldige waarschijnlijk een van de add-on modules.

Begin met alle modules te verwijderen, en herstart Apache.

Codevoorbeeld 3.2: Add-on modules uitschakelen

(pas /etc/conf.d/apache2 aan)

(voor de wijziging)
APACHE2_OPTS="-D PHP4 -D USERDIR -D SSL"

(na de wijziging)
APACHE2_OPTS=""

Codevoorbeeld 3.3: Apache herstarten

# /etc/init.d/apache2 stop
(Zorg ervoor dat Apache zeker afligt)
# ps -A
# /etc/init.d/apache2 start

Nota: Het kan gebeuren dat je in je configuratie kleine wijzigingen moet aanbrengen als je Directives hebt die niet controleren of de modules geladen zijn. Het is aan te raden dat deze Directives binnen test containers geplaatst worden. Bekijk een .conf bestand in /etc/apache2/modules.d voor een voorbeeld.

Als apache nu niet meer segfault of lege pagina's geeft, ben je zeker dat een van de add-on's het doen. Om uit te zoeken welke, voeg je ze een voor een toe, en herstart je apache volledig.

Als Apache niet meer werkt na een bepaalde module, weet je dat dat degene is die de problemen veroorzaakt. Soms kan de module simpelweg hercompilen dit oplossen.

Als na het hercompilen en herstarten van apache je nog steeds problemen hebt, moet je een bug filen die de specifieke versie en revisie van de module geven, en zeggen dat ze segfault. Maar zorg ervoor dat je eerst zoekt of die bug nog niet bestaat!

4.  De webserver parsed geen PHP of CGI code maar geeft gewoon hun code

Apache geeft soms gewoon de PHP of CGI code weer in de plaats ze te draaien en de output te geven. Als dit gebeurt, hoewel de module geactiveerd is in /etc/cinf.d/apache2 is het zeer waarschijnlijk een cache probleem. De webbrowser's cache kuisen kan dit client-side probleem oplossen.

Soms kan dit probleem ook voorkomen als je de webserver benaderd via zijn DNS naam maar niet als je dit doet via zijn IP adres. Dit is een sterke aanwijzing in de richting van een cache-probleem.

Dit probleem kan verholpen worden door de webbrowser's cache te legen, en die van webproxies zoals squid of wwwoffle.

5.  configure: error: changes in the environment can compromise the build

Als je deze error krijgt, heb je waarschijnlijk onnodige spaties in je CFLAGS in /etc/make.conf. Vermaken is simpel, verwijder de extra spaties:

Codevoorbeeld 5.1: Voorbeeld van varanderingen in /etc/make.conf

(Voor de wijziging)
CFLAGS="-O2 -mcpu=pentium3 -march=pentium3  -pipe"

(Na de wijziging, let op de spaties)
CFLAGS="-O2 -mcpu=pentium3 -march=pentium3 -pipe"

6.  Address already in use: make_sock: could not bind to address 0.0.0.0:443

Dit probleem kan zich voordoen tijdens het starten en betekend dat je verschillende Listen instructies hebt in je configuratie die incompatibel zijn. Om dit op te lossen, moet je je configuratie greppen voor Listen en ze stuk voor stuk vermaken.

Codevoorbeeld 6.1: Alle Listen directives zoeken

(Zorg dat je in de juiste directory bent.)
# cd /etc/apache2/

(Zoek alle Listen directives)
# grep Listen httpd.conf vhosts.d/*.conf modules.d/*.conf

Je zoekt conflicterende Listen entries, bijvoorbeelt, als er een Listen 80 in httpd.conf is en een Listen 10.0.0.15:80 in een andere, kan apche niet starten. Dit is omdat apache eerst probeert te binden op poort 80 op alle IP's, en dan op poort 80 voor IP adres 10.0.0.15 en dit niet kan omdat poort 80 al in gebruik is.

De aan te raden configuratie is dat je één Listen 80 (Dit is de standaard in httpd.conf) maakt en dan voor elke SSL VirtualHost je een aparte absoluute Listen directive aanmaakt (Bijvoorbeeld: Listen 10.0.0.15:443).

7.  Na een upgrade naar apache-2.0.54-r13 werken de standaard vhosts niet meer

Sinds de update naar apache-2.0.54-r13 zijn er twee directives toegevoegd door Bug 100624.

De nieuwe directives zijn -D DEFAULT_VHOST om de standaard vhost te activeren en -D SSL_DEFAULT_VHOST om de standaard SSL vhost te activeren. Bijden moeten toegevoegd worden aan APACHE2_OPTS in /etc/conf.d/apache2 als je wil dat Apache weer werkt als vroeger.

8.  Hulp zoeken

Als niets van deze dingen hielpen, of je hebt andere vragen, kom dan eens langs in on IRC channel, #gentoo-apache op irc.freenode.net. Of post een bug op Gentoo's Bugzilla.



Print

Upgedate op 24 oktober 2005

De originele versie van dit document was laatst geupdate om 29 november 2007

Korte inhoud: Dit document behandelt een aantal methodes om uit te zoeken wat er fout is met je apache installatie, en ze te fixen.

Michael Stewart
Autheur

Elfyn McBratney
Medewerker

Bryan Østergaard
Medewerker

Alexander Zuliani
Vertaler

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.