Introductie
Laravel is een webapplicatie-framework dat wordt geleverd met een verzameling ingebouwde tools en hulpmiddelen om moderne PHP applicaties te ontwikkelen. Het staat bekend om zijn betrouwbaarheid, prestaties, efficiëntie, modulariteit en veiligheid. Vanwege de verschillende ingebouwde functies heeft Laravel een ongelooflijke groei in populariteit doorgemaakt. Veel ontwikkelaars stappen over op Laravel om het webontwikkelingsproces te stroomlijnen.
Deze gids laat zien hoe je een nieuwe Laravel-applicatie installeert en configureert op Ubuntu 20.04.
Laravel op Ubuntu
We gebruiken Composer, een PHP-dependency manager, om Laravel te downloaden en te beheren. Om Composer te installeren, volg je de instructies van deze handleiding. De Nginx-server zal de applicatie serveren. Het zal een demo Laravel-applicatie opzetten met behulp van de MySQL database.
Deze gids vereist enkele voorwaarden. We gaan ervan uit dat je al een correct geconfigureerde Ubuntu 20.04-server up and running hebt. Ter referentie is hier een snelle gids over het opzetten van een Ubuntu-server. Het is ook vereist om de LEMP (Linux, Nginx, MySQL en PHP) stack geïnstalleerd en geconfigureerd te hebben. We hebben een gedetailleerde gids over het installeren en configureren van de LEMP-stack.
Omdat we verschillende pakketten gaan installeren, zijn root-rechten vereist. In het geval van Ubuntu is de root-gebruiker standaard uitgeschakeld. We hebben dus toegang nodig tot een niet-root-gebruiker met sudo privileges. Hier is hoe je sudo-rechten verleent aan andere gebruikers.
Step 1 – PHP-modules installeren
Voordat we Laravel installeren, hebben we enkele belangrijke PHP-modules nodig voor het framework. Deze modules zijn direct beschikbaar via de standaard pakketbronnen van Ubuntu. Deze modules ondersteunen functies zoals karaktercodering, XML en precisiewiskunde.
Werk eerst de APT cache bij en installeer de pakketten:
|
1 2 |
$ sudo apt update $ sudo apt install php-mbstring php-xml php-bcmath |
Step 2 – Een database maken voor de applicatie
Om de functionaliteit van Laravel te demonstreren, maken we een reislijst-applicatie die de lijst met plaatsen toont die de gebruiker wil bezoeken, en een lijst met plaatsen die al zijn bezocht. We kunnen deze gegevens opslaan in een tabel 'places' met de velden name (locatienaam) en visited (gemarkeerd als visited of nonvisited). Een extra veld zal een unieke identiteit bevatten voor elk item. Om de gegevens te verbinden met onze Laravel-applicatie, maken we een speciale MySQL-gebruiker aan en verlenen we deze gebruiker volledige rechten op de database travellist.
De native MySQL PHP-bibliotheek mysqlnd ondersteunt niet langer caching_sha2_authentication. Daarom moeten we onze database instellen met de authenticatiemethode mysql_native_password. Open de MySQL-shell als de root:
|
1 |
$ sudo mysql |
Maak vervolgens een nieuwe database aan met de naam travellist:
|
1 |
> CREATE DATABASE travellist; |
Maak daarna een speciale gebruiker aan travellist_user met een geschikt wachtwoord:
|
1 |
> CREATE USER 'travellist_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password123'; |
Geef de gebruiker travellist_user volledige rechten op de database travellist. Dit voorkomt ook dat de gebruiker andere databases op de server kan maken of wijzigen:
|
1 |
> GRANT ALL ON travellist.* TO 'travellist_user'@'%'; |
Sluit de MySQL-shell af:
|
1 |
> exit |
Laten we de nieuwe gebruiker testen. Het volgende commando logt in op de MySQL-shell als de gebruiker travellist_user. De vlag -p zal om het gebruikerswachtwoord vragen:
|
1 |
$ mysql -u travellist_user -p |
Toon alle beschikbare databases. Zoals eerder geconfigureerd, zou dit alleen travellist en information_schema moeten tonen:
|
1 |
> SHOW DATABASES; |
Vervolgens moeten we de datatabel places aanmaken. Voer het volgende MySQL-statement uit:
|
1 2 3 4 5 6 |
> CREATE TABLE travellist.places ( id INT AUTO_INCREMENT, name VARCHAR(255), visited BOOLEAN, PRIMARY KEY(id) ); |
Laten we de tabel vullen met wat voorbeeldgegevens:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
> INSERT INTO travellist.places (name, visited) VALUES ("Tokyo", false), ("Delhi", true), ("Shanghai", false), ("Moscow", true), ("Lisbon", true), ("Denver", false), ("Berlin", false), ("Istanbul", false), ("Rio", true), ("Beijing", false), ("Helsinki", false); |
Laten we kijken of de gegevens succesvol zijn opgeslagen in de database:
|
1 |
> SELECT * FROM travellist.places; |
Zoals we kunnen zien, is de testtabel gevuld met geldige gegevens. We kunnen nu de MySQL-shell afsluiten:
|
1 |
> exit |
Step 3 – Een nieuwe Laravel-app maken
We zijn nu klaar om een nieuwe Laravel-applicatie te maken met behulp van Composer. We gebruiken travellist als een demo-applicatie. Deze applicatie toont de lijst met locaties uit de MySQL-database, wat de basisconfiguratie van Laravel demonstreert. Ga naar de thuismap van de gebruiker:
|
1 |
$ cd ~ |
De volgende stap is het maken van een nieuwe Laravel-applicatie met behulp van Composer. Dit zal een specifieke map maken genaamd travellist met een minimale Laravel-applicatie met standaardinstellingen. Voer het volgende commando uit:
|
1 |
$ composer create-project --prefer-dist laravel/laravel travellist |
Zodra de app is opgezet, kunnen we controleren of alle componenten succesvol zijn geïnstalleerd:
|
1 2 |
$ cd travellist $ php artisan |
De uitvoer bevestigt dat alle applicatiebestanden op hun plaats staan. Het zorgt er ook voor dat alle Laravel-opdrachtregelprogramma's functioneel zijn. Er is echter nog steeds app-configuratie nodig om de database in te stellen en een paar extra aanpassingen te doen.
Step 4 – Laravel-configuratie
Alle Laravel-configuratiebestanden zijn opgeslagen in een map genaamd config binnen de hoofdmap van de app. Bovendien maakt het installeren van Laravel met Composer ook een omgevingsbestand aan. Dit bevat verschillende instellingen die specifiek zijn voor de huidige omgeving. Waarden die hierin worden gedeclareerd, hebben voorrang op de waarden die zijn ingesteld in reguliere configuratiebestanden in config.
Elke unieke installatie vereist een eigen omgevingsbestand om waarden te definiëren zoals databaseverbindingsinstellingen, app-URL, debug-opties, enz. Let op dat het omgevingsbestand gevoelige informatie bevat zoals database-inloggegevens, beveiligingssleutels, enz. Daarom wordt het ten zeerste aanbevolen om dit bestand nooit openbaar te delen.
Open het omgevingsbestand met een teksteditor:
|
1 |
$ nano .env |
Hier is een voorbeeld van een omgevingscode:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
APP_NAME=TravelList APP_ENV=development APP_KEY=<unique_app_key> APP_DEBUG=true APP_URL=http://<domain_or_ip> LOG_CHANNEL=stack DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=travellist DB_USERNAME=travellist_user DB_PASSWORD=password123 |
Laten we de waarden nader bekijken:
APP_NAME: Dit veld beschrijft de naam van de applicatie. Deze naam zal worden gebruikt voor meldingen en berichten.APP_ENV: De huidige omgeving van de applicatie.APP_KEY: Deze sleutel wordt automatisch gegenereerd bij het installeren van Laravel via Composer. Het wordt gebruikt om salts en hashes te genereren. Het is niet nodig om deze te wijzigen.APP_DEBUG: Schakelaar voor debug-modus. Wanneer ingeschakeld, toont het debug-informatie aan de clientzijde.APP_URL: Basis-URL van de app. Deze wordt ook gebruikt voor het genereren van applicatielinks.DB_DATABASE: De naam van de database. In dit geval is dit de specifieke database die we hebben gemaakt.DB_USERNAME: De gebruikersnaam om verbinding te maken met de database.DB_PASSWORD: Het wachtwoord om verbinding te maken met de database.
Sla het bestand op en sluit de editor zodra de wijzigingen zijn aangebracht.
Step 5 – Nginx instellen
We hebben Laravel met succes geïnstalleerd in een lokale map van de thuismap van de gebruiker. Deze configuratie werkt prima voor de lokale ontwikkelomgeving. Het wordt echter niet aanbevolen om deze te implementeren voor webservers die openstaan voor het openbare internet.
Onze volgende stap is om de applicatie te verplaatsen naar /var/www omdat dit de gebruikelijke locatie is voor web-apps die op Nginx draaien. Gebruik het mv commando om travellist te verplaatsen naar /var/www/travellist:
|
1 |
$ sudo mv ~/travellist /var/www/travellist |
Geef vervolgens de gebruiker schrijftoegang tot de storage en cache mappen. Dit zijn de locaties van door de Laravel-app gegenereerde bestanden:
|
1 2 |
$ sudo chown -R www-data.www-data /var/www/travellist/storage $ sudo chown -R www-data.www-data /var/www/travellist/bootstrap/cache |
De applicatiebestanden staan nu op hun plaats. We moeten Nginx echter vertellen om de inhoud te serveren. Maak een nieuw configuratiebestand voor de virtuele host:
|
1 |
$ sudo nano /etc/nginx/sites-available/travellist |
Hier is een voorbeeld van aanbevolen instellingen voor een Laravel-applicatie die op Nginx draait:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
server { listen 80; server_name <domain_or_ip>; root /var/www/travellist/public; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff"; index index.html index.htm index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } error_page 404 /index.php; location ~ \.php$ { fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } } |
Tijd om het nieuwe configuratiebestand voor de virtuele host te activeren. Maak een symbolische koppeling naar de sites-enabled map:
|
1 |
$ sudo ln -s /etc/nginx/sites-available/travellist /etc/nginx/sites-enabled/ |
Het volgende Nginx-commando test de configuratiebestanden op syntaxisfouten:
|
1 |
$ sudo nginx -t |
Herlaad vervolgens Nginx:
|
1 |
$ sudo systemctl reload nginx |
De applicatie zou nu beschikbaar moeten zijn via de domeinnaam of het IP-adres (zoals gedefinieerd door de server_name richtlijn):
Stap 6 – De hoofdpagina aanpassen
Nu de Laravel-applicatie is geconfigureerd, kunnen we ermee aan de slag. Ter demonstratie is het tijd om een voorbeeldpagina te maken die de voorbeeldgegevens uit de databasetabel places toont. Open eerst het hoofdroutebestand in een teksteditor:
|
1 |
$ nano routes/web.php |
Het bestand bevat standaard al wat inhoud. Hier worden routes gedefinieerd met behulp van de statische methode (Route::get). Deze ontvangt een path en een callback functie als argumenten.
Vervang de code door de volgende:
|
1 2 3 4 5 6 7 |
<?php use Illuminate\Support\Facades\DB; Route::get('/', function () { $visited = DB::select('select * from places where visited = ?', [1]); $togo = DB::select('select * from places where visited = ?', [0]); return view('travellist', ['visited' => $visited, 'togo' => $togo ] ); }); |
Sla het bestand op en sluit de editor. Vervolgens maken we de lay-out om de resultaten van de databasequery aan de gebruiker te tonen. Maak een nieuw bestand aan binnen resource/views:
|
1 |
$ nano resources/views/travellist.blade.php |
In de volgende code hebben we twee lijsten met plaatsen gemaakt, afhankelijk van de waarde van visited en togo:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<html> <head> <title>Reislijst</title> </head> <body> <h1>Mijn reis-bucketlist</h1> <h2>Te bezoeken plaatsen</h2> <ul> @foreach ($togo as $newplace) <li>{{ $newplace->name }}</li> @endforeach </ul> <h2>Al bezocht</h2> <ul> @foreach ($visited as $place) <li>{{ $place->name }}</li> @endforeach </ul> </body> </html> |
Sla het bestand op en sluit de editor. Ga nu opnieuw naar de pagina van de web-app:
Voilà! We hebben nu een functionele Laravel-applicatie die een MySQL-database gebruikt voor de inhoud.
Tot slot
In deze handleiding hebben we gedemonstreerd hoe je een Laravel-applicatie opzet bovenop de LEMP-stack die draait op een Ubuntu 20.04-server. We hebben ook laten zien hoe je de standaardroute kunt aanpassen om database-inhoud op te vragen en resultaten weer te geven in een aangepaste view. Raadpleeg voor meer informatie over Laravel de officiële documentatie over views, routes, en database-ondersteuning.
De installatie in deze handleiding is uitgevoerd op een standalone virtuele machine. Je kunt echter ook Laravel deployen op de LEMP-stacks op Docker.
Veel computerplezier!









Reacties
Nog geen reacties. Wees de eerste.