Installatie

  • Controleer of Apache al geïnstalleerd is — rpm -qa | grep httpd
  • Installeer de Apache-webserver — yum groupinstall “Web Server”
    yum install httpd
  • Installeer PHP-ondersteuning — yum groupinstall “PHP Support”
    yum install php php-mysql
  • Lijst met handige PHP-bibliotheken en -modules — yum search php-
  • Meer details over wat elke module doet — yum info naam van de module
  • Start de webserver — service httpd start
    apachectl start
  • Laat Apache automatisch starten als de server opstart — chkconfig httpd on
  • Installeer LAMP (Linux, Apache, MySQL, PHP) — yum groupinstall “Web Server” “PHP Support” “MySQL Database server” “MySQL Database client”
    yum install php-mysql
  • Bekijk PHP op de server met een testpagina — vi /var/www/html/info.php <?php phpinfo(); ?>
  • Bezoek je site — http://server/info.php
  • Herstart Apache — service httpd restart
  • Script om de werking van de Apache httpd-daemon te besturen — apachectl start|stop|restart|fullstatus|status|configtest
  • Herstarten of stoppen zonder open verbindingen af te breken — apachectl graceful |graceful-stop

Configuratie

De standaardconfiguratie (/etc/httpd/conf/httpd.conf) is al zo ingesteld dat de Apache-server draait. Je hoeft alleen je index.html en je webpagina’s te schrijven en in de standaard-DocumentRoot (/var/www/html) te plaatsen.

Best practices

Er zijn talloze manieren om je Apache-configuratiebestanden in te delen. Soms bepaalt je Linux-distributie dat.

  • Wijzig zo min mogelijk in /etc/httpd/conf/httpd.conf. Upgraden of migreren gaat makkelijker als dit bestand weinig of geen wijzigingen bevat.
  • Zet virtual host-definities in /etc/httpd/conf/vhosts.conf.
  • Zet de document root van elke website op /var/www/vhosts/[domeinnaam]/httpdocs. Neem “www” niet op in de domeinnaam. Bij “exampledomain.com” wordt de document root dus /var/www/vhosts/exampledomain.com/httpdocs.

Hier is een sjabloon voor de virtual host-definitie:

NameVirtualHost *:80

<VirtualHost *:80>
ServerAdmin webmaster@ exampledomain.com
ServerName exampledomain.com
ServerAlias www. exampledomain.com
DocumentRoot /var/www/vhosts/ exampledomain.com /httpdocs
ErrorLog logs/ exampledomain.com -error_log
CustomLog logs/ exampledomain.com -access_log combined
<Directory /var/www/vhosts/ exampledomain.com /httpdocs>
AllowOverride All
</Directory>
</VirtualHost>

Firewall

Controleer dat de firewall toegang tot poort 80 niet blokkeert door dit uit te voeren:

system-config-securitylevel

Sta WWW(HTTP) toe als “Trusted Services”

Beveiliging op gebruikersniveau instellen

Om alleen bevoegde gebruikers met een wachtwoord toe te laten, voeg je de volgende regels toe aan /etc/httpd/conf/httpd.conf.

Vlak voor de uitgecommentarieerde optie voor de UserDir-directive:

AuthType Basic
AuthName “Test Passwords”
AuthUserFile /etc/httpd/passdb
Require user user1

Wachtwoorden instellen

Voer het volgende commando uit om de wachtwoorddatabase passdb in /etc/httpd te maken en user1 toe te voegen:

htpasswd -c /etc/httpd/passdb user1

Voer het volgende commando uit zonder de optie -c (die de database aanmaakt) om nog een gebruiker toe te voegen:

htpasswd /etc/httpd/passdb user2

Beveiliging op hostniveau instellen

Voeg het volgende toe aan de Directory als je alleen je eigen netwerk toegang wilt geven. Is je netwerk bijvoorbeeld 192.168.1.0:

# vi /etc/httpd/conf/httpd.conf
Order allow,deny
Allow from 192.168.1.0/255.255.255.0

Rechten instellen voor PHP-sites

Beveilig je site door de juiste rechten op je DocumentRoot te zetten:

  • Maak de Apache-gebruiker eigenaar van je DocumentRoot — chown -R apache:apache /var/www/html/yoursite
  • Pas de rechten aan — chmod -R 400 /var/www/html/yoursitechmod -R a+X /var/www/html/yoursite

Soms heeft je PHP-site schrijfrechten op bepaalde mappen nodig. WordPress-sites hebben bijvoorbeeld schrijfrechten op de map /wp-content nodig om plugins, thema’s of updates te kunnen installeren.

  • Geef WordPress schrijfrechten — chmod -R 775 /var/www/html/yoursite/wp-content

Problemen oplossen

  • Controleer of Apache draait — service httpd status
  • Start Apache — apachectl start
    service httpd start
  • Controleer of Apache tijdens het opstarten start — chkconfig httpd on
  • Test de syntaxis van de configuratie — httpd -t httpd –S
  • bekijk het foutlogbestand — tail /var/log/httpd/error_log
  • bekijk het toegangslogbestand — tail /var/log/httpd/access_log
  • herstart Apache zonder de gebruiker te verbreken — service httpd reload
    apachectl graceful