Uvod
U svijetu interneta, nekoliko tehnologija se udružuje kako bi stvorilo rješenje koje korisnicima interneta omogućuje pristup dinamičkom sadržaju na svjetskoj mreži. LEMP stog (stack) jedno je od tih rješenja. Ono okuplja četiri tehnologije koje čine cjelovito poslužiteljsko rješenje za dinamične web stranice visokih performansi. LEMP je akronim za Linux, Nginx, MySQL i PHP. Linux je operacijski sustav poslužitelja. Nginx (koji se izgovara kao Engine-X, otuda slovo E u akronimu) je softver web-poslužitelja. Zatim, MySQL je sustav baze podataka koji čuva podatke web stranice i korisnika. PHP je skriptni jezik na strani poslužitelja za dinamičku obradu.
U ovom vodiču vodit ćemo vas kroz instalaciju i konfiguraciju LEMP stoga te provjeriti radi li sve kako se očekuje. Počnimo!
Korak 1: Konfiguriranje vašeg poslužitelja s Ubuntu 20.04
Ubuntu 20.04 je operacijski sustav temeljen na Linuxu. Postoji nekoliko poslužitelja temeljenih na Linuxu operacijskih sustava, uključujući besplatne i premium. Fokus ovog vodiča je na Ubuntu 20.04, koji je besplatan i otvorenog koda. Ovaj korak rješava prvi zahtjev u akronimu LEMP stoga, L. Trebali biste imati stvarnu Ubuntu 20.04 instalaciju na svom VPS-u kako biste nastavili sa sljedećim koracima. Možete pratiti naš vodič o postavljanju vašeg Ubuntu poslužitelja. Opcionalno, ako želite pratiti ovaj vodič na svom lokalnom računalu, možete preuzeti instalacijsku sliku Ubuntu 20.04 poslužitelja izravno s Ubuntu web stranice. Trebali biste konfigurirati običnog korisnika koji nije root sa sudo privilegijama jer ćemo pokretati nekoliko naredbi koje zahtijevaju sudo dopuštenja.
Korak 2: Instalacija i konfiguracija Nginx poslužitelja
Web poslužitelji nam omogućuju posluživanje sadržaja poput web stranica posjetiteljima web stranice. Nginx je popularan web poslužitelj, koji se nalazi među pet najboljih open-source web poslužitelja koje programeri najradije biraju. Ovaj korak rješava drugi zahtjev u LEMP stogu, E za Nginx. Ubuntu ima zadani repozitorij paketa iz kojeg ćemo preuzimati pakete za korištenje u ovom vodiču. Ubuntu se temelji na Debianu, koji koristi apt ili dpkg za upravljanje svojim paketima. Za pakete iz zadanog repozitorija koristit ćemo apt.
Kao opće pravilo, trebali biste pokrenuti naredbu za ažuriranje prije nego što započnete bilo kakvu instalaciju na Linux sustavu. Započnite unosom sljedeće naredbe u terminal:
|
1 |
sudo apt update |
Nakon što ste izvršili ažuriranje, sada možete instalirati Nginx pomoću sljedeće naredbe:
|
1 |
sudo apt install nginx |
Nakon što je instalacija dovršena, Nginx se automatski pokreće. Sljedeći korak je konfiguracija vatrozida kako bi se omogućio prolaz prometa. Ubuntu koristi ufw (Uncomplicated Firewall) paket za konfiguraciju vatrozida. Nakon instalacije, Nginx se registrira kao usluga kod ufw-a. Ubuntu automatski pokreće uslugu vatrozida pri pokretanju sustava, ali da biste bili sigurni, upišite sljedeću naredbu kako biste je omogućili:
|
1 |
sudo ufw enable |
Za ispis konfiguracije aplikacija koje ufw dopušta, unesite sljedeću naredbu:
|
1 |
sudo ufw app list |
Ispod je snimka zaslona koja prikazuje izlaz gornje naredbe:

Kao što vidite, Nginx je već registriran kod ufw-a i ima tri profila kako je objašnjeno u nastavku:
- Nginx Full – otvara i port 80 i port 443. Port 80 je za uobičajeni/nešifrirani promet, tj. HTTP. Port 443 je za TLS/SSL šifrirani promet, tj. https.
- Nginx HTTP – otvara samo port 80 – nešifrirani promet.
- Nginx HTTPS – otvara samo port 443 – TLS/SSL šifrirani promet.
Iako se Nginx automatski registrira kod ufw-a, promet prema vašem poslužitelju nije dopušten dok to sami ne učinite. Možete odabrati dopuštanje svih ili bilo kojeg od profila, međutim, bolje je dopustiti najrestriktivniji profil koji će i dalje omogućiti promet koji ste konfigurirali za svoj web-poslužitelj. Budući da u ovom vodiču nismo konfigurirali SSL, dopustit ćemo samo HTTP promet na portu 80. Ako ste znatiželjni, imamo vodič o konfiguriranju SSL-a na Nginx poslužitelju od Let's Encrypt pomoću Certbota.
Omogućimo promet na portu 80 unosom sljedeće naredbe:
|
1 |
sudo ufw allow 'Nginx HTTP' |
Kako biste provjerili je li promjena bila uspješna, upišite sljedeću naredbu:
|
1 |
sudo ufw status |

Gornji izlaz nakon pokretanja naredbe pokazuje da je HTTP promet sada dopušten. Možete provjeriti radi li poslužitelj tako da u pregledniku pristupite svojoj domeni ili javnoj IP adresi poslužitelja. Ako niste konfigurirali naziv domene i niste sigurni koja je javna IP adresa vašeg poslužitelja, možete je pronaći pomoću curl pokretanjem sljedeće naredbe:
|
1 |
curl -4 icanhazip.com |
Kopirajte izlaz gornje naredbe, što je vaša javna IP adresa, u adresnu traku vašeg preglednika. Kada učitate stranicu, vidjet ćete zadanu početnu stranicu Nginxa:

Gornja stranica označava da ste uspješno instalirali Nginx.
Korak 3: Instalacija sustava za upravljanje bazom podataka MySQL
Upravljanje podacima ključan je dio svake dinamičke web stranice. MySQL je sustav za upravljanje bazom podataka koji pohranjuje i upravlja podacima web stranice. Ovaj korak rješava treći zahtjev u LEMP stogu, M. Unesite sljedeću naredbu za instalaciju MySQL-a:
|
1 |
sudo apt install mysql-server |
Nakon što instalacija MySQL-a završi, morate ga konfigurirati prije nego što bude spreman za upotrebu. Dio konfiguracije uključuje osiguravanje poslužitelja baze podataka. MySQL dolazi sa skriptom koja vas vodi u osiguravanju i postavljanju lozinki. Sljedeća naredba pokreće skriptu:
|
1 |
sudo mysql_secure_installation |

Skripta pita želite li postaviti komponentu VALIDATE PASSWORD ili pritisnuti bilo koje slovo za nastavak bez omogućavanja komponente.
Komponenta VALIDATE PASSWORD značajka je koja se koristi za provjeru odgovara li lozinka koju ste unijeli za određenog korisnika na vašem poslužitelju baze podataka određenom kriteriju. Možete je konfigurirati da provjerava stvari poput duljine, brojčanih znakova, dostupnosti velikih ili malih slova itd. Ako nije omogućena, tada možete konfigurirati bilo koju lozinku po svom izboru. Međutim, ako je omogućena, morate koristiti lozinku koja odgovara kriterijima koje ste naveli. Omogućavanje može uzrokovati probleme s paketima koji automatski konfiguriraju vjerodajnice MySQL korisnika, kao što je paket phpMyAdmin za Ubuntu. Hoćete li je omogućiti ili ne, osobni je izbor. Vaša je baza podataka i dalje sigurna ako je ne omogućite, samo se pobrinite da koristite jake i jedinstvene lozinke.
Ako ste pritisnuli Y za omogućavanje komponente, skripta će od vas tražiti da odaberete razinu provjere valjanosti lozinke:

Skripta nudi 3 razine provjere valjanosti lozinke. Razina LOW zahtijeva da vaša lozinka sadrži samo 8 ili više znakova. Razina MEDIUM zahtijeva da vaša lozinka sadrži 8 osam ili više znakova, koji moraju biti mješavina velikih slova, malih slova i posebnih znakova. Razina STRONG zahtijeva složenu lozinku s 8 ili više znakova, koja mora biti mješavina velikih slova, malih slova, posebnih znakova i riječi, te se ne smije temeljiti na uobičajenim riječima iz rječnika, inače ćete dobiti pogreške. Idemo s razinom Low, upišite 0 i pritisnite enter.
Skripta od vas traži da unesete i ponovno unesete lozinku:

Upišite y i pritisnite enter kako biste prihvatili lozinku koju ste upisali kao svoju root lozinku. Sljedeći upiti služe za poboljšanje sigurnosti MySQL poslužitelja. Počevši od uklanjanja zadanih anonimnih korisnika s kojima dolazi svaka instalacija MySQL-a, onemogućavanja prijave root korisnika s udaljene veze i uklanjanja testnih baza podataka. Posljednji upit traži od vas da ponovno učitate tablicu povlastica kako bi naredbe stupile na snagu. Upišite y i pritisnite enter za sve upite:

Početna sigurnosna konfiguracija je dovršena.
Verziju MySQL-a koju ste instalirali možete provjeriti pokretanjem naredbe:
|
1 |
sudo mysql –V |
Evo verzije koju koristimo za ovaj vodič:
![]()
Za Ubuntu sustave koji pokreću MySQL verzije 5.7 i novije, root korisnik je konfiguriran za autentifikaciju pomoću dodatka auth_socket, a ne lozinkom. To osigurava veću sigurnost, međutim, može predstavljati problem s vanjskim paketima kao što je paket phpMyAdmin. Ako radije želite nastaviti s korištenjem dodatka auth_socket, prijeđite na korak 4.
Ako se umjesto toga želite povezati pomoću lozinke, morate konfigurirati metodu autentifikacije da koristi mysql_native_password.
Pokrenite MySQL naredbeni redak unosom sljedeće naredbe:
|
1 |
sudo mysql |
MySQL dolazi s nekoliko zadanih baza podataka. Popis zadanih baza podataka možete vidjeti unosom sljedećeg upita u svoj terminal:
|
1 |
show databases; |

Baza podataka pod nazivom mysql pohranjuje nekoliko konfiguracija povezanih s MySQL-om. Ova baza podataka ima tablicu pod nazivom users koja sadrži pojedinosti o korisnicima i metodu autentifikacije za svakoga. Možemo koristiti SQL upite za dohvaćanje, izmjenu i brisanje informacija iz tablice. Unesite sljedeći upit u svoj terminal kako biste dobili pojedinosti o tome koju metodu autentifikacije koristi pojedini korisnik:
|
1 |
SELECT user, authentication_string, plugin, host FROM mysql.user; |

Gornji izlaz pokazuje da se root korisnik zapravo autentificira pomoću dodatka auth_socket. Da biste promijenili metodu autentifikacije za root korisnika, unesite sljedeću naredbu u svoj terminal. Ne zaboravite je promijeniti kako bi odgovarala jačini lozinke za srednju razinu koju smo postavili u prethodnom koraku, inače će doći do pogreške:
|
1 |
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mypassword'; |
Nakon što se upit uspješno izvrši, pokrenite naredbu flush privileges kako bi promjene odmah stupile na snagu:
|
1 |
FLUSH PRIVILEGES; |
Ponovno pokrenite donju select naredbu kako biste provjerili jesu li promjene stupile na snagu:
|
1 |
SELECT user,authentication_string,plugin,host FROM mysql.user; |

Iz izlaza je vidljivo da će se root korisnik sada autentificirati pomoću mysql_native_password. Možete izaći iz mysql naredbenog retka upisivanjem exit i pritiskom na enter.
Možete se pokušati prijaviti s lozinkom koju ste postavili unosom sljedeće naredbe:
|
1 |
mysql -u root –p |
Naredbeni redak će vas tražiti lozinku. Ako se podudara, vidjet ćete MySQL naredbeni redak. Uspješno ste postavili svoj poslužitelj s MySQL-om. Zatim izađite iz MySQL naredbenog retka.
Step 4: Instalacija PHP-a i postavljanje Nginxa za korištenje PHP procesora
PHP je akronim za PHP: Hypertext Preprocessor. To je široko korišten open-source skriptni jezik na strani poslužitelja za web stranice i web aplikacije. PHP se brine za četvrti zahtjev u LEMP stogu. PHP pomaže u generiranju dinamičkog sadržaja na web stranici. Može se koristiti kao posrednik između vaših web stranica i sustava baze podataka. Čita podatke iz baze podataka i prikazuje ih posjetiteljima vaše web stranice. Nadalje, može umetati, ažurirati i brisati podatke iz baze podataka.
Nginx nema izvorne dodatke za obradu PHP-a kao drugi web poslužitelji, pa morate instalirati php-fpm za prosljeđivanje zahtjeva s Nginxa na PHP radi obrade. Prvo dodajte Ubuntu universe repozitorij koji sadrži besplatan softver otvorenog koda koji održava Ubuntu zajednica. Unesite sljedeću naredbu u svoj terminal:
|
1 |
sudo add-apt-repository universe |
Zatim instalirajte paket php-fpm zajedno s pomoćnim paketom php-mysql kako biste omogućili PHP-u komunikaciju s MySQL-om, koristeći sljedeću naredbu:
|
1 |
sudo apt install php-fpm php-mysql |
U vrijeme pisanja ovog vodiča, verzija PHP-a instalirana gornjom naredbom je 7.2.24. Stoga instalira paket php-fpm7.2. Imajte to na umu kada ažurirate blokove poslužitelja i provjerite jeste li unijeli ispravnu verziju, inače se vaša stranica neće učitati.
Verziju PHP-a možete provjeriti unosom sljedeće naredbe:
|
1 |
php -v |

