Installatie en configuratie Apache, MariaDB en PHP op Fedora

Geschreven op

Inhoudsopgave

Inleiding.

Met deze handleiding loop ik door het installeren en configureren van Apache, MariaDB en PHP op Fedora heen zoals ik dat doe voor mijn eigen projecten.

Dit is voor het installeren en configureren van een test server. Gebruik deze handleiding dus niet om een server op het web te installeren en configureren.

Installeren Apache, MariaDB en PHP.

Om te beginnen begin je met het installeren van Apache, MariaDB en PHP.

Installeren Apache.

Ik installeer de volgende paketten:

En daarvoor gebruik ik het volgende commando:

sudo dnf install httpd httpd-core httpd-filesystem httpd-tols

Installeren MariaDB.

Ik installeer de volgende paketten:

En daarvoor gebruik ik het volgende commando:

sudo dnf install mariadb mariadb-server

Installeren PHP.

Ik installeer de volgende paketten:

En daarvoor gebruik ik het volgende commando:

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, MariaDB en PHP configureren.

Na het installeren van Apache, MariaDB en PHP is het tijd om deze te gaan configureren.

Apache configureren.

Apache laat ik automatisch starten als de computer start. Dat doe ik met

sudo systemctl enable --now httpd.service

Ook voeg ik een aantal Virtual Hosts toe in het configuratiebestand /etc/httpd/conf.d/vhosts.conf. Dat bestand bestaat standaard niet dus maak ik dat handmatig aan. Daarna zet ik de SELinux context ervan goed:

sudo touch /etc/httpd/conf.d/vhosts.conf
sudo restorecon -RvF /etc/httpd/conf.d/vhosts.conf

En als laatste plaats ik er (minimaal) het volgende in:

<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>

Daarna maak ik de map aan die ik als DocumentRoot gebruik hierboven, en zet ik de eigenaar en groep daarvan goed:

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

MariaDB configureren.

Ook MariaDB laat ik automatisch starten als de computer start:

sudo systemctl enable --now mariadb.service

Daarna voer ik het volgende uit om de MariaDB server niet geheel open voor de wereld te laten zijn. Dit opent een vragenlijst, vul de vragen in. Meestal zijn de standaard geselecteerde optie(s) voldoende.

sudo mysql_secure_installation

De enige waar ik zelf iets mee doe is het instellen van een root wachtwoord voor MariaDB. Als je van plan bent gebruik te gaan maken van unix socket authentication (volgende vraag) mag je dit leeg laten.

Als alle vragen beantwoord zijn worden de wijzigingen automatisch doorgevoerd.

PHP configureren.

Voor de configuratie van PHP maak ik 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.

Een aantal kleine systeemconfiguratiestappen zijn nodig om ervoor te zorgen dat alles zo soepel mogelijk werkt.

Gebruikers- en groepsbeheer.

Voeg je gebruikersaccount toe aan de apache groep. Dit zorgt ervoor dat je alle mappen (en dus websites) in /var/www/html/ kunt aanpassen wanneer nodig.

sudo usermod -a -G apache $USER

Om dit door te voeren start je de computer opnieuw op of log je opnieuw in. Herstarten is nu wel handig, dan ben je er ook zeker van dat Apache en MariaDB goed geconfigureerd zijn en automatisch starten.

Host configuratie.

Voor elke site die ik lokaal aanmaak voeg ik de naam toe aan het einde van /etc/hosts zodat de computer weet waar de site zich bevind als ik mijn browser ernaar verwijs. Ik voeg dit aan het einde van het bestand toe, want wat er nu instaat is belangrijk en moet bewaard 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.