Postavljanje laravel aplikacije je u suštini isto kao i bilo koji drugi sajt recimo wordpress. Sastoji se od fajlova i baze (ako koristi bazu). Jedina mana laravel aplikacije može da bude u njegovim dodacima ako postoje i oni koji zahtevaju više dozvole nego što shared hosting (cPanel) može da pruži. Ali u većini slučajeva je to sve kako treba jer su iz samog tima Laravela shvatili da sve više ljudi koriste Laravel na shared hostingu pa ono što je bilo ranije od verzije 5 su zamenili i sada ne zahteva nikakve php funkcije koje su obično blokirane.
Ovo uputstvo možete da pratite ukoliko prebacujete laravel sa hostinga na hosting ili sa računara na hosting. Jer je u suštini transfer isti bez obzira gde se nalaze fajlovi.
Ja sam za ovaj primer iskoristio laravel aplikaciju gde sam instlirao invoice paket kako bih video kako radi pa stoga iskoristiću to isto za postavljanje.
- Prvi korak jese da selektujemo sve fajlove naše aplikacije i da ZIPujemo (jako je bitno da bude .zip). Fajlove takođe možete da prebacite i uplodom preko FTP-a ali za ovaj primer koristićemo .zip jer je to najčešća praksa naših klijenata.
Nađete fajlove sve selektujete i onda zipujete preko programa ili ako ste na windowsu 10 imate opciju prikazanoj na slici ispod
Sada kada smo zipovali našu aplikaciju potrebno je da je prebacimo u cPanel.
- Otvorite cPanel pa opciju File Manager. Potom kliknemo na public_html folder sa leve strane da nam se otvori a zatim idemo na upload.
U uplodu nađemo ZIP fajl koji smo kreirali zipovanjem naše aplikacije. Time će upload krenuti i čekamo dok ne postane zeleno iako je nekad i na 100% plavo, sačekajte da bude zeleno.
Ovde smo naznačili da potvrdite da fajl uplodujete u public_html folder i da bude zeleno kao što je pomenuto.
- Sledeći korak jeste da raspakujemo tu našu aplikaciju. Zatvorimo taj tab, kliknemo na Reload u file manageru i pojaviće nam se u public_html folderu naš fajl koji smo uplodovali.
Sada dobićemo sve fajlove ali neki fajlovi su sakriveno kao što je fajl .env koji nam je jako bitan. Kako bi smo videli te fajlove uradimo sledeće.
- Gornji desni ugao na Settings pa štikliramo show hidden files i sačuvamo.
Sada bi trebalo da vidimo sve naše fajlove kao na slici ispod.
Sledeći korak je prebacivanje SVIH fajlova u home direktorijum. Ovo je ključno zbog bezbednosti da svi fajlovi se ne nalaze u public_html folderu već u home direktorijum a sam sadržaj public foldera biće u public_html folderu. Ovo je praksa koju koriste svi pa ćemo i mi tako u ovom uputstvu.
Druga stvar jeste da sve ostane kao što jeste ali onda je potrebno da izmenite/kreirate .htaccess fajl da kada neko otvori vaš sajt da odmah mu otvara public_html folder i index.php fajl koji se tamo nalazi. Defoltni sadržaj .htaccess fajla možete da potražite na internetu.
- Selektujemo sve fajlove i kliknemo na dugme move, zatim da u polje za lokaciju gde šaljemo naše fajlove da ostane kosa crta samo to znači da je to home direktorijum i potom kliknemo na Move Files kao na slici ispod.
- Sada kada smo to uradili i ostao nam je prazan public_html otvaramo public folder naše aplikacije i ponovo idemo select all i ponovo na move pa u polje za lokaciju unosimo kosa crta public_html da sve fajlove pošaljemo u public_html folder. Kao na slici ispod.
Sada kada smo to uradili upravo smo kompletirali postavljanje fajlova.
Sadržaj .htaccess fajla u public_html folderu od naše aplikacije je:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
Ali ako odemo i otvorimo sajt dobićemo grešku ( u našem slučaju jer koristimo i bazu a bazu još uvek nismo podesili).
Slika naše greške je data ispod.
Kreiranje baze, username baze i lozinke i postavljanje u našem .env fajlu
- U cPanelu nađemo opciju koja se zove MySQL Database Wizard koja će nam u 3 koraka pomoći da kreiramo i postavimo kako treba. Sledeće 3 slike su baš ta tri koraka.
- Prvi korak kreiranje baze.
- Drugi korak kreiranje username baze i lozinka za tog korisnika
- Treći korak postavljanje dozvole tog korisnika nad bazom. Štiklirako sve.
Ovim smo kompletirali taj deo. Sada je potrebno da se ti podaci posave u .env fajl kako bi smo našu aplikaciju povezali sa bazom.
- cPanel pa File Manager i u samom home direktorijumu se nalazi naš .env fajl. Desni klik pa edit. (ako izađe opcija za encoding samo potvrdite).
- Potrebno je da promenite APP_URL u url vašeg domena, DB_DATABASE, DB_USERNAME, DB_PASSWORD da sve to izmenite i postavite sa podacima kojim ste kreirali bazu iznad po uputstvu. Ukoliko se ne sećate tih podataka i niste sačuvali onda možete da ih vidite i da psotavite novu lozinku u cPanel pa MySQL Databases.
Sada je potrebno da exportujemo sa našeg računara i importujemo na naš hosting bazu. Ukoliko to nećemo da radimo laravel ima sjajnu komandu za to ukoliko smo ispravno radili a to je
php artisan migrate --seed
Ukoliko niste na taj način radili potrebno vam je ovo ispod export i import baze.
- Prvo idemo localhost/phpmyadmin/ i selektujemo bazu našu sa leve strane i kliknemo na export a potom idemo na Go u donjem desnom uglu.
- Sada idemo u cPanel pa opcija phpMyAdmin
- Ponovo sa leve strane selektujemo našu bazu ali ovog puta idemo na import.
Nakon importa potrebno je da dobijete zelenu poruku Import has been successfully finished,….
Sada kada otvorimo našu aplikaciju otvoriće nam se kako treba.
Ukoliko i dalje nešto ne radi kako treba a dobijate grešku 500 to znači da postoji greška u kodu.
500 greška debug fajl
Debug je potrebno da uključite u .env fajlu na početku je fajla a potom vaš error log se nalazi u storage/logs/laravel.log pregledanjem tog fajla pisaće koja je greška u pitanju i šta je problem.