Kako radi web server
Web server je program koji stalno „sluša“ na jednom portu, prima HTTP zahteve i vraća odgovore. U ovoj lekciji vidimo šta tačno radi, po čemu se razlikuje server za statičke i za dinamičke strane – i pokrećemo sopstveni server na svom računaru.
Kako da učiš: svaki primer isprobaj u pregledaču ili komandnoj liniji i uradi vežbe iz lekcije. Primeri su u HTML-u, JavaScript-u i Python-u; za većinu je dovoljan pregledač, a za Python primere instaliran Python 3.
Šta je web server
Reč „server“ ima dva značenja: računar (mašina u data centru) i program na njemu. Web server kao program radi u petlji:
- čeka zahtev na portu (80 za http, 443 za https);
- pročita zahtev: metodu (GET, POST…) i putanju (
/index.html); - odluči šta da vrati: fajl sa diska ili rezultat programa;
- pošalje odgovor sa statusnim kodom (200, 404…) i sadržajem;
- vrati se na korak 1.
Jedan server opslužuje mnogo korisnika istovremeno – zahtevi se obrađuju paralelno ili jedan za drugim, vrlo brzo.
| Poznati web serveri | Koristi se za |
|---|---|
| Nginx, Apache | statičke fajlove i prosleđivanje zahteva aplikacijama |
| Kestrel (ASP.NET Core) | C# web aplikacije |
| Gunicorn, Uvicorn | Python aplikacije (Django, Flask, FastAPI) |
| Node.js (Express) | JavaScript na serveru |
Statički i dinamički odgovori
| Statički | Dinamički | |
|---|---|---|
| šta server radi | pronađe fajl na disku i pošalje ga | pokrene kod koji napravi odgovor |
| primer zahteva | GET /slike/logo.png | GET /rezultati?razred=7 |
| isti za sve korisnike | da | ne – zavisi od korisnika, vremena, baze |
| brzina i cena | vrlo brzo i jeftino | zahteva više resursa |
| primer | ovaj sajt sa lekcijama (Astro → gotovi HTML fajlovi) | Petlja: tvoja rešenja, rezultati, prijava |
Mnogi moderni sajtovi se prave unapred: alat (npr. Astro, Hugo) od šablona i tekstova napravi hiljade gotovih HTML fajlova, a server ih samo šalje. Tako radi i svetprogramiranja.com.
Pokreni sopstveni server (Python)
Za statičke fajlove dovoljna je jedna komanda. Napravi folder sa fajlom index.html, otvori komandnu liniju u tom folderu i pokreni:
python -m http.server 8000
Zatim u pregledaču otvori http://localhost:8000. U komandnoj liniji videćeš svaki zahtev, na primer "GET / HTTP/1.1" 200 i "GET /favicon.ico HTTP/1.1" 404 – pregledač je sam zatražio ikonicu koje nema. Server se zaustavlja sa Ctrl+C.
Dinamički server pravi odgovor kodom. Najmanji primer bez dodatnih biblioteka:
from http.server import BaseHTTPRequestHandler, HTTPServer
from datetime import datetime
class Obrada(BaseHTTPRequestHandler):
def do_GET(self): # poziva se za svaki GET zahtev
if self.path == "/":
telo = f"<h1>Zdravo!</h1><p>Sada je {datetime.now():%H:%M:%S}</p>"
self.send_response(200) # status: OK
else:
telo = "<h1>404 – nema te strane</h1>"
self.send_response(404) # status: Not Found
self.send_header("Content-Type", "text/html; charset=utf-8")
self.end_headers()
self.wfile.write(telo.encode("utf-8"))
HTTPServer(("localhost", 8000), Obrada).serve_forever()
Svako osvežavanje stranice http://localhost:8000 prikazuje novo vreme – odgovor nastaje u trenutku zahteva. To je suština dinamičkog servera. U pravim projektima ovo se piše pomoću framework-a (Flask, Django, ASP.NET Core), koji brinu o putanjama, šablonima i bezbednosti.
Gde rade pravi serveri
| Način | Opis | Primer |
|---|---|---|
| sopstveni računar | za razvoj i probu (localhost) | python -m http.server, dotnet run |
| statički hosting | samo gotovi fajlovi, često besplatno | GitHub Pages, Netlify, Render (static site) |
| platforma za aplikacije (PaaS) | postaviš kod, platforma pokreće server | Render, Railway, PythonAnywhere, Azure App Service |
| virtuelni server / oblak | ceo računar u data centru pod tvojom kontrolom | AWS, Google Cloud, Azure, Hetzner |
Postavljanje aplikacije na server zove se deploy. Ranije popularna besplatna platforma Heroku više nema besplatan paket (od 2022), pa se za učeničke projekte danas češće koriste Render i PythonAnywhere.
Video: web server u praksi
Bez obzira na jezik, princip je isti: zahtev → obrada → odgovor. Kako se statičke strane serviraju u C#-u: Servisiranje statičkih web strana pomoću web servera.
- Port 8000 je proizvoljan – ako je zauzet, uzmi 8080 ili 5000.
localhostserver vidi samo tvoj računar; drugi u mreži ga vide preko tvoje lokalne IP adrese (ako to dozvoli zaštitni zid).- Server koji radi „zauvek“ se zaustavlja sa Ctrl+C u komandnoj liniji.
Proveri znanje
Otvori kviz
Web server
1. Šta radi statički web server?
2. Koju adresu otvaraš posle komande python -m http.server 8000?
3. Kako se zove postavljanje aplikacije na server?
Web programiranje → Uvod u web → Web server
Kako radi web server i HTTP komunikacija
Web početna:
Povratak na vodič stranu |
Sledeća lekcija: Frontend vs Backend
Uvod
U prethodnoj lekciji videli smo kako browser i server komuniciraju.
Sada ćemo detaljno videti kako ta komunikacija izgleda u praksi.
Da razumeš šta je web server i kako funkcioniše komunikacija putem HTTP protokola.
Šta je web server?
Web server je program koji prima zahteve od korisnika i šalje odgovore.
On se nalazi na udaljenom računaru koji je stalno povezan na internet.
Primer:
- ti otvoriš sajt
- browser pošalje zahtev
- server odgovori
Server može istovremeno da opslužuje hiljade korisnika.
Šta je HTTP?
HTTP (HyperText Transfer Protocol) je pravilo po kojem browser i server komuniciraju.
On definiše:
- kako se šalje zahtev
- kako izgleda odgovor
Šta je request?
Request je zahtev koji browser šalje serveru.
Na primer:
GET /index.html
Ovo znači:
- daj mi stranicu index.html
Šta je response?
Response je odgovor servera.
Server može vratiti:
- HTML stranicu
- sliku
- podatke
Request ide od browser-a ka serveru Response ide od servera ka browser-u
HTTP status kodovi
Kada server odgovara na zahtev, on ne šalje samo podatke — već i status koji govori da li je zahtev uspešan.
- 200 OK — sve je u redu
- 404 Not Found — stranica ne postoji
- 500 Server Error — greška na serveru
Ove kodove možeš videti u Network tabu u browseru.
Koraci komunikacije
- Uneseš URL
- Browser šalje request
- Server obrađuje zahtev
- Server šalje response
- Browser prikazuje rezultat
Kako server pravi dinamički sadržaj?
Kod modernih aplikacija server ne vraća uvek isti sadržaj.
Na primer:
- prijaviš se na nalog
- server prepoznaje korisnika
- prikazuje tvoje podatke
Ovo se radi pomoću backend jezika kao što je Python (Django).
Primer iz prakse
Kada se prijaviš na svoj nalog (npr. email ili društvena mreža):
- browser šalje tvoje podatke serveru
- server proverava korisničko ime i lozinku
- ako je sve u redu — vraća tvoju početnu stranicu
Svaki korak u ovom procesu koristi HTTP komunikaciju.
Video: Kako izgleda web server u praksi
Pogledaj kako izgleda kreiranje jednostavnog web servera u modernom razvojnom okruženju.
Primer u videu koristi ASP.NET Core i alat Visual Studio Code, ali je najvažnije da razumeš osnovni princip:
- server prima zahtev
- obrađuje ga
- vraća odgovor
Isti princip važi za sve backend tehnologije — uključujući Python i Django koje ćemo kasnije koristiti.
Bez obzira da li koristiš Python, JavaScript, C# ili neki drugi jezik — svi web serveri rade na istom principu (request → obrada → response).
Mini eksperiment
1. Otvori neku web stranicu 2. Desni klik → Inspect 3. Otvori "Network" tab 4. Osveži stranicu
Posmatraj:
- GET zahteve
- status kodove (200, 404)
- koliko fajlova se učitava
Izazov
Objasni svojim rečima:
- Šta je server?
- Šta je HTTP?
- Šta je request?
- Šta je response?
Zašto je ovo važno?
Sve web aplikacije rade na ovom principu.
Kada naučiš ovo:
- Django će imati smisla
- API će biti jasan
- backend neće biti zbunjujući
Povezane lekcije
Šta sledi?
- razlika frontend i backend
- uloga JavaScript-a
- kako aplikacije funkcionišu zajedno
