Je bepaalt welke diensten wij mogen inschakelen voor analyse, personalisatie en externe inhoud.
We gebruiken cookies en vergelijkbare technologieën op onze website om inhoud te personaliseren, externe media te integreren en het gebruik van afzonderlijke onderdelen beter te begrijpen.
Noodzakelijke cookies
Deze vermeldingen waarborgen basisfuncties zoals beveiliging, stabiliteit en formulierverwerking.
Optionele secties
AnalysesMarketingPersonalisatieExterne media
Gegevensverwerking kan plaatsvinden met je toestemming of op basis van gerechtvaardigde belangen. In de cookie-instellingen kun je elke optionele categorie weigeren of afzonderlijk toestaan.
Sommige diensten verwerken persoonsgegevens in derde landen. Met je toestemming accepteer je ook deze doorgifte. Meer informatie vind je in onze privacyverklaring.
Je kunt je selectie later op elk moment opnieuw openen en aanpassen. · 1.0.2
Een LAMP-stack instellen op een Linux-server – klassieke PHP-applicaties hosten
Ontdek hoe je efficiënt een LAMP-stack instelt voor het hosten van dynamische PHP-websites op een Linux VPS → Lees meer
10 november 20267 min leestijd1 Weergaven0 nuttig
Inleiding
De LAMP-stack is een populaire combinatie van open-sourcesoftware die samen wordt ingericht om eenvoudig dynamische websites te hosten, met speciale aandacht voor PHP-websites en -apps. Het acroniem staat voor: Linux als besturingssysteem, Apache als webserver, MySQL als database en PHP voor de verwerking. In deze handleiding laten we je zien hoe je een LAMP-stack instelt op een Linux VPS, met een gedetailleerde uitleg in stappen en een voorbeeld van een takenlijstwebsite.
FAQ
Veelgestelde vragen
Linux als besturingssysteem, Apache als webserver, MySQL als database en PHP voor de verwerking: een populaire combinatie voor het hosten van dynamische PHP-websites.
LAMP gebruikt Apache als webserver, terwijl LEMP Nginx (Engine x) gebruikt. De rest van de combinatie (Linux, MySQL, PHP) is hetzelfde.
Voer de opdracht 'sudo apt install apache2' uit. Zorg daarna dat poort 80 (HTTP) is toegestaan in je firewall.
Ubuntu. De opdrachten zijn identiek op Debian en vergelijkbaar op andere distributies, maar de syntaxis kan iets verschillen.
Feedback
Was dit artikel nuttig?
Je feedback helpt ons inhoud beter te prioriteren en te verbeteren.
0 van 0 Gebruikers vonden dit artikel nuttig.
Persoonlijke hulp
Is de handleiding niet voldoende?
Onze ZAP-support kent je product — beschrijf kort je vraag en wij helpen je persoonlijk verder.
Zappy kent deze handleiding en antwoordt je direct in de chat.
Navigatie
VPS
Voorbereiding
Maak eerst via SSH verbinding met je server. Weet je niet hoe dat moet? Bekijk dan onze handleiding Eerste toegang (SSH).
In deze handleiding gebruiken we Ubuntu als Linux-distributie. De opdrachten zijn identiek op Debian en vergelijkbaar op andere distributies, maar de syntaxis kan iets verschillen. Zorg ervoor dat er een besturingssysteem is geïnstalleerd en dat je via SSH bent verbonden.
Zoals altijd werk je vóór de installatie alle pakketten bij met de volgende opdracht:
Gefeliciteerd, je hebt de LAMP-stack met succes geïnstalleerd en ingesteld! Als volgende stap raden we dringend aan een domein en een SSL-certificaat in te stellen, zodat je website veilig bereikbaar is. Bekijk daarvoor onze Certbot-handleiding, met aandacht voor de Apache-plugin, en volg de interactieve configuratie om snel een certificaat voor je domein te verkrijgen.
Heb je vragen of problemen? Ons supportteam staat elke dag voor je klaar! 🙂
Serverhosting vanaf € 2,49 / maand, direct online, inclusief DDoS-bescherming.
Je kunt de installatie eenvoudig opdelen in de belangrijkste onderdelen van de LAMP-stack: eerst de Apache-webserver, daarna de MySQL-database en tot slot PHP. Tijdens de installatie richten we een testwebsite in die is geschreven in PHP en toegang heeft tot de MySQL-database. Elke webaanvraag wordt vervolgens verwerkt en geleverd via Apache.
Apache instellen
Apache is de webserver die binnenkomende webaanvragen verwerkt en antwoorden levert. Installeer Apache met de volgende opdracht:
Code
sudo apt install apache2
Controleer na de installatie of de juiste firewallregels zijn ingesteld, zodat de webserver bereikbaar is via internet. In dit voorbeeld gebruiken we de UFW-firewall, omdat Apache daarvoor een geregistreerde applicatie heeft.
Gebruik je een andere firewall? Zorg er dan voor dat poort 80 (HTTP) is geopend. Meer informatie over firewalls in Linux vind je in onze handleiding Firewall beheren.
Schakel de UFW-firewall in en maak een regel voor SSH:
Code
# Regel voor SSH maken
sudo ufw allow OpenSSH
# UFW-firewall inschakelen
sudo ufw enable
Let op
Zorg ervoor dat je een SSH-regel hebt in de UFW-firewall! Zonder deze regel kun je na het inschakelen van de firewall geen verbinding meer maken via SSH als je de huidige sessie verliest!
Maak nu de regel voor Apache en controleer de regels:
Code
# Regel voor Apache maken
sudo ufw allow in "Apache Full"
# Status van de UFW-firewall controleren
sudo ufw status
Tip
Met ufw app list kun je bekijken welke profielen beschikbaar zijn. Apache Full betekent dat zowel HTTP (poort 80) als HTTPS (poort 443) worden toegestaan.
Je zou Apache en Apache (v6) met ALLOW moeten zien. Dat bevestigt dat de firewall goed is ingesteld. Ook eventuele andere regels, zoals die voor SSH, worden weergegeven.
Nu Apache via de firewall toegang heeft, kun je testen of Apache werkt. Open het IP-adres van je server in je browser: http://[deine_ip_adresse]
Als alles goed werkt, zie je een standaardwelkomstpagina. Zo niet, controleer dan de status met: systemctl status apache2
MySQL instellen
Installeer nu MySQL. Dit is de database waarmee je gegevens relationeel kunt opslaan. Installeer MySQL met:
Code
sudo apt install mysql-server
Na de installatie raden we aan het beveiligingsscript uit te voeren om je MySQL-server beter te beveiligen. Dit is optioneel, maar sterk aanbevolen. Start het script met:
Code
sudo mysql_secure_installation
Het script begeleidt je interactief bij de configuratie. Eerst wordt je gevraagd naar wachtwoordvalidatie. We raden aan Y te kiezen om alleen veilige wachtwoorden toe te staan en vervolgens MEDIUM (1) of STRONG (2) te selecteren.
Vervolgens wordt je gevraagd of de anonieme gebruiker moet worden verwijderd en of externe root-aanmeldingen moeten worden uitgeschakeld. We raden aan beide opties met Y te bevestigen om de beveiliging te verbeteren.
Tot slot wordt je gevraagd of de testdatabase moet worden verwijderd en of de privilegetabellen opnieuw moeten worden geladen. Ook hier raden we aan Y te kiezen.
Controleer of MySQL actief is door je aan te melden:
Code
sudo mysql -u root
Als je een welkomstbericht ziet, is alles goed gegaan. Typ quit om de MySQL-console te verlaten.
PHP instellen
Het laatste onderdeel van LAMP is PHP. De installatie is eenvoudig:
Code
sudo apt install php libapache2-mod-php php-mysql
Controleer de installatie met:
Code
php -v
Als er een versienummer wordt weergegeven, werkt PHP correct.
Tip
PHP-extensies
Voor specifieke toepassingen heb je mogelijk aanvullende PHP-extensies nodig. Je vindt een lijst met:
Code
apt search php- | less
Gebruik de pijltoetsen om te bladeren en Q om af te sluiten. Installeer een extensie met:
Code
sudo apt install [php_extension] [...]
Je kunt meerdere extensies tegelijk installeren, gescheiden door spaties.
We raden aan de volgorde van de directory-index zo aan te passen dat index.php vóór .html wordt geladen. Open het bestand:
Sla het bestand op met CTRL + X, bevestig met Y en druk op ENTER. Start Apache opnieuw:
Code
sudo systemctl restart apache2
Een testwebsite maken
Nu alle LAMP-onderdelen zijn geïnstalleerd, maken we een testwebsite om te laten zien hoe alles samenwerkt. Dit is optioneel, maar helpt je te begrijpen hoe je je eigen websites kunt bouwen.
We maken een kleine takenlijst in PHP die items ophaalt uit een MySQL-database en weergeeft. Als voorbeelddomein gebruiken we zapdocs.example.com. Je moet een DNS-A-record voor het domein aanmaken dat verwijst naar het IP-adres van je server. Raadpleeg onze handleiding Domeinrecords voor hulp.
Info
Je kunt ook zonder domein werken en [your_domain] vervangen door een willekeurige naam. Je maakt dan verbinding via het IP-adres. In dat geval moet je wel de regel ServerName verwijderen uit het virtuele-hostbestand.
Apache configureren
Websites staan meestal in de map /var/www. Standaard bevat deze map een html-map met een standaardpagina. Als je meerdere websites hebt, raden we aan voor elk domein een aparte map aan te maken.
Maak een map voor je domein:
Code
sudo mkdir /var/www/[your_domain]
Maak een nieuw configuratiebestand voor de virtuele host:
Sla het bestand op en sluit af met CTRL + X, Y en ENTER. Controleer de syntaxis:
Code
sudo apache2ctl configtest
Schakel de nieuwe virtuele host in:
Code
sudo a2ensite [your_domain]
Info
Geen domein gebruikt
Gebruik je geen domein? Verwijder of becommentarieer dan de regel ServerName (met #) en schakel de standaardhost uit:
Code
sudo a2dissite 000-default
Start Apache opnieuw:
Code
sudo systemctl restart apache2
De website maken
De map is momenteel leeg, dus we maken nu de takenlijstwebsite.
De database voorbereiden
Meld je aan bij MySQL:
Code
sudo mysql -u root
Maak een nieuwe database en tabel aan:
Code
# Database maken
CREATE DATABASE todowebsite;
# Database selecteren
USE todowebsite;
# Tabel maken
CREATE TABLE todoitems (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
is_completed BOOLEAN DEFAULT FALSE,
creation_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Voeg enkele voorbeelditems toe:
Code
INSERT INTO todoitems (name, is_completed) VALUES ('Create ZAP-Docs Guide', 0);
INSERT INTO todoitems (name, is_completed) VALUES ('Buy a ZAP-Hosting Server', 1);
INSERT INTO todoitems (name, is_completed) VALUES ('Join ZAP-Hosting Discord', 0);
INSERT INTO todoitems (name, is_completed) VALUES ('Have a great day!', 0);
Maak een aparte gebruiker aan voor de website:
Code
# Gebruiker maken
# Vervang [your_password] door je wachtwoord
CREATE USER todo@localhost IDENTIFIED BY '[your_password]';
# Machtigingen toekennen (kopieer als één opdracht)
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER
ON todowebsite.*
TO todo@localhost;
# Machtigingen opnieuw laden
FLUSH PRIVILEGES;
Verlaat de MySQL-console met quit.
PHP-websitebestanden
Maak het PHP-bestand voor de takenlijstpagina:
Code
sudo nano /var/www/[your_domain]/index.php
Voeg de volgende code toe. Deze maakt verbinding met de database en toont de takenlijstitems.
Belangrijk
Vervang [your_password] door het wachtwoord dat je voor de gebruiker todo hebt ingesteld.
Code
<?php
// MySQL-Verbindung vorbereiten
$servername = "localhost";
$username = "todo";
$password = "[your_password]";
$dbname = "todowebsite";
// Verbindung erstellen
$conn = new mysqli($servername, $username, $password, $dbname);
// Verbindung prüfen, bei Fehler abbrechen
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// SQL-Abfrage, um Einträge abzurufen
$sql = "SELECT id, name, is_completed, creation_date FROM todoitems ORDER BY creation_date DESC";
$result = $conn->query($sql);
?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>To-Do Liste</title>
</head>
<body>
<h1>Coole To-Do Liste :D</h1>
<p>Für unseren coolen ZAP-Hosting Guide: <a href="https://zap-hosting.com/guides/docs/vserver-linux-lamp-stack">https://zap-hosting.com/guides/docs/vserver-linux-lamp-stack</a></p>
<ul>
<?php
// Prüfen, ob Ergebnisse vorhanden sind
if ($result->num_rows > 0) {
// Durch alle Einträge iterieren
foreach ($result as $entry) {
echo "<li>";
// Name anzeigen, htmlspecialchars schützt vor XSS
echo htmlspecialchars($entry["name"]);
// Status anzeigen
if ($entry["is_completed"]) {
echo " <strong>(Erledigt)</strong>";
} else {
echo " <strong>(Offen)</strong>";
}
// Erstellungsdatum anzeigen
echo " - Erstellungsdatum: " . htmlspecialchars($entry['creation_date']);
echo "</li>";
}
} else {
// Falls keine Einträge vorhanden sind
echo "<li>Keine To-Do-Einträge gefunden.</li>";
}
?>
</ul>
</body>
</html>
<?php
// Verbindung schließen
$conn->close();
?>
Sla het bestand op en sluit af met CTRL + X, Y en ENTER.
De website testen
Je hebt met succes een testwebsite met een takenlijst ingesteld die alle LAMP-onderdelen gebruikt!
Ga nu naar het domein (HTTP/poort 80) dat je in de virtuele host hebt ingesteld, bijvoorbeeld zapdocs.example.com. Het resultaat zou er als volgt uit moeten zien: