Laravel PHP razvojni okvir na Raspberry Pi 3

Što je Raspberry Pi 3

Raspberry Pi (dalje u tekstu RPi) je minijaturno računalo koje sve svoje komponente sadrži na jednoj sklopovskoj pločici (engl. circuit bord). U ovom članku koristit ćemo Raspberry Pi treće generacije, a njegova specifikacija dostupna je na adresi: https://www.raspberrypi.org/products/raspberry-pi-3-model-b/.

rpi-1.jpg

Za spajanje na monitor RPi koristi HDMI izlaz, pa bi za spajanje na monitor trebali imati HDMI kabel i monitor koji ima HDMI ulaz. RPi ima 4 USB priključka (engl . USB port) te na njih možemo spojiti tipkovnicu i miš. Za spremanje podataka koristi mikro SD karticu. Napajanje se odvija preko mikro USB priključka.

U našem slučaju imamo i kućište u koje možemo postaviti RPi pločicu. Kućište se sastoji od nekoliko dijelova, ali nema vijaka nego sve radi na klik. Pločica se jednostavno postavi u donji dio kućišta.

Gornji dio kućišta jednostavno se natakne na donji dio.

Stranice kućišta lagano se gurnu u položaj.

Nakon sklapanja kućišta svi priključci dostupni su za spajanje.

Utor za mikro SD karticu nalazi se na donjem dijelu kućišta.

Instalacija sustava Raspbian

Operacijski sustav Raspbian je verzija sustava Debian prilagođena za korištenje na RPi uređajima.

Raspbian je dostupan za preuzimanje na stranici https://www.raspberrypi.org/downloads/raspbian/.

Za potrebe ovog članka preuzet ćemo Raspbian Jessie Lite verziju sustava. To ćemo napraviti na drugom računalu na kojem imamo čitač SD kartica. Naime, prilikom preuzimanja sustav Raspbian nalazi se u slikovnom (.img) formatu. Tu slikovnu datoteku potrebno je preslikati na SD karticu (koju ćemo tek kasnije prebaciti u RPi).

Upute za instalaciju sustava Raspbian na engleskom jeziku dostupne su na adresi: https://www.raspberrypi.org/documentation/installation/installing-images/README.md.

Ukratko, nakon preuzimanja ZIP datoteke koja sadrži operacijski sustav potrebno je raspakirati slikovnu datoteku (.img datoteku) negdje na računalo. Nakon toga za preslikavanje .img datoteke na SD karticu koristit ćemo poseban alat.

U našem slučaju nalazimo se na operacijskom sustavu Microsoft Windows 10, pa ćemo za preslikavanje .img datoteke koristiti alat Win32 Disk Imager koji se može preuzeti s adrese: https://sourceforge.net/projects/win32diskimager/.

Win32 Disk Imager potrebno je instalirati na računalo. Nakon toga treba ga pokrenuti kao administrator (desni klik na ikonu pa Run as administrator). U našem slučaju SD kartica je dostupna pod diskovnim pogonom označenim slovom F:

Moramo biti oprezni prilikom odabira diskovnog pogona na koji ćemo preslikati .img datoteku jer će Win32 Disk Imager prije preslikavanja s pogona obrisati sve datoteke.

Dakle, u alatu Win32 Disk Imager odabrat ćemo .img datoteku koja sadrži Raspbian operacijski sustav, te odabrati diskovni pogon pod slovom F:

Nakon definiranja slikovne datoteke i diskovnog pogona potrebno je kliknuti na gumb „Write“. Sam postupak pisanja na SD karticu može potrajati nekoliko minuta.

Nakon završetka preslikavanja sustava Raspbian potrebno je napraviti još jednu stvar prije nego mikro SD karticu prebacimo u RPi. Naime, za interakciju s RPi-jem u našem slučaju uopće nećemo koristiti monitor, tipkovnicu ili miš. Umjesto toga koristit ćemo SSH pristup preko računalne mreže. Da bi to bilo moguće moramo omogućiti SSH pristup na RPi-ju (prema početnim postavkama SSH pristup na RPi-ju nije omogućen). Prema uputi na adresi: https://www.raspberrypi.org/documentation/remote-access/ssh/, da bi se omogućio SSH, na SD karticu potrebno je spremiti praznu datoteku s imenom „ssh“. Tu je datoteku potrebno spremiti u korijenski (engl. root) direktorij. Dakle, u našem slučaju datoteku ćemo spremiti u direktorij F:/ j. To sada izgleda ovako:

Nakon što smo stvorili datoteku „ssh“ možemo prebaciti mikro SD karticu u RPi. Uključivanjem RPi-ja u struju automatski se pokreće operacijski sustav Raspbian.

Pristup RPi-ju preko SSH

U ovom trenutku možemo spojiti RPi na Ethernet mrežu. Prema početnim postavkama Raspbian je podešen tako da će mrežno sučelje preuzeti IP adresu sa servera DHCP. Dakle, kada spojimo RPi na mrežu nećemo točno znati koju IP adresu će RPi dobiti.

Činjenica koja nam može pomoći s tim problemom jest da je prema početnim postavkama mrežno ime RPi-ja postavljeno na „raspberrypi“. Dakle, nakon što RPi spojimo na račnalnu mrežu možemo ga pokušati pingati preko mrežnog imena. Naredba koju je potrebno unijeti u naredbenom retku je:

ping raspberrypi

Naravno, naredbu je potrebno pokrenuti s računala koje je spojeno na istu mrežu na koju smo spojili RPi.

U našem slučaju uspjeli smo saznati IP adresu i ona glasi 192.168.178.26.

Ako pomoću naredbe ping ne uspijete dobiti odgovor od RPi-ja, a nalazite se u kućnom mrežnom okruženju, možete pokušati pingati mrežno ime „raspberrypi.local“ ili „raspberrypi.lan“. Ako ni to ne prolazi, možete pokušati saznati IP adresu direktno sa servera koji dodjeljuje IP adrese ili, ako se radi o kućnoj mreži, direktno sa usmjernika (engl. router) pregledavajući listu spojenih uređaja na mreži. Ako nemate pristup serveru/usmjerniku, možete pokušati iskoristiti neki od alata za skeniranje računalne mreže (engl. IP scanner). Takvi alati prikazat će listu svih uređaja na mreži s njihovim IP adesama.

Nakon što smo uspjeli saznati IP adresu možemo krenuti sa spajanjem na RPi preko SSH protokola. Na našem primarnom računalu koristimo operacijski sustav Windows 10, a Windows sustavi inače nemaju ugrađen SSH klijent. Zato ćemo u našem slučaju koristiti Putty, besplatan SSH klijent koji možemo preuzeti sa stranice http://www.putty.org/.

Kada pokrenemo Putty, potrebno je unijeti mrežno ime ili IP adresu računala na koje se želimo spojiti, te kliknuti na gumb Open.

Kod prvog spajanja dobit ćemo sigurnosno upozorenje na kojem možemo odabrati opciju „Yes“ kako bismo ubuduće „vjerovali“ tom računalu i nastavili sa spajanjem:

U sljedećem koraku dobit ćemo naredbeni redak u kojem nas sustav pita za korisničko ime. Prema početnim postavkama Raspbian ima postavljen korisnički račun kojem je korisničko ime „pi“, a lozinka „raspberry“. Dakle, te podatke možemo iskoristiti za spajanje na Raspbian.

Osnovna konfiguracija sustava Raspbian

Nakon što smo osigurali pristup RPi-ju sljedeći korak koji se preporuča jest unijeti naredbu:

sudo raspi-config

Naredba raspi-config prikazat će sučelje preko kojeg možemo obaviti osnovno konfiguriranje sustava.

Prva opcija osigurat će da sustav može koristiti sav dostupan prostor na mikro SD kartici.

Pomoću druge opcije možemo postaviti novu lozinku za našeg korisnika. Dalje, možemo postaviti lokalizacijske postavke kao što su jezik, vremenska zona i tipkovnica.  Nakon postavljanja svih željenih postavki možemo odabrati opciju „Finish“, nakon čega ćemo moći resetirati RPi.

Nakon nove prijave u sustav možemo unijeti naredbe za ažuriranje paketa i sustava:

sudo apt-get update && sudo apt-get upgrade

Instalacija potrebnih paketa

