LAMP stack (Linux, Apache, MySQL & PHP) installeren op een VPS

LAMP stack (Linux, Apache, MySQL & PHP) installeren op een VPS

Geschreven op 16-11-2020 door Robert Van der heide
LAMP stack (Linux, Apache, MySQL & PHP) installeren op een VPS

In deze how-to gaan we stap-voor-stap de LAMP stack op een server installeren. LAMP staat voor Linux, Apache, MySQL en PHP, en is een veel gebruikte basis om een website of webapplicatie te hosten op een VPS..

Voorbereiding

Allereerst hebben we een server nodig waar we de LAMP stack op gaan installeren. Voor deze how-to heb ik een Ubuntu 20.04 VPS bij Cloud Provider aangemaakt. Nadat de server is aangemaakt, log je via SSH in op de server.

Stap 1: Apache webserver installeren

We beginnen met het installeren van de Apache webserver. Hiervoor updaten we eerst de packagelist, waarna we Apache installeren met de onderstaande commando's:

sudo apt update
sudo apt install apache2

Vervolgens staan we het verkeer naar de Apache webserver in de firewall toe met:

sudo ufw allow in "Apache"

Stap 2: MySQL database installeren

De tweede stap is het installeren van de MySQL database. Dit kan met het volgende SSH commando:

sudo apt install mysql-server

Ubuntu heeft een handig script waarmee je een MySQL database-installatie in 1x kunt beveiligen. Eerder gaven we al 5 beginnerstips om de beveiliging van je Ubuntu VPS beter in te stellen. Het helpt je om wachtwoorden in te stellen, toegang van buiten af voor MySQL af te schermen, en om test-gebruikers en -databases te verwijderen:

sudo mysql_secure_installation

Stap 3: PHP installeren

Nu ontbreekt alleen nog de P van de LAMP stack: PHP, welke we nu gaan installeren. Dit doe je als volgt:

sudo apt install php libapache2-mod-php php-mysql

Hiermee wordt PHP geinstalleerd, samen met de PHP module voor Apache en de MySQL module voor PHP - zodat PHP scripts verbinding kunnen maken met MySQL databases.

Stap 4: Virtual host aanmaken

Nu staat de LAMP stack klaar voor gebruik. Laten we nu een website aanmaken, wat een "virtual host" heet in Apache. Allereerst gaan we een mapje aanmaken waarin de bestanden van de website straks kunnen plaatsen:

sudo mkdir /var/www/je-website

Vervolgens gaan we de website toevoegen aan de Apache configuratie als nieuwe virtual host. Hiervoor maken we allereerst een configuratie-bestandje aan:

sudo nano /etc/apache2/sites-available/je-website.conf

In dit nieuwe configuratie-bestandje kopieren en plakken we de volgende inhoud:

<VirtualHost *:80>
    ServerName je-domeinnaam.nl
    ServerAlias www.je-domeinnaam.nl
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/je-website
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Als laatste stap gaan we de virtual host activeren. Dit gaat als volgt:

sudo a2ensite je-website

Stap 5: Test-pagina online zetten

Nu dat alles geinstalleerd is en de virtual host geactiveerd is, kunnen we een test-pagina online zetten om te checken of alles goed werkt. We gaan hiervoor een index.html bestand met de volgende inhoud plaatsen in het mapje wat we eerder in deze how-to hebben aangemaakt:

<html>
  <head>
    <title>Titel van je website</title>
  </head>
  <body>
    <h1>Het werkt!</h1>
    <p>Deze pagina staat op je LAMP stack bij Cloud Provider!</p>
  </body>
</html>

Als je de vervolgens je domeinnaam qua DNS naar het IP adres van je server laat verwijzen, kun je deze test-pagina zien door naar je domeinnaam te gaan.

Naast HTML-pagina's, kun je ook gebruik maken van PHP pagina's en scripts.

Stap 6: Test-database aanmaken

Als laatste stap gaan we een test-database aanmaken in MySQL. Hiervoor loggen we eerst in op de MySQL command prompt met:

sudo mysql

Dan maken we een nieuwe database aan:

CREATE DATABASE test_database;

Dan maken we een gebruiker aan:

CREATE USER 'test_gebruiker'@'%' IDENTIFIED WITH mysql_native_password BY 'wachtwoord';

En als laatst kennen we deze gebruiker toe aan de zojuist aangemaakte database, zodat we de gekozen gebruikersnaam en wachtwoord kunnen inloggen op de database:

GRANT ALL ON test_database.* TO 'test_gebruiker'@'%';

Klaar! Nu kun je in je PHP script met deze logingegevens verbinding maken met deze test-database.