Winkelwagen

/ VPS-Infrastructuur

Alles over de zelfontwikkelde VPS-infrastructuur

Register now

/ Up to date

/ Nieuws

Lancering PerformanceVPS

Meer info
Hulp nodig?

    Sorry, we konden geen resultaten vinden voor jouw zoekopdracht.

    Een Nginx webserver installeren in Ubuntu of Debian

    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
    • In de voorbeelden gebruiken wij 'Example.com' als voorbeeld hier plaats je je eigen domeinnaam.
    • Voer de stappen in dit artikel uit als root user, of gebruik sudo.

     

    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:

    nginx status

    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. 

    VPS-Firewall IP poort


     

     

    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.

    Kom je er niet uit?

    Ontvang persoonlijke hulp van onze supporters

    Neem contact op