U našem slučaju za posluživanje mrežnih stranica koristit ćemo mrežni poslužitelj Apache. Da bismo ga instalirali unijet ćemo naredbu:

sudo apt-get install apache2 apache2-utils

Da bi razvojni okvir Laravel ispravno radio na Apache poslužitelju potrebno je omogućiti Apache modul „mod-rewrite“. Da bismo ga omogućili potrebno je unijeti naredbu:

sudo a2enmod rewrite

Iako smo omogućili „mod-rewrite“ modul, on neće raditi dok u postavkama ne omogućimo njegovo korištenje. Za naše potrebe otvorit ćemo konfiguracijsku datoteku „apache2.conf“ i za direktorij /var/www omogućiti opciju „AllowOverride“.

Dakle, naredba za otvaranje spomenute konfiguracijske datoteke je:

sudo nano /etc/apache2/apache2.conf

U njoj je potrebno pronaći sljedeće konfiguracijske linije:

Liniju “AllowOverride None” potrebno je zamijeniti linijom “AllowOverride All”:

Za spremanje potrebno je kliknuti CTRL-X te Y za potvrdu.

Sljedeći korak jest instalacija MySQL baze podataka. Za to ćemo koristiti naredbu:

sudo apt-get install mysql-server

Tijekom instalacijske procedure imat ćemo priliku postaviti lozinku za root korisnika na MySQL bazi.

Dalje, instalirat ćemo i MySQL klijent:

sudo apt-get install mysql-client

Nakon instalacije MySQL klijenta možemo postaviti bazu podataka koju će koristiti Laravel. Spojit ćemo se na MySQL server pomoću naredbe:

mysql -u root –p

Kada nas pita za lozinku, unijet ćemo onu lozinku koju smo postavili prilikom instalacije MySQL servera.

Stvorit ćemo bazu „laravel“ pomoću naredbe:

CREATE DATABASE laravel;

Stvorit ćemo i korisnika pomoću kojeg će se Laravel spajati na bazu pomoću naredbe:

CREATE USER 'laravel'@'localhost' IDENTIFIED BY 'nekaLozinka';

U gornjoj naredbi 'laravel' je naziv korisnika, a 'nekaLozinka' je njegova lozinka pomoću koje će se spajati na server.

Sljedeći korak je stvorenom korisniku dati prava nad 'laravel' bazom. Korisnik nam je 'laravel', a baza također 'laravel'. Naredba za davanje prava je stoga:

GRANT ALL ON laravel.* TO 'laravel'@'localhost';

Osigurat ćemo da se sva prava postave pomoću naredbe:

FLUSH PRIVILEGES;

Za izlaz iz MySQL konfiguracije možemo unijeti naredbu:

Exit

Sljedeći korak je instalirati PHP i neke osnovne PHP module. U našem slučaju instalirat ćemo PHP verziju 5.*. Za to ćemo koristiti jedinstvenu naredbu:

sudo apt-get install php5 php5-cli libapache2-mod-php5 php5-mysql php5-curl php5-gd php-pear php5-imagick php5-mcrypt php5-memcache php5-mhash php5-sqlite php5-xmlrpc php5-xsl php5-json php5-dev libpcre3-dev

Za korištenje mogućnosti verzioniranja izvornog koda koristit ćemo Git. Za instalaciju Git-a možemo unijeti naredbu:

sudo apt-get install git

Budući da je Laravel organiziran kao paket Composer, instalirat ćemo alat za upravljanje ovisnim PHP paketima Composer.

Prvo ćemo preuzeti instalacijsku proceduru pomoću naredbe:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

Za instalaciju alata Composer odabrat ćemo direktorij /bin, a naziv datoteke će u našem slučaju biti „composer“. Naredba za takvu instalaciju je:

sudo php composer-setup.php --install-dir=/bin --filename=composer

Sada možemo obrisati datoteku „composer-setup.php“.

php -r "unlink('composer-setup.php');"

Instalacija Laravela

Sljedeći korak je instalacija razvojnog okvira Laravel. Prvo ćemo se pozicionirati u direktorij /var/www:

cd /var/www/

Da bismo u direktoriju /var/www mogli raditi bez sudo ovlasti, kao vlasnika /var/www direktorija postavit ćemo “pi” korisnika, a grupa neka bude “www-data”:

