In dit artikel leggen wij de installatie en configuratie voor een Nginx-webserver in Ubuntu en Debian uit.
Nginx is een webserver en een reverse-proxyserver gericht op laag geheugengebruik en hoge prestaties. 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 we de volgende vier onderdelen:
- Nginx installeren
- De HTTP- HTTPS-poorten openen met de UFW-firewall
- Nginx server block instellen
- PHP installeren en configureren
Nginx installeren
Stap 1
Voor je Nginx installeert, controleer je of de server package list van je VPS up-to-date is en update je die waar nodig.
sudo apt -y update && sudo apt -y upgrade
Stap 2
Vervolgens installeer je Nginx met het commando:
sudo apt -y install nginx
Stap 3
Na de installatie start je Nginx met het commando:
sudo systemctl start nginx
Je kunt de status controleren met het commando:
sudo systemctl status nginx
Wanneer Nginx correct werkt, ziet de output er als volgt uit:
Wil je de geïnstalleerde versie van Nginx controleren? Gebruik dan het commando:
sudo dpkg -1 nginx
De HTTP- en HTTPS-poorten openen met de UFW-firewall
De HTTP- en HTTPS-poorten van je VPS staan standaard dicht. Je opent deze poorten met de volgende stappen:
Stap 1
Ubuntu gebruikt standaard UFW als firewall. Heb je UFW nog niet ingeschakeld en logging nog niet aangezet? Doe dit dan eerst met de commando’s:
sudo ufw enable
ufw logging on
Stap 2
Open vervolgens de HTTP- en HTTPS-poort met het de commando’s:
sudo ufw allow 'nginx full'
Je kunt controleren of de regel correct is toegevoegd met het commando:
ufw status numbered
Stap 3
Gebruik je de VPS-firewall in het controlepaneel? Open dan ook de HTTP- en HTTPS-poorten in je controle paneel.
Nginx server block instellen
Nginx maakt gebruik van server blocks. Deze zijn vergelijkbaar met Apache’s virtual hosts en stellen je in staat om meer dan één website tegelijkertijd online te hosten.
Stap 1
Eerst maak je een directory aan voor je domein.
sudo mkdir -p /var/www/example.com/html
Stap 2
De root-user is door het gebruik van sudo automatisch eigenaar geworden van deze directory. Pas voor de html volder de eigenaar aan naar jezelf met het commando:
sudo chown $USER:$USER /var/www/example.com/html
Stap 3
Pas de rechten tot de directory aan zodat de eigenaar volledige toegang heeft en de groep en andere gebruikers bestanden in de directory kunnen lezen en uitvoeren.
sudo chmod -R 755 /var/www/example.com
Stap 4
Om de werking van je Nginx-server te testen, maken we een test-bestand aan in de html-directory. Je kunt ook in plaats hiervan je eigen website uploaden, bijvoorbeeld via SFTP. Let wel op dat als je een dynamische website upload, er ook een database server geïnstalleerd moet zijn op je VPS.
sudo nano /var/www/example.com/html/index.html
Geef het bestand de volgende inhoud, of gebruik je eigen html-code:
<!DOCTYPE html>
<html>
<head>
<title>Voorbeeld</title>
</head>
<body>
<p>Hello world! </p>
</body>
</html>
Sla de wijziging op en sluit nano (ctrl + x > y > enter).
Stap 5
Om de inhoud van index.html te kunnen tonen, maak je voor Nginx een server block aan:
sudo nano /etc/nginx/sites-available/example.com
Stap 6
Plak de volgende configuratie in het geopende bestand.
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/EXAMPLE.COM/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name EXAMPLE.COM WWW.EXAMPLE.COM;
location / {
try_files $uri $uri/ =404;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php-fpm.sock;
}
}
Stap 7
Je kunt nu direct de werking van je webserver testen door in een browser naar http://example.com te gaan, waarbij je example.com 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 en configureren
Nginx komt niet automatisch met PHP. Om PHP te kunnen gebruiken installeer je het dan ook apart. Hieronder laten we zien hoe je PHP installeert en configureert en vervolgens de Nginx-configuratie aanpast om PHP te gebruiken.
Stap 1
Voeg de repository toe waarin de laatste PHP-versies zijn opgenomen:
Ubuntu:
add-apt-repository ppa:ondrej/php
apt -y update
Debian:
apt -y install lsb-release apt-transport-https ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list
apt -y update
Stap 2
Installeer nu PHP:
apt install php8.3 php8.3-fpm php8.3-cli php8.3-{bz2,curl,mbstring,intl}
a2enconf php8.3-fpm
Stap 3
Open nu het PHP-configuratiebestand:
sudo nano /etc/php/8.3/fpm/php.ini
De locatie van je PHP-configuratiebestand is mogelijk niet hetzelfde, bijvoorbeeld als je een andere PHP-versie gebruikt. Controleer in dat geval de directory, bijvoorbeeld met:
find /etc/php/* | grep php.ini
Stap 4
Pas de volgende items naar wens aan in het PHP-configuratiebestand. Tip: met Ctrl + W kun je het bestand doorzoeken.
max_execution_time = 300
memory_limit = 256M
post_max_size = 32M
upload_max_filesize = 32M
max_input_time = 300
Sla je wijzigingen op en sluit nano met ctrl + x > y > enter.
Stap 5
Open nu het default server block van jouw website:
sudo nano /etc/nginx/sites-available/default
Stap 6
Pas het bestand aan zodat de niet-uitgecommentarieerde tekst er als volgt uitziet:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name localhost;
location / {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
try_files $uri $uri/ =404;
}
}
Gebruik je een andere versie van PHP? Pas dan 7.4 aan naar de versie die je gebruikt. Sla hier je wijzigingen op en sluit nano met ctrl + x > y > enter.
Stap 7
Open nu het server block voor jouw website:
sudo nano /etc/nginx/sites-available/example.com
Stap 8
Plak de volgende inhoud in het bestand:
server {
listen 80;
listen [::]:80;
root /var/www/EXAMPLE.COM/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name EXAMPLE.COM WWW.EXAMPLE.COM;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Sla opnieuw je wijzigingen op en sluit nano met ctrl + x > y > enter.
Stap 9
Nginx maakt gebruik van de folders sites-available en sites-enabled. De eerste bevat de websites die je op je server host. De sites-enabled folder bevat een symbolic link (een soort van snelkoppeling) naar de sites-available folder. De website wordt hiermee daadwerkelijk beschikbaar voor mensen die hem bezoeken.
Je maakt een symbolic link aan van de sites-available naar de sites-enabled folder aan met het commando:
ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
Stap 10
Controleer of er geen fout is opgetreden is in je configuratie door middel van het commando:
sudo nginx -t
Wanneer Nginx correct werkt ziet de output er als volgt uit:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is succesful
Krijg je hier de melding 'directive is duplicate in /etc/nginx/sites-enabled/default:53'? Verwijder dan deze symbolic link met:
rm /etc/nginx/sites-enabled/default
Herstart tot slot de Nginx- en PHP-service:
service nginx restart
service php7.4-fpm restart
Je bent nu klaar met de PHP-installatie.
Stap 11 - optioneel
Maak een PHP-testbestand aan om de werking van je Nginx-server te kunnen testen:
sudo nano /var/www/html/info.php
Plaats dit in het bestand als tijdelijke inhoud.
<?php
phpinfo();
?>
Open je browser en navigeer naar je domeinnaam of server ip met de toevoeging /info.php, bijvoorbeeld http://example.com/info.php
Daarmee zijn we aan het eind gekomen van deze handleiding voor de installatie van Nginx in Ubuntu.
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.