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
httpd
httpd-core
httpd-filesystem
httpd-tools
En dat doe ik als volgt:
sudo dnf install httpd httpd-core httpd-filesystem httpd-tools
MySQL (mariadb)
mariadb
mariadb-server
En dat doe ik als volgt:
sudo dnf install mariadb mariadb-server
PHP
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
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:
- Enter current password foor root (enter for none): Druk op de enter toets, want er is geen root wachtwoord voor MySQL (mariadb)
- Switch to unix_socket authenticaton: n
- Change the root password? [Y/n]: y waarna om een (nieuw) root wachtwoord gevraagd word voor de MySQL (mariadb) server. Verzin een veilig en krachtig wachtwoord, of gebruik een tool als
pwgen
. Let op: er word 2 keer om het wachtwoord gevraagd, om tikfouten te voorkomen. Bewaar dit wachtwoord goed en veilig, je hebt het in de toekomst nodig - Remove anonymous users? [Y/n]: y
- Disallow root login remotely? [Y/n]: y
- Remove test database and access to it? [Y/n]: y
- Reload privileges tables now? [Y/n]: y
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
.