U ovom trenutku, sve komponente LEMP stoga su instalirane. Ono što trebate učiniti sljedeće je konfigurirati Nginx da usmjerava zahtjeve prema PHP procesoru. U Nginxu, konfiguracija se vrši unutar blokova poslužitelja. Blokovi poslužitelja su ekvivalent Apacheovim virtualnim domaćinima. Za više informacija, možete pogledati naš vodič o Nginx blokovima poslužitelja.
Za ovaj vodič, kreirajmo blok poslužitelja za domenu test.com s istim imenom, slobodni ste odabrati ime po svom izboru. Blokovi poslužitelja nalaze se u direktoriju /etc/nginx/sites-available/. Koristite nano za kreiranje datoteke bloka poslužitelja unosom sljedeće naredbe:
|
1 |
sudo nano /etc/nginx/sites-available/test.com |
Upišite sljedeću skriptu u datoteku:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
server { listen 80; root /var/www/html; index index.php index.html index.htm index.nginx-debian.html; server_name test.com; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; } location ~ /\.ht { deny all; } } |
Ovdje je kratak opis onoga što svaka direktiva radi:
- listen – definira port na kojem će Nginx slušati. Port 80 je zadani port, međutim, ako ste postavili SSL, stavili biste 443.
- root – sadrži direktorij u kojem će biti pohranjen direktorij web stranice.
- index – upućuje Nginx da dade prioritet posluživanju index.php datoteka, ako su dostupne na zahtjev.
- server_name – definira naziv bloka poslužitelja, sadrži javnu IP adresu ili naziv domene vašeg poslužitelja.
- location/ – prvi lokacijski blok ima direktivu try_files. Provjerava postojanje datoteka koje odgovaraju URI zahtjevu, a ako nisu pronađene, vraća se pogreška 404.
- location ~ \.php$ – ova direktiva upravlja PHP obradom usmjeravanjem Nginx zahtjeva kroz datoteku fastcgi-php.conf i datoteku php7.2-fpm.sock koja definira koji socket povezati s php-fpm. Ova naredba provjerava status php-fpm-a, navodimo verziju kao 7.2, što je ono što imamo. Svakako provjerite s verzijom koju vi imate:
|
1 |
sudo service php7.2-fpm status |
- location ~ /\.ht – ova direktiva upravlja .htaccess datotekama, koje Nginx ne obrađuje. Direktiva deny all osigurava da se posjetiteljima ne poslužuje nijedna htaccess datoteka.
Nakon dodavanja skripte u vašu test.com datoteku, pritisnite Ctrl + O, a zatim pritisnite Enter za spremanje datoteke. Pritisnite Ctrl + X za zatvaranje uređivača teksta.
Zatim morate omogućiti blok poslužitelja unosom sljedeće naredbe kako biste stvorili simboličku poveznicu na /etc/nginx/sites-enabled:
|
1 |
sudo ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/ |
Zatim uklonite poveznicu zadanog bloka poslužitelja iz sites-enabled unosom sljedeće naredbe:
|
1 |
sudo unlink /etc/nginx/sites-enabled/default |
Testirajte svoju novu konfiguraciju unosom sljedeće naredbe:
|
1 |
sudo nginx -t |
Ako je sintaksa u redu, ponovno učitajte Nginx sljedećom naredbom:
|
1 |
sudo systemctl reload nginx |
U ovom koraku vaš LEMP stog je instaliran i konfiguriran. U sljedećem koraku stvaramo testnu datoteku kako bismo bili sigurni da se različite komponente dobro povezuju.
Korak 5: Stvaranje PHP datoteke za testiranje vašeg LEMP stoga
U ovom koraku stvaramo .php datoteku i pokrećemo je na Nginx poslužitelju kako bismo provjerili radi li ispravno. Koristit ćemo globalnu funkciju phpinfo() za provjeru dostupnih php paketa. Unesite sljedeću naredbu za otvaranje .php datoteke u nano uređivaču:
|
1 |
sudo nano /var/www/html/test.php |
U nano uređivaču upišite sljedeći isječak koda:
|
1 |
<?php phpinfo(); |
Spremite i zatvorite datoteku. Kako biste posjetili stranicu koju ste upravo izradili u svom pregledniku, pronađite svoju domenu ili IP adresu i idite na nju na sljedeći način:
|
1 |
http://your_server_domain_or_IP/test.php |
Trebali biste moći vidjeti stranicu s informacijama o PHP-u:

Gornja stranica pokazuje da ste uspješno postavili Nginx. Budući da datoteka koju ste izradili za testiranje sadrži detaljnije informacije o vašem poslužitelju, trebali biste je ukloniti. Unesite sljedeću naredbu za uklanjanje datoteke:
|
1 |
sudo rm /var/www/html/test.php |
Ako ikada u budućnosti budete trebali testirati svoje konfiguracije, uvijek možete ponovno stvoriti datoteku.
Zaključak
U ovom ste vodiču konfigurirali LEMP stog na svom sustavu Ubuntu 20.04, što je jedan od najmoćnijih dostupnih stogova za razvoj web aplikacija. Odavde biste trebali moći ugostiti gotovo bilo koje web-mjesto, web-aplikacije ili logiku na strani poslužitelja za svoju mobilnu aplikaciju. Kako biste osigurali da vaša web-stranica poslužuje sadržaj putem sigurne SSL veze, imamo vodič o konfiguriranju SSL certifikata na Nginx poslužitelju koji vam preporučujemo da pogledate.
Sretno s radom na računalu!
Komentari
Još nema komentara. Budite prvi.