Úvod
Laravel je framework pre webové aplikácie, ktorý prichádza s sadou vstavaných nástrojov a prostriedkov na vývoj moderných PHP aplikácií. Je známy svojou spoľahlivosťou, výkonom, efektívnosťou, modularitou a bezpečnosťou. Vďaka rôznym vstavaným funkciám zaznamenal Laravel neuveriteľný nárast popularity. Mnohí vývojári prechádzajú na Laravel, aby zefektívnili proces vývoja webu.
Tento návod ukáže, ako nainštalovať a nakonfigurovať novú aplikáciu Laravel na Ubuntu 20.04.
Laravel na Ubuntu
Použijeme Composer, správcu závislostí pre PHP, na stiahnutie a správu Laravelu. Ak chcete nainštalovať Composer, postupujte podľa pokynov v tomto návode. The Server Nginx bude obsluhovať aplikáciu. Vytvorí demo aplikáciu Laravel s použitím databázy MySQL.
Tento návod vyžaduje splnenie určitých predpokladov. Predpokladáme, že už máte správne nakonfigurovaný a spustený server Ubuntu 20.04. Pre referenciu je tu rýchly návod na nastavenie servera Ubuntu. Vyžaduje sa tiež mať nainštalovaný a nakonfigurovaný stack LEMP (Linux, Nginx, MySQL a PHP). Máme podrobný návod na inštaláciu a konfiguráciu stacku LEMP.
Keďže budeme inštalovať rôzne balíky, vyžaduje si to oprávnenia root. V prípade Ubuntu je používateľ root predvolene zakázaný. Preto potrebujeme prístup k používateľovi bez oprávnení root s sudo oprávneniami. Tu je návod, ako udeliť oprávnenie sudo ostatným používateľom.
Krok 1 – Inštalácia modulov PHP
Pred inštaláciou Laravelu potrebujeme pre tento framework niekoľko dôležitých modulov PHP. Tieto moduly sú priamo dostupné z predvolených repozitárov balíkov Ubuntu. Tieto moduly podporujú funkcie ako kódovanie znakov, XML a presnú matematiku.
Najprv aktualizujte vyrovnávaciu pamäť APT a nainštalujte balíky:
|
1 2 |
$ sudo apt update $ sudo apt install php-mbstring php-xml php-bcmath |
Krok 2 – Vytvorenie databázy pre aplikáciu
Na demonštráciu funkčnosti Laravelu vytvoríme aplikáciu so zoznamom ciest, ktorá zobrazuje zoznam miest, ktoré by používateľ chcel navštíviť, a zoznam miest, ktoré už sú navštívené. Tieto údaje môžeme uložiť do tabuľky miest s poľami name (názov miesta) a visited (označenie ako visited alebo nonvisited). Ďalšie pole bude obsahovať jedinečný identifikátor pre každý záznam. Na prepojenie údajov s našou aplikáciou Laravel vytvoríme vyhradeného používateľa MySQL a udelíme mu plné oprávnenia k databáze travellist.
Natívna knižnica MySQL PHP mysqlnd už nepodporuje caching_sha2_authentication. Preto musíme nastaviť našu databázu s metódou autentifikácie mysql_native_password. Pristúpte do MySQL shellu ako root:
|
1 |
$ sudo mysql |
Ďalej vytvorte novú databázu s názvom travellist:
|
1 |
> CREATE DATABASE travellist; |
Potom vytvorte vyhradeného používateľa travellist_user s vhodným heslom:
|
1 |
> CREATE USER 'travellist_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password123'; |
Udeľte používateľovi travellist_user plné oprávnenia k databáze travellist. To tiež zabráni používateľovi vytvárať a upravovať akékoľvek iné databázy na serveri:
|
1 |
> GRANT ALL ON travellist.* TO 'travellist_user'@'%'; |
Ukončite MySQL shell:
|
1 |
> exit |
Poďme nového používateľa otestovať. Nasledujúci príkaz vás prihlási do MySQL shellu ako používateľa travellist_user. Prepínač -p si vyžiada heslo používateľa:
|
1 |
$ mysql -u travellist_user -p |
Vypíšte všetky dostupné databázy. Podľa predchádzajúcej konfigurácie by sa mali zobraziť iba travellist a information_schema:
|
1 |
> SHOW DATABASES; |
Ďalej musíme vytvoriť dátovú tabuľku places. Spustite nasledujúci príkaz MySQL:
|
1 2 3 4 5 6 |
> CREATE TABLE travellist.places ( id INT AUTO_INCREMENT, name VARCHAR(255), visited BOOLEAN, PRIMARY KEY(id) ); |
Naplňme tabuľku niekoľkými vzorovými údajmi:
|
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); |
Pozrime sa, či boli údaje úspešne uložené v databáze:
|
1 |
> SELECT * FROM travellist.places; |
Ako vidíme, testovacia tabuľka je naplnená platnými údajmi. Teraz môžeme ukončiť MySQL shell:
|
1 |
> exit |
Step 3 – Vytvorenie novej aplikácie Laravel
Teraz sme pripravení vytvoriť novú aplikáciu Laravel pomocou nástroja Composer. Použijeme travellist ako ukážkovú aplikáciu. Táto aplikácia zobrazí zoznam miest z databázy MySQL, čo demonštruje základnú konfiguráciu Laravelu. Prejdite do domovského adresára používateľa:
|
1 |
$ cd ~ |
Ďalším krokom je vytvorenie novej aplikácie Laravel pomocou nástroja Composer. Tým sa vytvorí vyhradený adresár travellist so základnou aplikáciou Laravel s predvolenými nastaveniami. Spustite nasledujúci príkaz:
|
1 |
$ composer create-project --prefer-dist laravel/laravel travellist |
Po vytvorení aplikácie môžeme overiť, či boli všetky komponenty úspešne nainštalované:
|
1 2 |
$ cd travellist $ php artisan |
Výstup overuje, že všetky súbory aplikácie sú na svojom mieste. Taktiež uisťuje, že všetky nástroje príkazového riadka Laravel sú funkčné. Stále je však potrebná konfigurácia aplikácie na nastavenie databázy a niekoľko ďalších úprav.
Step 4 – Konfigurácia Laravelu
Všetky konfiguračné súbory Laravelu sú uložené v adresári s názvom config v koreňovom adresári aplikácie. Okrem toho sa pri inštalácii Laravelu pomocou nástroja Composer vytvorí aj súbor prostredia. Obsahuje rôzne nastavenia špecifické pre aktuálne prostredie. Hodnoty v ňom deklarované budú mať prednosť pred hodnotami nastavenými v bežných konfiguračných súboroch v config.
Každá jedinečná inštalácia bude vyžadovať vlastný súbor prostredia na definovanie hodnôt, ako sú nastavenia pripojenia k databáze, URL adresa aplikácie, možnosti ladenia atď. Upozorňujeme, že súbor prostredia obsahuje citlivé informácie, ako sú prihlasovacie údaje k databáze, bezpečnostné kľúče atď. Preto sa dôrazne odporúča tento súbor nikdy verejne nezdieľať.
Otvorte súbor prostredia pomocou textového editora:
|
1 |
$ nano .env |
Tu je ukážkový kód prostredia:
|
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 |
Poďme si analyzovať jednotlivé hodnoty:
APP_NAME: Toto pole popisuje názov aplikácie. Tento názov sa bude používať na upozornenia a správy.APP_ENV: Aktuálne prostredie aplikácie.APP_KEY: Tento kľúč sa generuje automaticky pri inštalácii Laravelu cez Composer. Používa sa na generovanie solí a hashov. Nie je potrebné ho meniť.APP_DEBUG: Prepínač režimu ladenia. Keď je zapnutý, zobrazí informácie o ladení na strane klienta.APP_URL: Základná URL adresa aplikácie. Používa sa aj na generovanie odkazov v aplikácii.DB_DATABASE: Názov databázy. V tomto prípade to bude vyhradená databáza, ktorú sme vytvorili.DB_USERNAME: Používateľské meno na pripojenie k databáze.DB_PASSWORD: Heslo na pripojenie k databáze.
Po vykonaní zmien súbor uložte a zatvorte editor.
Step 5 – Nastavenie Nginx
Úspešne sme nainštalovali Laravel do lokálneho priečinka domovského adresára používateľa. Táto konfigurácia funguje dobre pre lokálne vývojové prostredie. Neodporúča sa však implementovať ju pre webové servery, ktoré sú otvorené pre verejný internet.
Naším ďalším krokom je presunúť aplikáciu do /var/www , keďže je to obvyklé umiestnenie pre webové aplikácie bežiace na Nginx. Použite príkaz mv na presun travellist do /var/www/travellist:
|
1 |
$ sudo mv ~/travellist /var/www/travellist |
Ďalej priraďte používateľovi prístup na zápis do priečinkov storage a cache. Toto sú umiestnenia súborov generovaných aplikáciou 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 |
Súbory aplikácie sú teraz na svojom mieste. Musíme však povedať Nginxu, aby poskytoval tento obsah. Vytvorte nový konfiguračný súbor virtuálneho hostiteľa:
|
1 |
$ sudo nano /etc/nginx/sites-available/travellist |
Tu je ukážka odporúčaných nastavení pre aplikáciu Laravel bežiacu na Nginxe:
|
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; } } |
Je čas aktivovať nový konfiguračný súbor virtuálneho hostiteľa. Vytvorte symbolický odkaz na adresár sites-enabled:
|
1 |
$ sudo ln -s /etc/nginx/sites-available/travellist /etc/nginx/sites-enabled/ |
Nasledujúci príkaz Nginx otestuje konfiguračné súbory na syntaktické chyby:
|
1 |
$ sudo nginx -t |
Potom znova načítajte Nginx:
|
1 |
$ sudo systemctl reload nginx |
Aplikácia by teraz mala byť dostupná pomocou doménového mena alebo IP adresy (ako je definované direktívou server_name):
Step 6 – Prispôsobenie hlavnej stránky
S nakonfigurovanou aplikáciou Laravel môžeme teraz začať pracovať. Na ukážku je čas vytvoriť vzorovú stránku zobrazujúcu vzorové dáta z databázovej tabuľky places. Najprv otvorte hlavný súbor smerovania v textovom editore:
|
1 |
$ nano routes/web.php |
Súbor bude predvolene obsahovať nejaký obsah. Tu sú trasy definované pomocou statickej metódy (Route::get). Prijíma path a callback funkciu ako argumenty.
Nahraďte kód nasledujúcim:
|
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 ] ); }); |
Uložte súbor a zatvorte editor. Ďalej vytvoríme rozloženie na vykreslenie výsledkov databázového dopytu používateľovi. Vytvorte nový súbor v rámci resource/views:
|
1 |
$ nano resources/views/travellist.blade.php |
V nasledujúcom kóde sme vytvorili dva zoznamy miest v závislosti od hodnoty visited a 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>Zoznam ciest</title> </head> <body> <h1>Môj zoznam vysnívaných ciest</h1> <h2>Miesta na návštevu</h2> <ul> @foreach ($togo as $newplace) <li>{{ $newplace->name }}</li> @endforeach </ul> <h2>Už navštívené</h2> <ul> @foreach ($visited as $place) <li>{{ $place->name }}</li> @endforeach </ul> </body> </html> |
Uložte súbor a zatvorte editor. Teraz znova prejdite na stránku webovej aplikácie:
Voila! Teraz máme funkčnú aplikáciu Laravel, ktorá pre obsah využíva databázu MySQL.
Záver
V tomto návode sme si ukázali, ako nastaviť aplikáciu Laravel na LEMP stacku bežiacom na serveri Ubuntu 20.04. Ukázali sme si tiež, ako prispôsobiť predvolenú trasu (route) na dopytovanie obsahu databázy a zobrazenie výsledkov vo vlastnom zobrazení (view). Ďalšie informácie o systéme Laravel nájdete v oficiálnej dokumentácii pre views, routes, a podporu databáz.
Inštalácia v tomto návode sa vykonáva na samostatnom virtuálnom stroji. Môžete však tiež nasadiť Laravel na LEMP stacky v Dockeri.
Príjemnú prácu!









Komentáre
Zatiaľ žiadne komentáre. Buďte prvý.