In dit artikel leggen wij de installatie en initiële configuratie van een Apache web server (met httpd-tools, mod_ssl en PHP-FPM) in Ubuntu 20.04 uit.
Apache vormt samen met MariaDB en PHP de zogeheten LAMP-Stack (Linux Apache MySQL PHP) en wordt gebruikt voor het hosten van websites. Host je een dynamische website op je VPS (e.g. WordPress), dan heb je ook MariaDB (nodig (of een vergelijkbaar alternatief zoals MySQL).
In dit artikel behandelen wij de volgende onderdelen:
- Apache installeren
- Apache-poorten openen in je firewall
- PHP installeren
- Vhosts gebruiken
Daarnaast raden wij ook aan om een SFTP-server op te zetten, en de websites die je host te beveiligen met SSL.
- Voer de stappen in dit artikel uit als root user, of gebruik sudo.
- Wil je je Apache server meteen kunnen testen? Wijs dan voor je begint de DNS van een domein naar je VPS (i.e. via het root A- en AAAA-record).
Apache installeren
Stap 1
Verbind met je VPS via SSH of gebruik de VPS-console en update eerst je server:
apt -y update
apt -y upgrade
Herstart nu eerst je VPS en herhaal na de herstart bovenstaande commando's (tenzij je VPS al up-to-date was). Sommige package updates zijn pas beschikbaar na het updaten en herstarten van je VPS.
Stap 2
Installeer Apache (en de benodigde extra packages) met het commando:
apt -y install apache2
Apache start automatisch na de installatie en na een herstart van je server. Je hoeft de service dus niet te enablen en starten.
Na het updaten van Ubuntu, kan het zijn dat je onderstaande melding te zien krijgt. Voer in dat geval het onderste commando uit (de 1e maakt geen verschil), anders werkt Apache niet na een reboot van je VPS! Pas de versie uit dit voorbeeld aan naar degene die je op je VPS terugziet.
NOTICE: Not enabling PHP 8.3 FPM by default NOTICE: To enable PHP 8.3 FPM in Apache2 do: NOTICE: a2enmod proxy_fcgi setenvif NOTICE: a2enconf php8.3-fpm
Apache-poorten openen in je firewall
Ubuntu komt standaard met UFW als firewall en out-of-the-box staan alle poorten daarin dicht. Je zet de http-(80) en https-(443) poorten open met de commando's:
ufw allow 80/tcp ufw allow 443/tcp
Gebruik je de VPS-firewall? Open dan (ook) de HTTP- en HTTPS-poorten in je controlepaneel.
Apache testen
Je kunt nu direct de werking van je web server testen door in een browser naar http://voorbeeld.nl te gaan, waarbij je voorbeeld.nl vervangt door je hostname (te controleren met het commando 'hostname'), of het IP-adres van je VPS. Je ziet dan de standaard test-pagina:
PHP installeren
Stap 1
Apache komt na de installatie niet met een recente PHP-versie. Wil je een dynamische PHP-website hosten (e.g. WordPress), dan raden wij om veiligheidsredenen aan de meest recente versie van PHP te installeren. Voeg hiervoor eerst de PHP 8.1 PPA repository toe met:
add-apt-repository ppa:ondrej/php
Er zal om bevestiging gevraagd worden tijdens het toevoegen. Druk op 'Enter' om toestemming te geven.
Krijg je de melding 'Command 'add-apt-repository' not found' te zien? Installeer dan eerst de add-apt-repository met:
apt install software-properties-common
Stap 2
Update je VPS nogmaals zodat de nieuwe repository daadwerkelijk gebruikt kan worden en installeer vervolgens PHP8.1 met de meest relevante modules:
apt -y update
apt -y install php8.1
Je PHP-versie is nu geüpgraded naar 8.1.3 (of nieuwer). Je controleert de preciese versie met:
php -v
Wij streven ernaar onze documentatie up-to-date te houden, maar als er wanneer je dit leest een nieuwere versie is, zoals 8.2, pas dan in de commando's in stap 1 en 2 het versienummer aan naar de meest actuele.
Stap 3
Dit is een goed moment om eventueel aanpassingen te maken in de instellingen van php.ini als je wilt, zoals de memory_limit. De php.ini configuratie vind je in:
nano /etc/php/8.1/fpm/php.ini
Stap 4
Schakel tot slot de php modules in en herstart Apache:
a2enmod actions fastcgi alias proxy_fcgi
ystemctl restart apache2
Je kunt nu PHP gebruiken op je Apache-server. Vergeet niet MariaDB te installeren als er ook een database aan je website gekoppeld moet worden (in het geval van dynamische websites zoals een WordPress-website) en je VHost te configureren als je meerdere sites host.
Host je één website op je server? Dan kun je die nu uploaden (bijvoorbeeld via FTP) in de map /var/www/html (er staat daar al een voorbeeld bestand genaamd index.html).
DNS
Om een website te hosten is het niet alleen belangrijk dat de bestanden van je website op een server staan. Deze moet uiteraard ook vindbaar zijn via het internet. Hiervoor wordt wereldwijd gebruik gemaakt van DNS-records; DNS-records geven aan op welke servers diensten zoals webhosting of e-mail voor een domein te vinden zijn.
Hieronder zie je een voorbeeld van hoe je DNS-records kunt instellen voor een domein dat bij TransIP geregistreerd staat en gehost wordt op een VPS. Een uitgebreidere uitleg over het instellen van DNS-records vind je in deze handleiding.
Gebruik je een SandboxVPS? Dan stel je enkel IPv6-records in.
Een VHost gebruiken
Wil je meer dan één domein hosten? Dan gebruik je een VHost-systeem (ook bekend als VirtualHost). Een VHost-file bevat o.a. de gegevens waar op je VPS specifieke domeinen gehost worden. Hierdoor worden bezoekers van domeinen die je op je VPS host automatisch naar de juiste mappen op je VPS gestuurd waar de websites zich bevinden (zonder dat die bezoekers daar iets van merken).
Stap 1
Maak de vhost file aan met het commando (vervang example.com door je domeinnaam):
nano /etc/apache2/sites-available/example.com.conf
Stap 2
Neem de inhoud hieronder over, waarbij je example.com vervangt door de naam van het domein dat je wil hosten op je VPS.
<VirtualHost *:80>
ServerAdmin admin@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php/php8.1-fpm.sock|fcgi://localhost/"
</FilesMatch>
ErrorLog /var/log/apache2/example.com/error.log
CustomLog /var/log/apache2/example.com/access.log combined
</VirtualHost>
Stap 3
De directories die in de vorige stap staan bestaan nog niet en maak je samen met de log files eerst aan. Vervang example.com door de naam van het domein dat je toevoegt:
mkdir -p /var/www/example.com/public_html
mkdir -p /var/log/apache2/example.com
De toevoeging -p (-parent) maakt indien nodig alle mapstructuren aan die voor /example.com staan. In principe zouden deze allemaal al moeten bestaan.
Stap 4
Schakel de virtual host in met de commando's (vervang opnieuw example.com door je domeinnaam):
a2ensite example.com.conf systemctl reload apache2
Extra domeinen
Herhaal stap 1 t/m 4 voor ieder extra domein dat je wil toevoegen (ongeacht het aantal).
Stap 5
Je kunt nu direct aan de slag met je website, door deze via SFTP of FTPS te uploaden, of door met een teksteditor vanuit command-line een html-website te maken (voor PHP, zie PHP installeren). Je kunt bijvoorbeeld als volgt een info.php pagina maken:
- Open php.info:
nano /var/www/example.com/public_html/info.php
- Voeg de volgende inhoud toe:
<?php
phpinfo();
Je kunt nu direct naar de pagina example.com/info.php navigeren in je browser om de output te testen.
Je Apache-server is nu klaar! Gebruikt je website een database? Neem dan ook een kijkje in onze MariaDB-handleiding. Voor het beveiligen van je website kun je onze Apache SSL-handleiding gebruiken.
Mocht je aan de hand van dit artikel nog vragen hebben, aarzel dan niet om onze supportafdeling te benaderen. Je kunt hen bereiken via de knop 'Neem contact op' onderaan deze pagina.