Site wordt niet weergegeven (Apache)

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Diagnose - In welke hoek moet je het zoeken?

Server not found: DNS-probleem? → Wat geeft ping? Met en zonder 'www'? Hoe zien de DNS-entries eruit? Met en zonder 'www'?
Internal Server Error (500) → Probleem ligt op de server. Dit betrof een .htpasswd/.htaccess-beveiligde installatie. Na migratie moest ik die bestanden bijwerken. Vandaar de interne fout.
Eih: De standaard-Apache-pagina wordt geservereerd, en niet het Hello World-html-bestand dat is klaargezet om te testen! Vervolgtest: apachectl -S. Wat bleek: Ik had vergeten om het conf-bestand toe te voegen aan Apache: sudo a2ensite example.com && sudo service apache2 reload

De eerste stap is, om een inschatting te maken in welke schakel van de keten het probleem schuilt. Denk aan:

De truuk is om te achterhalen waar het probleem zit. Bv.:

  • DNS
  • Webserver
  • Serveerbare content - Bv. PHP-fouten.

De foutmelding geeft vaak al heel aardig aan in welke hoek je de storing moet zoeken.

Diagnose - Losse tests

Diverse losse tests, met de nadruk op los: Als je eerst bepaalt waar in de keten de oorzaak lijkt te liggen, kun je veel doelgerichter gaan testen.

Is er serveerbare content?

  • Controleer of op de bewuste plek een index.htm-, index.html- of index.php-bestand staat
  • Voeg index.html of index.php toe aan de URL. Als het nu wel werkt → Storing Apache virtual configuration file, of storing met .htaccess-bestand
  • Probeer met en zonder 'www'. Standaard doe ik domeinnamen zonder 'www'. Let op: in /etc/hosts doe ik domeinnamen zonder 'www'.

Bekijk Apache-log

tail /var/log/apache2/error.log

Kloppen bestandsrechten?

Snelle controle:

  • Bestanden moeten leesbaar zijn voor derden
  • Mappen moeten leesbaar en executeerbaar zijn voor derden.

Apache-status virtuele hosts?

Staat de betreffende vhost in de lijst die je krijgt met apachectl -S?

Is de domeinnaam te vinden?

  • Wat geeft ping?
  • Is /etc/hosts bijgewerkt?

Verdwaald .htaccess-bestand?

  • Is bij het opzetten van het domein, misschien een .htaccess-bestand meegekomen? Er is een kans dat dat niet compatibel is
  • Hernoem dat bestand naar bv. .htaccess-bk01.

Tikfout domeinnaam apachectl?

  • Geef commando apachectl -S
  • Kopiëer de genoemde domeinnaan, en plak deze in een browser.

Inspecteer virtueel hostbestand

sudo vim /etc/apache2/sites-available/<domeinnaam>

Geen gekke dingen?

Roep site op vanaf de server

lynx <domeinnaam>

Als de site getoond wordt: → Hoog tijd om de cache van de browser te legen of te testen met een andere browser

Test met andere browser

  • Vaak sneller om (in mijn geval) te testen met Chromium, dan om de cache te legen van Firefox
  • Let op: Chromium doet gekke dingen qua cache. Ik probeer 'm zo min mogelijk te gebruiken.

Leeg browser-cache

Cache Firefox legen: Dit is meestal voldoende

Herstart Apache

sudo service apache2 restart

Casussen

Deze casussen houd ik bij om de volgorde van de stappen hierboven te kunnen aanpassen.

Nov. 2015: Verdwaald .htaccess-bestand

Heel onwaarschijnlijke fout, maar toch.

Nov. 2015: /etc/hosts-bestand niet bijgewerkt op client-computer

Dit bleek na ping.

Nov. 2015: Server herstarten

Oorzaak was onduidelijk, maar de oplossing niet: Apache herstarten.

Nov. 2015: Browser-cache legen

De site werd wel goed weergegeven vanaf de server, en ook in Chrome. Ook was het opvallend dat de browser bij refresh instantaan dezelfde foutmelding gaf → Laatste uur van de cache geleegd. Probleem opgelost.

Dec. 2015: .htpasswd/.htaccess bijwerken

Na migratie van een wachtwoord-beveiligde site, moest ik de .htpasswd/.htaccess-bestanden bijwerken:

  • Het wachtwoord uit .htpasswd toevoegen aan het bestaande .htpasswd-bestand
  • Code in .htaccess-bestand bijwerken (wijst zich vanzelf).