Uvod
Laravel je radni okvir za web aplikacije koji dolazi s skupom ugrađenih alata i resursa za razvoj modernih PHP aplikacija. Poznat je po svojoj pouzdanosti, performansama, učinkovitosti, modularnosti i sigurnosti. Zbog svojih različitih ugrađenih značajki, Laravel je zabilježio nevjerojatan rast popularnosti. Mnogi programeri usvajaju Laravel kako bi pojednostavili proces razvoja weba.
Ovaj vodič će pokazati kako instalirati i konfigurirati novu Laravel aplikaciju na Ubuntu 20.04.
Laravel na Ubuntuu
Koristit ćemo Composer, upravitelj PHP ovisnosti, za preuzimanje i upravljanje Laravelom. Za instalaciju Composera slijedite upute iz ovog vodiča. The Nginx poslužitelj će posluživati aplikaciju. Uspostavit će demo Laravel aplikaciju koristeći MySQL bazu podataka.
Ovaj vodič zahtijeva neke preduvjete. Pretpostavljamo da već imate ispravno konfiguriran i pokrenut poslužitelj Ubuntu 20.04. Za referencu, evo brzog vodiča o postavljanju Ubuntu poslužitelja. Također je potrebno imati instaliran i konfiguriran LEMP (Linux, Nginx, MySQL i PHP) stog. Imamo detaljan vodič o instaliranju i konfiguriranju LEMP stoga.
Budući da ćemo instalirati razne pakete, to zahtijeva root dopuštenje. U slučaju Ubuntua, root korisnik je onemogućen prema zadanim postavkama. Dakle, potreban nam je pristup ne-root korisniku s sudo privilegijom. Evo kako dodijeliti sudo dopuštenje drugim korisnicima.
Korak 1 – Instaliranje PHP modula
Prije instaliranja Laravela, potrebni su nam neki važni PHP moduli za radni okvir. Ovi moduli su izravno dostupni iz zadane baze paketa za Ubuntu. Ovi moduli podržavaju značajke poput kodiranja znakova, XML-a i precizne matematike.
Prvo, ažurirajte APT predmemoriju i instalirajte pakete:
|
1 2 |
$ sudo apt update $ sudo apt install php-mbstring php-xml php-bcmath |
Korak 2 – Stvaranje baze podataka za aplikaciju
Kako bismo demonstrirali funkcionalnost Laravela, napravit ćemo aplikaciju za popis putovanja koja prikazuje popis mjesta koja bi korisnik želio posjetiti i popis mjesta koja su već posjećena. Ove podatke možemo pohraniti u tablicu place s poljima name (naziv lokacije) i visited (označavanje kao visited ili nonvisited). Dodatno polje sadržavat će jedinstveni identitet za svaki unos. Kako bismo povezali podatke s našom Laravel aplikacijom, stvorit ćemo namjenskog MySQL korisnika i dodijeliti mu puna dopuštenja nad bazom podataka travellist.
Izvorna MySQL PHP knjižnica mysqlnd više ne podržava caching_sha2_authentication. Stoga moramo postaviti našu bazu podataka s metodom provjere autentičnosti mysql_native_password. Pristupite MySQL ljusci kao root:
|
1 |
$ sudo mysql |
Zatim stvorite novu bazu podataka pod nazivom travellist:
|
1 |
> CREATE DATABASE travellist; |
Nakon toga stvorite namjenskog korisnika travellist_user s odgovarajućom lozinkom:
|
1 |
> CREATE USER 'travellist_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password123'; |
Dodijelite korisniku travellist_user puna dopuštenja nad bazom podataka travellist. To će također spriječiti korisnika da stvara i mijenja bilo koju drugu bazu podataka na poslužitelju:
|
1 |
> GRANT ALL ON travellist.* TO 'travellist_user'@'%'; |
Izađite iz MySQL ljuske:
|
1 |
> exit |
Testirajmo novog korisnika. Sljedeća naredba će se prijaviti u MySQL ljusku kao korisnik travellist_user. Zastavica -p će zatražiti lozinku korisnika:
|
1 |
$ mysql -u travellist_user -p |
Ispišite sve dostupne baze podataka. Kao što je ranije konfigurirano, trebalo bi prikazati samo travellist i information_schema:
|
1 |
> SHOW DATABASES; |
Zatim moramo stvoriti tablicu podataka places. Pokrenite sljedeću MySQL naredbu:
|
1 2 3 4 5 6 |
> CREATE TABLE travellist.places ( id INT AUTO_INCREMENT, name VARCHAR(255), visited BOOLEAN, PRIMARY KEY(id) ); |
Popunimo tablicu s nekim oglednim podacima:
|
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); |
Pogledajmo jesu li podaci uspješno spremljeni u bazu podataka:
|
1 |
> SELECT * FROM travellist.places; |
Kao što vidimo, testna tablica je popunjena valjanim podacima. Sada možemo izaći iz MySQL ljuske:
|
1 |
> exit |
Korak 3 – Stvaranje nove Laravel aplikacije
Sada smo spremni stvoriti novu Laravel aplikaciju pomoću Composera. Koristit ćemo travellist kao demo aplikaciju. Ova aplikacija će prikazati popis lokacija iz MySQL baze podataka, demonstrirajući osnovnu konfiguraciju Laravela. Idite u korisnički početni direktorij:
|
1 |
$ cd ~ |
Sljedeći korak je stvaranje nove Laravel aplikacije pomoću Composera. To će stvoriti namjenski direktorij travellist s osnovnom Laravel aplikacijom sa zadanim postavkama. Pokrenite sljedeću naredbu:
|
1 |
$ composer create-project --prefer-dist laravel/laravel travellist |
Nakon što je aplikacija uspostavljena, možemo provjeriti jesu li sve komponente uspješno instalirane:
|
1 2 |
$ cd travellist $ php artisan |
Izlaz potvrđuje da su sve datoteke aplikacije na svom mjestu. Također osigurava da su svi Laravel alati naredbenog retka funkcionalni. Međutim, i dalje je potrebna konfiguracija aplikacije za postavljanje baze podataka i nekoliko dodatnih prilagodbi.
Korak 4 – Konfiguracija Laravela
Sve konfiguracijske datoteke Laravela pohranjene su unutar direktorija pod nazivom config unutar korijenskog direktorija aplikacije. Osim toga, prilikom instalacije Laravela s Composerom, stvara se i datoteka okruženja. Ona sadrži različite postavke specifične za trenutno okruženje. Vrijednosti deklarirane unutar nje imat će prednost pred vrijednostima postavljenim u uobičajenim konfiguracijskim datotekama u config.
Svaka jedinstvena instalacija zahtijevat će vlastitu datoteku okruženja za definiranje vrijednosti kao što su postavke veze s bazom podataka, URL aplikacije, opcije ispravljanja pogrešaka itd. Imajte na umu da datoteka okruženja sadrži osjetljive informacije poput vjerodajnica baze podataka, sigurnosnih ključeva itd. Zato se preporučuje da nikada javno ne dijelite ovu datoteku.
Otvorite datoteku okruženja pomoću uređivača teksta:
|
1 |
$ nano .env |
Evo primjera koda okruženja:
|
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 |
Rastavimo vrijednosti:
APP_NAME: Ovo polje opisuje naziv aplikacije. Ovaj naziv koristit će se za obavijesti i poruke.APP_ENV: Trenutno okruženje aplikacije.APP_KEY: Ovaj ključ se generira automatski prilikom instalacije Laravela putem Composera. Koristi se za generiranje soli i hasheva. Nema potrebe mijenjati ga.APP_DEBUG: Prekidač za način ispravljanja pogrešaka. Kada je uključen, prikazat će informacije o ispravljanju pogrešaka na klijentskoj strani.APP_URL: Osnovni URL aplikacije. Također se koristi za generiranje poveznica aplikacije.DB_DATABASE: Naziv baze podataka. U ovom slučaju, to će biti namjenska baza podataka koju smo stvorili.DB_USERNAME: Korisničko ime za povezivanje s bazom podataka.DB_PASSWORD: Lozinka za povezivanje s bazom podataka.
Nakon što unesete promjene, spremite datoteku i zatvorite uređivač.
Korak 5 – Postavljanje Nginxa
Uspješno smo instalirali Laravel u lokalnu mapu korisničkog početnog direktorija. Ova konfiguracija radi dobro za lokalno razvojno okruženje. Međutim, ne preporučuje se njezina implementacija na web poslužiteljima koji su otvoreni za javni internet.
Naš sljedeći korak je premještanje aplikacije u /var/www jer je to uobičajena lokacija za web aplikacije koje se izvode na Nginxu. Koristite naredbu mv za premještanje travellist u /var/www/travellist:
|
1 |
$ sudo mv ~/travellist /var/www/travellist |
Zatim dodijelite korisniku pristup za pisanje u mape storage i cache. To su lokacije datoteka koje generira Laravel aplikacija:
|
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 |
Datoteke aplikacije sada su na mjestu. Međutim, moramo reći Nginxu da poslužuje sadržaj. Izradite novu konfiguracijsku datoteku virtualnog domaćina:
|
1 |
$ sudo nano /etc/nginx/sites-available/travellist |
Evo primjera preporučenih postavki za Laravel aplikaciju koja se izvodi na Nginxu:
|
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; } } |
Vrijeme je za aktivaciju nove konfiguracijske datoteke virtualnog domaćina. Izradite simboličku poveznicu prema sites-enabled direktoriju:
|
1 |
$ sudo ln -s /etc/nginx/sites-available/travellist /etc/nginx/sites-enabled/ |
Sljedeća Nginx naredba testirat će konfiguracijske datoteke na sintaktičke pogreške:
|
1 |
$ sudo nginx -t |
Zatim ponovno učitajte Nginx:
|
1 |
$ sudo systemctl reload nginx |
Aplikacija bi sada trebala biti dostupna putem naziva domene ili IP adrese (kako je definirano direktivom server_name):
Step 6 – Customizing the Main Page
S konfiguriranom Laravel aplikacijom, sada možemo početi raditi na njoj. Za demonstraciju, vrijeme je da izradimo oglednu stranicu koja prikazuje ogledne podatke iz tablice baze podataka places. Prvo otvorite glavnu datoteku ruta u uređivaču teksta:
|
1 |
$ nano routes/web.php |
Datoteka će prema zadanim postavkama sadržavati neki sadržaj. Ovdje su rute definirane pomoću statičke metode (Route::get). Ona prima path i callback funkciju kao argumente.
Zamijenite kod sa sljedećim:
|
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 ] ); }); |
Spremite datoteku i zatvorite uređivač. Zatim ćemo stvoriti izgled za prikaz rezultata upita baze podataka korisniku. Stvorite novu datoteku unutar resource/views:
|
1 |
$ nano resources/views/travellist.blade.php |
U sljedećem kodu stvorili smo dva popisa mjesta ovisno o vrijednosti visited i 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>Popis putovanja</title> </head> <body> <h1>Moj popis želja za putovanja</h1> <h2>Mjesta za posjetiti</h2> <ul> @foreach ($togo as $newplace) <li>{{ $newplace->name }}</li> @endforeach </ul> <h2>Već posjećeno</h2> <ul> @foreach ($visited as $place) <li>{{ $place->name }}</li> @endforeach </ul> </body> </html> |
Spremite datoteku i zatvorite uređivač. Sada ponovno pristupite stranici web aplikacije:
Voila! Sada imamo funkcionalnu Laravel aplikaciju koja koristi MySQL bazu podataka za sadržaj.
Završne misli
U ovom smo vodiču pokazali kako postaviti Laravel aplikaciju na LEMP stog koji se izvodi na poslužitelju Ubuntu 20.04. Također smo prikazali kako prilagoditi zadanu rutu za slanje upita sadržaju baze podataka i prikaz rezultata u prilagođenom prikazu. Za više informacija o Laravelu pregledajte službenu dokumentaciju o prikazima, rutama, i podršci za baze podataka.
Instalacija u ovom vodiču izvodi se na samostalnom virtualnom stroju. Međutim, također možete postaviti Laravel na LEMP stogove na Dockeru.
Ugodan rad!









Komentari
Još nema komentara. Budite prvi.