Installatie en configuratie Apache, MySQL en PHP op Fedora

Inleiding

Met deze handleiding laat ik de stappen zien om Apache, MySQL (mariadb) en PHP te installeren en configureren op Fedora. Deze handleiding is gericht op een installatie op een workstation zodat een ontwikkelaar code kan uitvoeren, en dus niet gericht op het installeren en configureren van deze dingen voor een server op het web.


Apache, MySQL (mariadb) en PHP installeren

De volgende software installeer ik:

Apache

En dat doe ik als volgt:

sudo dnf install httpd httpd-core httpd-filesystem httpd-tools

MySQL (mariadb)

En dat doe ik als volgt:

sudo dnf install mariadb mariadb-server

PHP

En dat doe ik als volgt:

sudo dnf install php php-cli php-common php-fpm php-gd php-intl php-mbstring php-mysqlnd php-opcache php-pdo php-pecl-zip php-process php-sodium php-xml

Apache, MySQL (mariadb) en PHP configureren

Nu Apache, MySQL (mariadb) en PHP geïnstalleerd zijn is het een kwestie van configureren. Dat doe ik als volgt.

Apache

Om te beginnen laat ik Apache automatisch starten als de computer opstart met

sudo systemctl enable --now httpd

Dan voeg ik de configuratie voor Virtual Host(s) toe aan /etc/httpd/conf.d/vhosts.conf, wat standaard niet bestaat dus dat bestand maak ik eerst aan met

sudo touch /etc/httpd/conf.d/vhosts.conf

En dan voeg ik daar het volgende aan toe:

<VirtualHost *:80>
	ServerName localhost
	ServerAdmin sebastiaan
	DocumentRoot "/var/www/html/localhost/"
	
	<Directory "/var/www/html/localhost/">
		Options -Indexes +FollowSymLinks +MultiViews
		Require all granted
		AllowOverride All
	</Directory>
</VirtualHost>

Dan maak ik de map /var/www/html/localhost/ aan met:

sudo mkdir -p /var/www/html/localhost/

En zet ik de eigenaar en groep goed (hier later meer over), en zorg ik ervoor dat SELinux de juiste configuratie heeft:

sudo chown sebastiaan:apache /var/www/html/localhost/
sudo restorecon -RvF /var/www/html/localhost/

MySQL (mariadb)

Om te beginnen laat ik ook MySQL (mariadb) automatisch starten als de computer start:

sudo systemctl enable --now mariadb

En dan doe ik het volgende om het te configureren. Deze stappen zijn alleen nodig als MySQL (mariadb) net geïnstalleerd is.

sudo mysql_secure_installation

Dit opent een vragenlijst, waarop ik de volgende antwoorden geef:

Hierna sluit de vragenlijst en worden de veranderingen automatisch doorgevoerd.

PHP

Voor de configuratie van PHP maak ik eerst een nieuw configuratiebestand aan:

sudo touch /etc/php.d/99-security.ini

Met de volgende inhoud

disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
allow_url_fopen = Off
allow_url_include = Off

Systeemconfiguratie

Gebruikers- en groepbeheer

Voeg je gebruikersaccount toe aan de apache groep, zodat je alle mappen (en dus sites) in /var/www/html kunt bewerken en beheren, wat wel handig is als ontwikkelaar. Doe dat als volgt:

sudo usermod -aG $USER apache

Log uit en opnieuw in of herstart de computer om de wijzigen door te voeren.

Configuratie /etc/hosts

Voor elke site voeg je de naam ervoor in aan /etc/hosts. Er kunnen meerdere namen per regel bestaan. Bijvoorbeeld (alleen de laatste 2 regels van /etc/hosts hier, de rest is niet belangrijk en hoeft niet gewijzgid te worden)

127.0.0.1 localhost playground
::1 localhost playground

Dit zorgt ervoor dat als je in je browser naar http://localhost of http://playground gaat je computer deze namen niet opzoekt in de geconfigureerde DNS server maar hiervoor altijd 127.0.01 of ::1 (IPv4 en IPv6) pakt.

Zorg ervoor dat de naam die je toevoegt ook hetzelfde is als die je in de ServerName regel opgeeft in de VirtualHost in /etc/httpd/conf.d/vhosts.conf.