Einführung
Laravel ist ein Webanwendungs-Framework, das mit einer Reihe von integrierten Tools und Ressourcen geliefert wird, um moderne PHP-Anwendungen zu entwickeln. Es ist bekannt für seine Zuverlässigkeit, Leistung, Effizienz, Modularität und Sicherheit. Aufgrund seiner verschiedenen integrierten Funktionen hat Laravel ein unglaubliches Wachstum an Beliebtheit erfahren. Viele Entwickler nutzen Laravel, um den Webentwicklungsprozess zu rationalisieren.
Diese Anleitung zeigt, wie Sie eine neue Laravel-Anwendung auf Ubuntu 20.04 installieren und konfigurieren.
Laravel auf Ubuntu
Wir werden Composer, einen PHP-Abhängigkeitsmanager, verwenden, um Laravel herunterzuladen und zu verwalten. Um Composer zu installieren, folgen Sie den Anweisungen dieses Tutorials. Der Nginx-Server wird die Anwendung bereitstellen. Er wird eine Demo-Laravel-Anwendung unter Verwendung der MySQL-Datenbank einrichten.
Diese Anleitung setzt einige Voraussetzungen voraus. Wir gehen davon aus, dass Sie bereits einen ordnungsgemäß konfigurierten Ubuntu 20.04-Server in Betrieb haben. Als Referenz finden Sie hier eine Kurzanleitung zur Einrichtung eines Ubuntu-Servers. Es ist außerdem erforderlich, dass der LEMP-Stack (Linux, Nginx, MySQL und PHP) installiert und konfiguriert ist. Wir haben eine detaillierte Anleitung zur Installation und Konfiguration des LEMP-Stacks.
Da wir verschiedene Pakete installieren werden, sind Root-Rechte erforderlich. Im Fall von Ubuntu ist der Root-Benutzer standardmäßig deaktiviert. Daher benötigen wir Zugriff auf einen Nicht-Root-Benutzer mit sudo-Rechten. Hier ist beschrieben, wie Sie anderen Benutzern sudo-Rechte gewähren.
Schritt 1 – Installieren von PHP-Modulen
Vor der Installation von Laravel benötigen wir einige wichtige PHP-Module für das Framework. Diese Module sind direkt in den Standard-Paketquellen von Ubuntu verfügbar. Diese Module unterstützen Funktionen wie Zeichenkodierung, XML und Präzisionsmathematik.
Aktualisieren Sie zuerst den APT-Cache und installieren Sie die Pakete:
|
1 2 |
$ sudo apt update $ sudo apt install php-mbstring php-xml php-bcmath |
Schritt 2 – Erstellen einer Datenbank für die Anwendung
Um die Funktionalität von Laravel zu demonstrieren, erstellen wir eine Reiselisten-Anwendung, die eine Liste der Orte anzeigt, die der Benutzer besuchen möchte, und eine Liste der Orte, die bereits besucht wurden. Wir können diese Daten in einer Tabelle namens „places“ mit den Feldern name (Name des Ortes) und visited (Markierung als visited oder nonvisited) speichern. Ein zusätzliches Feld wird eine eindeutige ID für jeden Eintrag enthalten. Um die Daten mit unserer Laravel-Anwendung zu verbinden, erstellen wir einen dedizierten MySQL-Benutzer und gewähren diesem vollen Zugriff auf die Datenbank travellist.
Die native MySQL-PHP-Bibliothek mysqlnd unterstützt caching_sha2_authentication nicht mehr. Daher müssen wir unsere database mit der Authentifizierungsmethode mysql_native_password einrichten. Greifen Sie auf die MySQL-Shell als root:
|
1 |
$ sudo mysql |
Erstellen Sie als Nächstes eine neue Datenbank namens travellist:
|
1 |
> CREATE DATABASE travellist; |
Erstellen Sie danach einen dedizierten Benutzer travellist_user mit einem geeigneten Passwort:
|
1 |
> CREATE USER 'travellist_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password123'; |
Geben Sie dem Benutzer travellist_user die vollen Rechte für die Datenbank travellist. Dies verhindert auch, dass der Benutzer andere Datenbanken auf dem Server erstellt oder ändert:
|
1 |
> GRANT ALL ON travellist.* TO 'travellist_user'@'%'; |
Beenden Sie die MySQL-Shell:
|
1 |
> exit |
Lassen Sie uns den neuen Benutzer testen. Der folgende Befehl meldet sich an der MySQL-Shell als Benutzer travellist_user an. Das Flag -p fragt nach dem Passwort des Benutzers:
|
1 |
$ mysql -u travellist_user -p |
Lassen Sie sich alle verfügbaren Datenbanken anzeigen. Wie zuvor konfiguriert, sollten nur travellist und information_schema angezeigt werden:
|
1 |
> SHOW DATABASES; |
Als Nächstes müssen wir die Datentabelle places erstellen. Führen Sie die folgende MySQL-Anweisung aus:
|
1 2 3 4 5 6 |
> CREATE TABLE travellist.places ( id INT AUTO_INCREMENT, name VARCHAR(255), visited BOOLEAN, PRIMARY KEY(id) ); |
Füllen wir die Tabelle mit einigen Beispieldaten:
|
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); |
Sehen wir nach, ob die Daten erfolgreich in der Datenbank gespeichert wurden:
|
1 |
> SELECT * FROM travellist.places; |
Wie wir sehen können, ist die Testtabelle mit gültigen Daten gefüllt. Wir können nun die MySQL-Shell verlassen:
|
1 |
> exit |
Schritt 3 – Erstellen einer neuen Laravel-App
Wir sind nun bereit, eine neue Laravel-Anwendung mit Composer zu erstellen. Wir werden travellist als Demo-Anwendung verwenden. Diese Anwendung wird die Standortliste aus der MySQL-Datenbank anzeigen und die grundlegende Konfiguration von Laravel demonstrieren. Gehen Sie in das Home-Verzeichnis des Benutzers:
|
1 |
$ cd ~ |
Der nächste Schritt besteht darin, eine neue Laravel-Anwendung mit Composer zu erstellen. Dadurch wird ein eigenes Verzeichnis travellist mit einer minimalen Laravel-Anwendung mit Standardeinstellungen erstellt. Führen Sie den folgenden Befehl aus:
|
1 |
$ composer create-project --prefer-dist laravel/laravel travellist |
Sobald die App eingerichtet ist, können wir überprüfen, ob alle Komponenten erfolgreich installiert wurden:
|
1 2 |
$ cd travellist $ php artisan |
Die Ausgabe bestätigt, dass alle Anwendungsdateien vorhanden sind. Sie stellt auch sicher, dass alle Laravel-Befehlszeilenwerkzeuge funktionsfähig sind. Es ist jedoch noch eine App-Konfiguration erforderlich, um die Datenbank einzurichten, sowie ein paar zusätzliche Anpassungen.
Schritt 4 – Laravel-Konfiguration
Alle Laravel-Konfigurationsdateien sind in einem Verzeichnis namens config im Stammverzeichnis der App gespeichert. Darüber hinaus wird bei der Installation von Laravel mit Composer auch eine Umgebungsdatei erstellt. Sie enthält verschiedene Einstellungen, die für die aktuelle Umgebung spezifisch sind. Die darin deklarierten Werte haben Vorrang vor den Werten, die in den regulären Konfigurationsdateien unter config.
jede eindeutige Installation erfordert eine eigene Umgebungsdatei, um Werte wie Datenbankverbindungseinstellungen, App-URL, Debug-Optionen usw. zu definieren. Beachten Sie, dass die Umgebungsdatei sensible Informationen wie Datenbank-Anmeldedaten, Sicherheitsschlüssel usw. enthält. Aus diesem Grund wird dringend empfohlen, diese Datei niemals öffentlich zu teilen.
Öffnen Sie die Umgebungsdatei mit einem Texteditor:
|
1 |
$ nano .env |
Hier ist ein Beispiel für einen Umgebungscode:
|
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 |
Lassen Sie uns die Werte aufschlüsseln:
APP_NAME: Dieses Feld beschreibt den Namen der Anwendung. Dieser Name wird für Benachrichtigungen und Nachrichten verwendet.APP_ENV: Die aktuelle Umgebung der Anwendung.APP_KEY: Dieser Schlüssel wird bei der Installation von Laravel über Composer automatisch generiert. Er wird zur Erstellung von Salts und Hashes verwendet. Er muss nicht geändert werden.APP_DEBUG: Umschalter für den Debug-Modus. Wenn er aktiviert ist, werden Debug-Informationen auf der Client-Seite angezeigt.APP_URL: Die Basis-URL der App. Sie wird auch zur Generierung von Anwendungslinks verwendet.DB_DATABASE: Der Name der Datenbank. In diesem Fall ist es die von uns erstellte dedizierte Datenbank.DB_USERNAME: Der Benutzername für die Verbindung zur Datenbank.DB_PASSWORD: Das Passwort für die Verbindung zur Datenbank.
Sobald die Änderungen vorgenommen wurden, speichern Sie die Datei und schließen Sie den Editor.
Schritt 5 – Einrichten von Nginx
Wir haben Laravel erfolgreich in einem lokalen Ordner des Home-Verzeichnisses des Benutzers installiert. Diese Konfiguration funktioniert gut für die lokale Entwicklungsumgebung. Es wird jedoch nicht empfohlen, sie für Webserver zu implementieren, die für das öffentliche Internet zugänglich sind.
Unser nächster Schritt ist es, die Anwendung nach /var/www zu verschieben, da dies der übliche Speicherort für Web-Apps ist, die auf Nginx laufen. Verwenden Sie den mv-Befehl, um travellist nach /var/www/travellist:
|
1 |
$ sudo mv ~/travellist /var/www/travellist |
Weisen Sie als Nächstes dem Benutzer Schreibrechte für die Ordner storage und cache zu. Dies sind die Speicherorte der von der Laravel-App generierten Dateien:
|
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 |
Die Anwendungsdateien befinden sich nun an Ort und Stelle. Wir müssen Nginx jedoch mitteilen, dass es die Inhalte bereitstellen soll. Erstellen Sie eine neue Konfigurationsdatei für den virtuellen Host:
|
1 |
$ sudo nano /etc/nginx/sites-available/travellist |
Hier ist ein Beispiel für empfohlene Einstellungen für eine Laravel-Anwendung, die auf Nginx läuft:
|
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; } } |
Es ist an der Zeit, die neue Konfigurationsdatei für den virtuellen Host zu aktivieren. Erstellen Sie einen symbolischen Link zum sites-enabled-Verzeichnis:
|
1 |
$ sudo ln -s /etc/nginx/sites-available/travellist /etc/nginx/sites-enabled/ |
Der folgende Nginx-Befehl testet die Konfigurationsdateien auf Syntaxfehler:
|
1 |
$ sudo nginx -t |
Laden Sie Nginx anschließend neu:
|
1 |
$ sudo systemctl reload nginx |
Die Anwendung sollte nun über den Domänennamen oder die IP-Adresse verfügbar sein (wie durch die Direktive server_name definiert):
Schritt 6 – Anpassen der Hauptseite
Nachdem die Laravel-Anwendung konfiguriert ist, können wir nun mit der Arbeit daran beginnen. Zur Demonstration ist es an der Zeit, eine Beispielseite zu erstellen, die die Beispieldaten aus der Datenbanktabelle places anzeigt. Öffnen Sie zuerst die Haupt-Routendatei in einem Texteditor:
|
1 |
$ nano routes/web.php |
Die Datei enthält standardmäßig bereits einige Inhalte. Hier werden Routen mithilfe der statischen Methode (Route::get) definiert. Sie empfängt einen Pfad und eine Callback -Funktion als Argumente.
Ersetzen Sie den Code durch den folgenden:
|
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 ] ); }); |
Speichern Sie die Datei und schließen Sie den Editor. Als Nächstes erstellen wir das Layout, um dem Benutzer die Ergebnisse der Datenbankabfrage anzuzeigen. Erstellen Sie eine neue Datei in resource/views:
|
1 |
$ nano resources/views/travellist.blade.php |
Im folgenden Code haben wir zwei Listen von Orten erstellt, abhängig vom Wert von visited und 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>Reiseliste</title> </head> <body> <h1>Meine Reise-Bucket-List</h1> <h2>Orte, die ich besuchen möchte</h2> <ul> @foreach ($togo as $newplace) <li>{{ $newplace->name }}</li> @endforeach </ul> <h2>Bereits besucht</h2> <ul> @foreach ($visited as $place) <li>{{ $place->name }}</li> @endforeach </ul> </body> </html> |
Speichern Sie die Datei und schließen Sie den Editor. Rufen Sie nun die Web-App-Seite erneut auf:
Voila! Wir haben nun eine funktionierende Laravel-Anwendung, die eine MySQL-Datenbank für Inhalte verwendet.
Fazit
In diesem Tutorial haben wir gezeigt, wie man eine Laravel-Anwendung auf dem LEMP-Stack einrichtet, der auf einem Ubuntu 20.04-Server läuft. Wir haben auch gezeigt, wie man die Standardroute anpasst, um Datenbankinhalte abzufragen und die Ergebnisse in einer benutzerdefinierten Ansicht anzuzeigen. Weitere Informationen zu Laravel finden Sie in der offiziellen Dokumentation zu Views, Routes, und Datenbankunterstützung.
Die Installation in diesem Tutorial wird auf einer eigenständigen virtuellen Maschine durchgeführt. Sie können jedoch auch Laravel auf LEMP-Stacks in Docker bereitstellen.
Viel Spaß beim Programmieren!









Kommentare
Noch keine Kommentare. Schreiben Sie den ersten.