Installeer de LEMP Stack (Nginx, PHP en MariaDB) op Debian 11

De LEMP Stack is een geheel van open-source software en raamwerken of bibliotheken die gebruikt worden om web toepassingen op het internet te hosten. Een stapel bestaat uit het Linux besturingssysteem, de Nginx webserver, de MariaDB/MySQL databaseserver, en de PHP taal. Een LEMP heeft goede ondersteuning van de gemeenschap en wordt gebruikt in veel hoog geschaalde web toepassingen over de hele wereld.

In dit artikel laten we je zien hoe je de LEMP stack op Debian 11 kunt installeren.

Vereisten

  • Een server met Debian 11.
  • Een geldige domeinnaam gekoppeld aan het IP van je server.
  • Een root wachtwoord is op de server ingesteld.

Aan de slag

Alvorens te beginnen is het een goed idee om je systeempakketten bij te werken tot de laatste versie. Je kunt alle pakketten bijwerken met het volgende commando:

apt-get update -y

Als je systeem bijgewerkt is, kun je verder gaan met de volgende stap.

Installeer Nginx webserver

Nginx is een gratis en open-source webserver die een event-driven architectuur volgt en in staat is meerdere verzoeken binnen één thread af te handelen. Hij is compatibel met veelgebruikte toepassingen en wordt gebruikt voor het serveren van statische bestanden.

Standaard zit het Nginx pakket in de standaard repository van Debian 11. Je kunt het installeren met het volgende commando:

apt-get install nginx -y

Als Nginx geïnstalleerd is, start dan de Nginx dienst en zet hem aan om te starten bij het herstarten van het systeem:

systemctl start nginx
systemctl enable nginx

Je kunt ook de geïnstalleerde versie van Nginx verifiëren met het volgende commando:

nginx -v

Je zou de volgende uitvoer moeten zien:

nginx version: nginx/1.18.0

Standaard draait Nginx op poort 80. Je kunt het controleren met het volgende commando:

ss -antpl | grep nginx

Je zou de volgende uitvoer moeten zien:

LISTEN 0      511          0.0.0.0:80        0.0.0.0:*    users:(("nginx",pid=44342,fd=8),("nginx",pid=44341,fd=8))
LISTEN 0      511             [::]:80           [::]:*    users:(("nginx",pid=44342,fd=9),("nginx",pid=44341,fd=9))

Je kunt de Nginx installatie ook controleren met de URL http://your-server-ip. Je zou de Nginx testpagina op de volgende pagina moeten zien:

Nginx welkomstpagina

Op dit punt is de Nginx webserver geïnstalleerd. Je kunt nu verder gaan met de volgende stap.

Installeer MariaDB Database Server

MariaDB is een open-source SQL-gebaseerde databank die gebruikt wordt om gegevens voor websites op te slaan en te beheren. Het MariaDB pakket is standaard opgenomen in de Debian 11 standaard repository. Je kunt het installeren met het volgende commando:

apt-get install mariadb-server -y

Als de MariaDB databaseserver geïnstalleerd is, start dan de MariaDB dienst en zet hem aan om te starten bij het herstarten van het systeem:

systemctl start mariadb
systemctl enable mariadb

Je kunt ook de status van de MariaDB dienst controleren met het volgende commando:

systemctl status mariadb

Je zou de volgende uitvoer moeten zien:

? mariadb.service - MariaDB 10.3.31 database server
     Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2021-08-21 04:13:25 UTC; 1min 36s ago
       Docs: man:mysqld(8)
             https://mariadb.com/kb/en/library/systemd/
   Main PID: 1838 (mysqld)
     Status: "Taking your SQL requests now..."
      Tasks: 31 (limit: 2353)
     Memory: 66.1M
     CGroup: /system.slice/mariadb.service
             ??1838 /usr/sbin/mysqld

Het is ook aan te bevelen je MariaDB installatie te beveiligen en een MariaDB root wachtwoord in te stellen. Je kunt het script mysql_secure_installation uitvoeren om de MariaDB installatie te beveiligen:

mysql_secure_installation

Je wordt gevraagd een MariaDB root wachtwoord in te stellen, anonieme gebruikers te verwijderen, root login op afstand te verbieden en de testdatabase te verwijderen, zoals hieronder te zien is:

Enter current password for root (enter for none): 
Change the root password? [Y/n] Y
New password: 
Re-enter new password: 
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Standaard draait MariaDB op poort 3306. Je kunt dat controleren met het volgende commando:

ss -antpl | grep mariadb

Je zou het volgende commando moeten zien:

LISTEN 0      80         127.0.0.1:3306      0.0.0.0:*    users:(("mariadbd",pid=12181,fd=15))

Om de MariaDB shell te verbinden, voer je het volgende commando uit:

mysql -u root -p

Geef je MariaDB root wachtwoord en druk op Enter om verbinding te maken met de MariaDB shell. Zodra je verbonden bent, zou je de volgende uitvoer moeten zien:

Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 64
Server version: 10.5.11-MariaDB-1 Debian 11

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

Voer nu het volgende commando uit om de MariaDB versie te controleren:

MariaDB [(none)]> SELECT VERSION();

Je zou de volgende uitvoer moeten zien:

+-------------------+
| VERSION()         |
+-------------------+
| 10.5.11-MariaDB-1 |
+-------------------+
1 row in set (0.001 sec)

Op dit punt is de MariaDB databaseserver geïnstalleerd en beveiligd. Je kunt nu verder gaan met de volgende stap.

Installeer de PHP taal

PHP staat voor Hypertext Preprocessor en is een scripting taal die aan de server-kant gebruikt wordt. Het is open-source, wordt door een grote gemeenschap ondersteund, en wordt gebruikt om PHP toepassingen op het internet te hosten.

Standaard is de versie van PHP die in Debian 11 beschikbaar is PHP 7.4. Je kunt PHP met andere veelgebruikte uitbreidingen installeren met het volgende commando:

apt-get install php php-fpm php-cli php-mysql php-zip php-curl php-xml -y

Zodra PHP geïnstalleerd is, controleer je de PHP versie met het volgende commando:

php -v

Je zou de volgende uitvoer moeten zien:

PHP 7.4.21 (cli) (built: Jul  2 2021 03:59:48) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.21, Copyright (c), by Zend Technologies

Maak een Virtuele Host voor Nginx

Hier maken we een map example.com voor het hosten van een PHP pagina. Je kunt die aanmaken met het volgende commando:

mkdir /var/www/html/example.com

Zet vervolgens het eigendom van de map example.com op www-data:

chown -R www-data:www-data /var/www/html/example.com

Maak vervolgens een Nginx virtual host configuratiebestand aan met het volgende commando:

nano /etc/nginx/conf.d/example.conf

Voeg de volgende regels toe:

server {

  listen 80;
  server_name example.com;

  root /var/www/html/example.com;
  index index.php;
  access_log /var/log/nginx/example_access.log;
  error_log /var/log/nginx/example_error.log;

  client_max_body_size 100M;

  location / {
    try_files $uri $uri/ /index.php$is_args$args;
  }

  location ~ \.php$ {
    try_files $uri =404;
    include fastcgi_params;
    fastcgi_pass unix:/run/php/php7.4-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }

}

Sla het bestand op en sluit het af, controleer Nginx dan op eventuele configuratiefouten met het volgende commando:

nginx -t

Je zou de volgende uitvoer moeten zien:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Herstart vervolgens de Nginx dienst om de configuratiewijzigingen toe te passen:

systemctl restart nginx

Je kunt ook de status van de Nginx dienst controleren met het volgende commando:

systemctl status nginx

Je zou de volgende uitvoer moeten zien:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2021-08-21 04:37:27 UTC; 5s ago
       Docs: man:nginx(8)
   Main PID: 4378 (nginx)
      Tasks: 2 (limit: 2353)
     Memory: 6.2M
     CGroup: /system.slice/nginx.service
             ??4378 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??4379 nginx: worker process

Aug 21 04:37:27 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server...
Aug 21 04:37:27 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.

Verifieer PHP installatie op Nginx

Vervolgens moet je een voorbeeld PHP bestand maken om over de Nginx webserver te serveren. Je kunt een phpinfo.php bestand maken binnen je example.com directory:

nano /var/www/html/example.com/phpinfo.php

Voeg de volgende regel toe:

<?php phpinfo(); ?>

Bewaar en sluit het bestand, open dan je web browser en open je PHP pagina met de URL http://example.com/phpinfo.php. Je zou je PHP pagina in het volgende scherm moeten zien:

Conclusie

In de bovenstaande gids hebben we uitgelegd hoe je de LEMP stack op Debian 11 kunt installeren. Je kunt nu beginnen met het hosten van je eerste website met de LEMP stack. Voel je vrij me te vragen als je vragen hebt.