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