sudo chown pi:www-data /var/www

Laravel razvojni okvir sada možemo instalirati pomoću naredbe:

composer create-project --prefer-dist laravel/laravel

To će stvoriti /var/www/laravel direktorij. Pozicionirat ćemo se u njega.

cd laravel

U ovom trenutku možemo postaviti pristupne podatke koje će Laravel koristiti za pristup MySQL bazi. Korisničke podatke potrebno je unijeti u .env datoteku. Idemo je otvoriti:

nano .env

U datoteku je potrebno unijeti ime baze, ime korisnika kojeg smo prethodno kreirali te lozinku. Nakon unosa podataka možemo kliknuti na CTRL + X pa Y za potvrdu.

Za ispravan rad aplikacije Laravel nužno je da server može pisati u određene direktorije aplikacije. To uključuje direktorije storage i cache. Za postavljanje potrebnih dozvola za te direktorije možemo koristiti sljedeće naredbe:

sudo chgrp -R www-data /var/www/laravel/storage

sudo chgrp -R www-data /var/www/laravel/bootstrap/cache

sudo chmod -R 775 /var/www/laravel/storage/

sudo chmod -R 775 /var/www/laravel/bootstrap/cache

Posluživanje aplikacije Laravel

U ovom je trenutku aplikacija Laravel spremna. Sljedeći korak je konfiguriranje mrežnog poslužitelja Apache da poslužuje Laravel aplikaciju. Za naše potrebe postavit ćemo da početna stranica servera pokazuje na direktorij public iz Laravel aplikacije. To možemo postaviti u datoteci /etc/apache2/sites-available/000-default.conf. Otvorit ćemo datoteku:

sudo nano /etc/apache2/sites-available/000-default.conf

Prema početnim vrijednostima server je podešen da prikazuje stranicu iz direktorija /var/www/html.

Mi ćemo taj direktorij jednostavno promijeniti na direktorij Laravel public, koji se u našem slučaju nalazi na putanji /var/www/laravel/public.

Da bi sve promjene koje smo napravili postale aktualne, moramo resetirati Apache mrežni poslužitelj:

sudo service apache2 restart

U ovom trenutku trebali bismo moći otvoriti stranicu u internetskom pregledniku. Kao adresu možemo jednostavno unijeti IP adresu RPi-ja ili mrežno ime „raspberrypi“.

Postavljanje statične IP adrese na RPi-ju

Ako želimo, možemo postaviti statičnu IP adresu na RPi-u. Na taj način ćemo biti sigurni da će RPi uvijek biti dostupan preko te, određene IP adrese. Na primjer, recimo da želimo da RPi uvijek ima adresu 192.168.178.26 na mreži 192.168.178.0/24. Postavljanje statične IP adrese obavlja se u datoteci /etc/dhcpcd.conf:

sudo nano /etc/dhcpcd.conf

Na kraju datoteke potrebno je dodati sljedeće linije:

interface eth0

static ip_address=192.168.178.26/24

static routers=192.168.178.1

static domain_name_servers=192.168.178.1

Zaključak

U članku smo vidjeli cjelokupan postupak podešavanja RPi uređaja kao mrežnog poslužitelja. Postupak je krenuo od preuzimanja i postavljanja operacijskog sustava Raspbian na mikro SD karticu. Nakon spajanja RPi-ja na računalnu mrežu bilo je potrebno saznati IP adresu kako bismo se mogli spojiti na njega preko protokola SSH (budući da nismo koristili monitor, tipkovnicu i miš). Nakon toga postavili smo osnovnu konfiguraciju sustava Raspbian, ažurirali smo ga i instalirali potrebne pakete (Apache mrežni poslužitelj, MySQL bazu podataka, PHP interpreter, Composer alat i Git). Pomoću alata Composer instalirali smo razvojni okvir Laravel, postavili nužna prava nad direktorijima te postavili putanje do direktorija Laravel public u Apache konfiguracijskim datotekama. Nakon svih postavljanja bilo je potrebno resetirati Apache poslužitelj, nakon čega smo u našem internetskom pregledniku mogli otvoriti mrežnu stranicu Laravel.