Wprowadzenie
Laravel to framework aplikacji internetowych, który jest wyposażony w zestaw wbudowanych narzędzi i zasobów do tworzenia nowoczesnych aplikacji PHP . Jest znany ze swojej niezawodności, wydajności, efektywności, modułowości i bezpieczeństwa. Ze względu na różne wbudowane funkcje, Laravel odnotował niesamowity wzrost popularności. Wielu programistów decyduje się na Laravela, aby usprawnić proces tworzenia stron internetowych.
Ten przewodnik pokaże, jak zainstalować i skonfigurować nową aplikację Laravel na systemie Ubuntu 20.04.
Laravel na Ubuntu
Użyjemy Composer, menedżera zależności PHP, do pobrania i zarządzania Laravelem. Aby zainstalować Composera, postępuj zgodnie z instrukcjami w tym samouczku. Serwer Nginx będzie obsługiwał aplikację. Utworzy on demonstracyjną aplikację Laravel przy użyciu bazy danych MySQL.
Ten przewodnik wymaga spełnienia pewnych warunków wstępnych. Zakładamy, że masz już poprawnie skonfigurowany i uruchomiony serwer Ubuntu 20.04. Dla odniesienia, oto krótki przewodnik dotyczący konfiguracji serwera Ubuntu. Wymagane jest również posiadanie zainstalowanego i skonfigurowanego stosu LEMP (Linux, Nginx, MySQL i PHP). Mamy szczegółowy przewodnik na temat instalacji i konfiguracji stosu LEMP.
Ponieważ będziemy instalować różne pakiety, wymagane są uprawnienia roota. W przypadku Ubuntu użytkownik root jest domyślnie wyłączony. Dlatego potrzebujemy dostępu do użytkownika innego niż root z uprawnieniami sudo. Oto jak nadać uprawnienia sudo innym użytkownikom.
Krok 1 – Instalacja modułów PHP
Przed zainstalowaniem Laravela potrzebujemy kilku ważnych modułów PHP dla tego frameworka. Moduły te są bezpośrednio dostępne w domyślnych repozytoriach pakietów Ubuntu. Obsługują one funkcje takie jak kodowanie znaków, XML i matematyka precyzyjna.
Najpierw zaktualizuj pamięć podręczną APT i zainstaluj pakiety:
|
1 2 |
$ sudo apt update $ sudo apt install php-mbstring php-xml php-bcmath |
Krok 2 – Tworzenie bazy danych dla aplikacji
Aby zademonstrować funkcjonalność Laravela, stworzymy aplikację z listą podróży, która pokazuje listę miejsc, które użytkownik chciałby odwiedzić, oraz listę miejsc, które zostały już odwiedzone. Możemy zapisać te dane w tabeli place z polami name (nazwa lokalizacji) oraz visited (oznaczające jako visited lub nonvisited). Dodatkowe pole będzie zawierać unikalny identyfikator dla każdego wpisu. Aby połączyć dane z naszą aplikacją Laravel, utworzymy dedykowanego użytkownika MySQL i nadamy mu pełne uprawnienia do bazy danych travellist.
Natywna biblioteka PHP dla MySQL mysqlnd nie obsługuje już caching_sha2_authentication. Dlatego musimy skonfigurować naszą bazę danych z metodą uwierzytelniania mysql_native_password. Uzyskaj dostęp do powłoki MySQL jako użytkownik root:
|
1 |
$ sudo mysql |
Następnie utwórz nową bazę danych o nazwie travellist:
|
1 |
> CREATE DATABASE travellist; |
Następnie utwórz dedykowanego użytkownika travellist_user z odpowiednim hasłem:
|
1 |
> CREATE USER 'travellist_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password123'; |
Nadaj użytkownikowi travellist_user pełne uprawnienia do bazy danych travellist. Uniemożliwi to również użytkownikowi tworzenie i modyfikowanie jakichkolwiek innych baz danych na serwerze:
|
1 |
> GRANT ALL ON travellist.* TO 'travellist_user'@'%'; |
Wyjdź z powłoki MySQL:
|
1 |
> exit |
Przetestujmy nowego użytkownika. Poniższe polecenie zaloguje się do powłoki MySQL jako użytkownik travellist_user. Flaga -p poprosi o hasło użytkownika:
|
1 |
$ mysql -u travellist_user -p |
Wyświetl wszystkie dostępne bazy danych. Zgodnie z wcześniejszą konfiguracją, powinny pokazać się tylko travellist oraz information_schema:
|
1 |
> SHOW DATABASES; |
Następnie musimy utworzyć tabelę danych places. Uruchom następujące zapytanie MySQL:
|
1 2 3 4 5 6 |
> CREATE TABLE travellist.places ( id INT AUTO_INCREMENT, name VARCHAR(255), visited BOOLEAN, PRIMARY KEY(id) ); |
Zapełnijmy tabelę przykładowymi danymi:
|
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); |
Zobaczmy, czy dane zostały pomyślnie zapisane w bazie danych:
|
1 |
> SELECT * FROM travellist.places; |
Jak widać, tabela testowa jest zapełniona prawidłowymi danymi. Możemy teraz wyjść z powłoki MySQL:
|
1 |
> exit |
Krok 3 – Tworzenie nowej aplikacji Laravel
Jesteśmy teraz gotowi do utworzenia nowej aplikacji Laravel za pomocą Composera. Użyjemy travellist jako aplikacji demonstracyjnej. Aplikacja ta wyświetli listę lokalizacji z bazy danych MySQL, demonstrując podstawową konfigurację Laravela. Przejdź do katalogu domowego użytkownika:
|
1 |
$ cd ~ |
Kolejnym krokiem jest utworzenie nowej aplikacji Laravel za pomocą Composera. Spowoduje to utworzenie dedykowanego katalogu travellist z podstawową wersją aplikacji Laravel z domyślnymi ustawieniami. Uruchom następujące polecenie:
|
1 |
$ composer create-project --prefer-dist laravel/laravel travellist |
Po utworzeniu aplikacji możemy zweryfikować, czy wszystkie komponenty zostały pomyślnie zainstalowane:
|
1 2 |
$ cd travellist $ php artisan |
Dane wyjściowe potwierdzają, że wszystkie pliki aplikacji są na swoim miejscu. Zapewniają również, że wszystkie narzędzia wiersza poleceń Laravela działają. Wymaga to jednak jeszcze konfiguracji aplikacji w celu skonfigurowania bazy danych i kilku dodatkowych poprawek.
Krok 4 – Konfiguracja Laravela
Wszystkie pliki konfiguracyjne Laravela są przechowywane w katalogu o nazwie config w głównym katalogu aplikacji. Ponadto podczas instalacji Laravela za pomocą Composera tworzony jest również plik środowiskowy. Zawiera on różne ustawienia specyficzne dla bieżącego środowiska. Wartości w nim zadeklarowane będą miały pierwszeństwo przed wartościami ustawionymi w zwykłych plikach konfiguracyjnych w config.
Każda unikalna instalacja będzie wymagać własnego pliku środowiskowego do zdefiniowania wartości takich jak ustawienia połączenia z bazą danych, adres URL aplikacji, opcje debugowania itp. Należy pamiętać, że plik środowiskowy zawiera poufne informacje, takie jak dane uwierzytelniające bazy danych, klucze bezpieczeństwa itp. Dlatego zdecydowanie zaleca się, aby nigdy nie udostępniać tego pliku publicznie.
Otwórz plik środowiskowy za pomocą edytora tekstu:
|
1 |
$ nano .env |
Oto przykładowy kod środowiskowy:
|
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 |
Przeanalizujmy poszczególne wartości:
APP_NAME: To pole określa nazwę aplikacji. Nazwa ta będzie używana do powiadomień i komunikatów.APP_ENV: Bieżące środowisko aplikacji.APP_KEY: Ten klucz jest generowany automatycznie podczas instalacji Laravela za pomocą Composera. Służy do generowania soli i skrótów. Nie ma potrzeby go zmieniać.APP_DEBUG: Przełącznik trybu debugowania. Po włączeniu będzie wyświetlać informacje debugowania po stronie klienta.APP_URL: Bazowy adres URL aplikacji. Jest również używany do generowania linków w aplikacji.DB_DATABASE: Nazwa bazy danych. W tym przypadku będzie to dedykowana baza danych, którą utworzyliśmy.DB_USERNAME: Nazwa użytkownika do połączenia z bazą danych.DB_PASSWORD: Hasło do połączenia z bazą danych.
Po wprowadzeniu zmian zapisz plik i zamknij edytor.
Krok 5 – Konfiguracja Nginx
Pomyślnie zainstalowaliśmy Laravel w lokalnym folderze katalogu domowego użytkownika. Ta konfiguracja działa dobrze w lokalnym środowisku programistycznym. Nie zaleca się jednak jej stosowania na serwerach WWW dostępnych w publicznym internecie.
Naszym kolejnym krokiem jest przeniesienie aplikacji do /var/www ponieważ jest to zwykła lokalizacja dla aplikacji internetowych działających na Nginx. Użyj polecenia mv do przeniesienia travellist do /var/www/travellist:
|
1 |
$ sudo mv ~/travellist /var/www/travellist |
Następnie przypisz użytkownikowi uprawnienia do zapisu w folderach storage i cache. Są to lokalizacje plików generowanych przez aplikację Laravel:
|
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 |
Pliki aplikacji są już na swoim miejscu. Musimy jednak poinstruować Nginx, aby serwował tę zawartość. Utwórz nowy plik konfiguracyjny wirtualnego hosta:
|
1 |
$ sudo nano /etc/nginx/sites-available/travellist |
Oto przykładowe zalecane ustawienia dla aplikacji Laravel działającej na serwerze Nginx:
|
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; } } |
Czas aktywować nowy plik konfiguracyjny wirtualnego hosta. Utwórz dowiązanie symboliczne do katalogu sites-enabled:
|
1 |
$ sudo ln -s /etc/nginx/sites-available/travellist /etc/nginx/sites-enabled/ |
Poniższe polecenie Nginx przetestuje pliki konfiguracyjne pod kątem błędów składniowych:
|
1 |
$ sudo nginx -t |
Następnie przeładuj Nginx:
|
1 |
$ sudo systemctl reload nginx |
Aplikacja powinna być teraz dostępna pod nazwą domeny lub adresem IP (zgodnie z definicją w dyrektywie server_name):
Krok 6 – Dostosowywanie strony głównej
Po skonfigurowaniu aplikacji Laravel możemy rozpocząć pracę nad nią. W celach demonstracyjnych nadszedł czas na utworzenie przykładowej strony prezentującej przykładowe dane z tabeli bazy danych places. Najpierw otwórz główny plik tras w edytorze tekstu:
|
1 |
$ nano routes/web.php |
Plik będzie domyślnie zawierał pewną zawartość. Tutaj trasy są definiowane za pomocą metody statycznej (Route::get). Przyjmuje ona ścieżkę oraz funkcję wywołania zwrotnego jako argumenty.
Zastąp kod następującym:
|
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 ] ); }); |
Zapisz plik i zamknij edytor. Następnie utworzymy układ, aby wyrenderować użytkownikowi wyniki zapytania do bazy danych. Utwórz nowy plik w resource/views:
|
1 |
$ nano resources/views/travellist.blade.php |
W poniższym kodzie utworzyliśmy dwie listy miejsc w zależności od wartości visited oraz 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>Lista podróży</title> </head> <body> <h1>Moja lista marzeń podróżniczych</h1> <h2>Miejsca do odwiedzenia</h2> <ul> @foreach ($togo as $newplace) <li>{{ $newplace->name }}</li> @endforeach </ul> <h2>Już odwiedzone</h2> <ul> @foreach ($visited as $place) <li>{{ $place->name }}</li> @endforeach </ul> </body> </html> |
Zapisz plik i zamknij edytor. Teraz ponownie przejdź do strony aplikacji internetowej:
Voila! Mamy teraz działającą aplikację Laravel, która używa bazy danych MySQL do przechowywania zawartości.
Podsumowanie
W tym samouczku pokazaliśmy, jak skonfigurować aplikację Laravel na stosie LEMP działającym na serwerze Ubuntu 20.04. Pokazaliśmy również, jak dostosować domyślną trasę, aby odpytywać bazę danych o zawartość i wyświetlać wyniki w niestandardowym widoku. Aby uzyskać więcej informacji na temat Laravela, zapoznaj się z oficjalną dokumentacją dotyczącą widoków, tras, oraz obsługi baz danych.
Instalacja w tym samouczku jest wykonywana na samodzielnej maszynie wirtualnej. Możesz jednak również wdrożyć Laravela na stosach LEMP w Dockerze.
Udanego kodowania!









Komentarze
Brak komentarzy. Bądź pierwszy.