Apache, MySQL, PHP: LAMP stog
Četiri besplatna alata, jedna slučajna zajednica servera-admina, i web koji je odjednom mogao dići svatko s idejom i lošom tipkovnicom.
Zamisli da je 1996. i imaš ideju. Nešto glupo, nešto genijalno, svejedno — imaš ideju za web stranicu koja radi nešto više od toga da samo stoji i pokazuje ti tekst kao digitalni letak. Trebaš server. Trebaš bazu podataka da nešto pamti. I onda odeš pogledati cijenu. Solaris server od Suna (tadašnjeg giganta u svijetu poslužitelja), baza podataka od Oraclea po licenci koja se broji po korisniku, ili po jezgri procesora, ili po nekoj čarobnoj formuli koju je izmislio prodavač samo da te opere za novac — i odjednom tvoja genijalna ideja košta koliko rabljeni auto. A ti nemaš rabljeni auto.
Web (o kojem smo pisali u prvom dijelu ove knjige) eksplodirao je kao ideja, kao obećanje, kao stvar o kojoj svi pišu po novinama. Ali eksplodirao je na papiru. U praksi, da ga netko stvarno servira, trebao si novac. Ne malo novca — ozbiljan, korporativni, ima-li-vaša-firma-budžet novac. Trebao si konzultanta u odijelu koji zna šifru za Oracleovu instalaciju, trebao si komercijalni server s ugovorom o podršci, trebao si — realno — biti banka, ili barem imati banku iza sebe.
I da je tako ostalo, danas bismo imali drukčiji internet. Ne nužno gori u smislu dizajna — možda uredniji, doliranije popločen — ali internet u kojem se ne petlja obični čovjek. Internet kao shopping-centar: velike firme unajmljuju kat, plaćaju kiriju, postavljaju izloge, a svi ostali gledaju kroz staklo. Studentski projekt za vikend? Ne postoji, jer vikend ne plaća Oracleovu licencu. Blog nekog čudaka o pčelama? Ne postoji, jer čudak nema budžet za Solaris server. Zamisli da Wikipediju moraš platiti unaprijed da bi je uopće netko smio pokrenuti.
Jedan operativni sustav koji smo već upoznali (poglavlje 7 ove knjige). Jedan server koji je nastao iz očaja i zakrpa. Jedna baza podataka koju su puristi prezirali. Jedan jezik koji nitko nije shvaćao ozbiljno. Svaki od njih, sam za sebe, ne bi promijenio ništa. Ali kad su se poslagali jedan na drugi — u stog, u ono što će netko kasnije skratiti u jednu pitomu, gotovo mekanu riječ — dogodilo se nešto što nijedan od njih pojedinačno nije mogao izvesti.
Ime mu je tepalo, gotovo kao da je kućni ljubimac, a ne infrastruktura pola interneta. LAMP — slovo po slovo: Linux, Apache, MySQL, PHP. Operativni sustav, server, baza podataka i programski jezik, sve nabacano jedno na drugo poput improviziranog tornja, ali toranj je, iz nekog razloga, stajao. I to je zapravo cijela poanta priče koja slijedi: kako se najveća promjena u povijesti weba — ona koju ćemo kasnije zvati Web 2.0, ona u kojoj su obični ljudi počeli praviti stvari, a ne samo ih gledati — rodila iz gomile besplatnog softvera koji je netko sklepao jer je bio ljut, siromašan, ili oboje.
Godina 1994. NCSA httpd, tada najkorišteniji web server na planetu — dakle program koji „sluša” zahtjeve tvog preglednika i vraća mu stranice, slike i ostale datoteke koje si tražio, otprilike kao konobar koji trči između tebe i kuhinje — ima problem koji se ne rješava novcem, jer novca nema; ima problem s ljudima. Rob McCool, glavni i praktički jedini autor, odlazi raditi u Netscape. Sjećaš se Netscapea? Ona firma iz prošlog poglavlja koja je pretvorila preglednik u zlatnu koku. E, ta ista koka je upravo pojela čovjeka koji je održavao server na kojem su te stranice trebale živjeti. Sve je povezano, rekao sam ti već, i reći ću još sto puta dok knjigu ne zatvoriš — u ovoj branši nitko ne odlazi, samo se seli u sljedeće poglavlje priče.
NCSA httpd ostaje bez kapetana, ali brod ne tone odmah. Postoji nešto ljepše od jednog genija koji sve zna: gomila administratora širom svijeta koji su, svaki za sebe, na svom serveru, sami krpali rupe koje im je život — odnosno hakeri, bube i nedostajuće funkcije — nabacivao. Nitko od njih nema cijeli kod pred sobom kao jedinstvenu viziju. Svatko ima svoj komadić — svoj patch, svoju zakrpu za svoju boljku.
I onda se dogodi ono što se u devedesetima uvijek dogodi kad se ljudi s istim problemom nađu na istoj mailing-listi: netko predloži da prestanu raditi isto na osam različitih mjesta i počnu razmjenjivati te zakrpe. Grupa se okuplja — Brian Behlendorf i društvo — uzima napušteni NCSA httpd kao temelj i slaže gomilu tih krpa na njega, kao pokrivač na starom kaputu. Server sastavljen od zakrpa. A patchy server — »zakrpani server«. Zvuči kao vic koji je netko izmislio poslije, kad je već trebalo ime za marketing, i mirno je moguće da JEST poslije-izmišljen vic, jer i sama Apache Foundation danas kaže da je priča o zakrpama neformalna, ne službena. Ali informacija je dovoljno dobra da bude istinita, a dovoljno istinita da vrijedi ponoviti. Ime je ostalo: Apache.
Ono što je zanimljivo — i zbog čega ovo nije samo priča o zgodnom nazivu — jest ono što se dogodilo dalje, s upravljanjem. Umjesto da netko od tih ljudi osnuje firmu, uzme investiciju i pretvori Apache u proizvod (što bi bio uobičajen refleks, i već smo ga vidjeli kod Netscapea), oni 1999. osnivaju Apache Software Foundation. Ne firmu. Zadužbinu. Neprofitnu organizaciju čiji je jedini posao štititi kod od toga da ga jednog dana bilo koja firma ili osoba proda, zatvori ili ugasi zbog kvartalnog rezultata.
To je sitna administrativna odluka, papirologija, ništa dramatično. Ali upravo ta odluka — server kojeg nitko ne posjeduje, kojeg svatko može uzeti, mijenjati i staviti na svoj vlastiti stroj bez ugovora, bez odvjetnika, bez fakture — kamenčić je koji pokreće lavinu. Jer sad imaš besplatan, pouzdan, ničiji i svačiji server, a uz Linux na kojem sjedi, to su već dva slova od one kratice koju ćeš odsad viđati na svakom drugom serveru na svijetu: L-A-M-P, Linux i Apache za početak. Nedostaje ti još samo baza podataka i jezik da nešto s njom radiš — to su ono M i P. I ta dva komada slagalice, vjeruj mi, već čekaju iza ugla.

Prva posljedica: L + A
Dobro, imaš dvije stvari. Imaš Linux, imaš Apache, dvije posve zasebne sitnice, dvije zajednice koje se vjerojatno nikad nisu ni pitale postoji li ona druga. Pa ih spojiš. Linux nosi cijeli sustav, Apache na njemu servira stranice — to je već L i A. I dobiješ nešto što do tog trenutka formalno nije ni smjelo postojati: server koji ne staje ništa.
Ništa. Ne „jeftino”, ne „povoljno za startupe”, ne „uz akademsku licenciju”. Ništa. Skineš Linux, skineš Apache, staviš na bilo koje računalo koje imaš u kutu sobe — stari Pentium, ne treba ti ni nešto posebno — i u tom trenutku ta kutija u kutu sobe radi isti posao za koji je netko drugi platio Sun serveru, Microsoftovoj licenci i konzultantu koji dolazi jednom mjesečno da ti to sve „održava”. Nema fakture. Nema poziva prodajnom predstavniku koji ti nudi popust ako potpišeš do kraja kvartala. Skineš, instaliraš, radi.
I sad, ovo bi mogla biti lijepa priča o idealizmu koja ostane priča o idealizmu — dogodi se dosta toga na internetu što je plemenito i ostane niša za desetero ljudi. Nije. Netcraft, firma koja od sredine devedesetih broji tko drži koji web-server na internetu, ima brojke, i brojke su brutalne. Apache ne samo da uhvati korak s komercijalnim serverima — on ih pojede. Sredinom devedesetih dijeli teren s NCSA-om i s Netscapeovim vlastitim serverom; do kraja desetljeća drži apsolutnu većinu svih web-servera na planetu, i tu većinu ne ispušta godinama. Microsoft, sa cijelim svojim marketinškim budžetom i cijelim svojim IIS-om koji dolazi „besplatno” uz Windows NT, gleda kako ga besplatni projekt s pero-logom prestiže i ostavlja iza sebe. Ne malo. Ne za dlaku. Nadmoćno.
Vidiš sad zašto je ovo prva posljedica, ne cijela priča — jer ovo je tek dvoje od četvero. Linux ti je pružio pozornicu, Apache je na nju stavio glumca koji zna govoriti HTTP — a HTTP je samo dogovoreni jezik kojim preglednik i server razmjenjuju poruke, nešto kao da oboje znaju isti šifrarnik: preglednik pošalje »daj mi tu stranicu«, server odgovori »evo je« — ali pozornica bez ostalog dvoje još je prazna soba. Nemaš gdje spremiti podatke, nemaš čime napisati logiku koja odlučuje što se prikazuje. Ali gledaj što se već ovom kombinacijom srušilo: pretpostavka da server košta. Cijela devedesetih ekonomija weba računala je na tu pretpostavku — da tko hoće postaviti stranicu mora prvo kupiti pravo da to uopće pokuša.
To je ista rima koju smo već čuli, samo u drugom desetljeću. Borland je u osamdesetima srušio cijenu kompajlera s petsto dolara na pedeset i pretvorio programiranje iz privilegije korporacija u hobi svakog klinca s kompjuterom (K3, sjećaš se). Apache i Linux rade isto s webom, samo je cifra ovaj put spuštena na nulu, i ne za jedan alat — za cijeli sloj infrastrukture na kojem stoji cijeli internet. Cijena kao oružje, dovedena do krajnje moguće točke. Ne popust. Brisanje računa.
I baš u trenutku kad pomisliš da je to dovoljno — da imaš besplatan sustav i besplatan server i da je to već revolucija — netko u pozadini priprema još dva slova. Jedno će ti čuvati podatke, drugo će ti pisati logiku. I oba će, kao i prethodna dva, biti besplatna, malo sirova, i puna ljudi koji ih preziru dok ih polovica interneta tiho koristi.

Eskalacija: M + P
Apache i Linux ti daju server i sustav na kojem sve to stoji. Ali server bez sadržaja je kao frižider bez hrane — tehnički radi, praktično ne služi ničemu. Treba nešto što pamti podatke i nešto što te podatke pretvara u stranicu koju gledaš u pregledniku. I tu na scenu ulaze dva lika koja su, svaki na svoj način, dobila istu presudu od struke: »to nije prava alatka«. Ispalo je da struka nije bila u pravu, ali dođimo do toga polako.
MySQL je baza podataka koju su, dok je rasla kroz devedesete, akademici i konzultanti gledali s onom vrstom prezira koju rezerviraš za jeftino pivo na skupom vjenčanju. Baza podataka je, ako treba objasniti, program koji pamti podatke na uredan način i zna ih brzo vratiti kad ih pitaš — zamisli je kao urednu kartoteku koja, za razliku od one u ladici, ne gubi listove i ne kasni na posao. Dio te urednosti su i transakcije: skup operacija koji se izvrši sve ili ništa, kao kad banka prebacuje novac s jednog računa na drugi — ne želiš situaciju u kojoj novac nestane s jednog računa a na drugi ne stigne, zato se cijela operacija poništi ako nešto zapne na pola puta. MySQL nije imao sve što su „ozbiljne” baze imale — transakcije u ranim verzijama su bile rupičave, standardi upitnog jezika (dogovorenog načina na koji postavljaš pitanja bazi i tražiš podatke) su se tumačili slobodno, a puristi iz svijeta Oraclea i DB2 su govorili, uglas i s uživanjem: to nije prava baza. I formalno, imali su djelić prava. MySQL je pravio kompromise koje bi ozbiljan akademski projekt teško opravdao.
Samo je problem taj što devedeset posto ljudi koji su htjeli bazu podataka nisu pisali bankarski sustav za obradu deviznih transakcija. Htjeli su spremiti popis korisnika, komentare na blogu, proizvode u online dućanu koji prodaje pet stvari. Za to im nije trebala baza koja preživi nuklearni rat — trebala im je baza koja radi, koja se instalira u pet minuta i koja ne staje ništa. MySQL je bio upravo dovoljno dobar. Ne odličan, ne akademski čist — dovoljno dobar. A dovoljno dobro i besplatno, kad staneš na vagu, redovito pobjeđuje nad savršeno i skupo. Tko je pobijedio, znaš — danas su i banke, na kraju, počele koristiti MySQL derivate za dio posla za koji su prije trebale skupu licencu. I baš ta kombinacija — Linux kao temelj, Apache kao server, MySQL kao pamćenje i, kao što ćeš vidjeti, PHP kao mozak — dala je čitavom slaganju ime: LAMP, slovo po slovo, jedan sastojak po slovu.
S PHP-om je priča još ljepša, jer PHP nije ni krenuo kao jezik. Krenuo je kao gomila skripti koje je Rasmus Lerdorf sklepao da prati posjete na svojoj osobnoj stranici. Zvao ih je, bez ikakve ambicije, „Personal Home Page Tools” — alati za osobnu stranicu. Zamisli da ti kažem da će se ta stvar, koju je čovjek napravio da vidi koliko ljudi mu je posjetilo CV, za desetak godina naći ispod pola interneta.
I tu se zatvara peti krug demokratizacije u ovoj knjizi, i valjda si već navikao na ritam: netko otvori vrata, struka se zgrozi, korisnici pojure kroz njih prije nego se vrata zatvore. Prije PHP-a, backend web stranice — onaj dio koji stvarno nešto radi, ne samo prikazuje — bio je posao za ljude s Perlom, s CGI skriptama, s ozbiljnim inženjerskim treningom. CGI je bio stari, kompliciraniji način da server pokrene poseban program za svaki zahtjev i vrati rezultat kao stranicu — zamisli konobara koji za svaku narudžbu mora otrčati u kuhinju, probuditi kuhara i objasniti mu recept iznova, umjesto da kuhar već stoji spreman za štednjakom. Nakon PHP-a, backend je mogao napraviti tinejdžer u sobi, s priručnikom otvorenim u drugom tabu i beskonačnim strpljenjem za copy-paste. Nije to bilo lijepo. Bilo je moguće. A to je, ispada, jedina razlika koja u povijesti tehnologije ikad stvarno bude bitna.
Skupi zajedno MySQL i PHP, stavi ih na Apache koji stoji na Linuxu, i dobiješ nešto što nijedan od ta četiri dijela nije mogao postići sam. Nitko od izvornih autora nije sjedio i planirao taj stog. Lerdorf nije mislio na Apache dok je pisao svoje kućne skriptice, švedski programeri MySQL-a nisu ciljali na Linux zajednicu — sve se to slijepilo naknadno, jer je bilo besplatno, jer je bilo pri ruci, i jer se dobro slagalo. Slučajnost koja je promijenila internet više nego bilo koji strateški plan bilo koje korporacije tog desetljeća.

Domino: svatko može shipati
E sad dolazi domino efekt, ono zbog čega ova priča nije samo trač o serverima iz devedesetih nego temelj na kojem stoji sve ono što danas zoveš internetom. Zamisli scenarij: student, druga godina faksa, ima ideju. Ništa revolucionarno — možda forum za ljubitelje riba, možda alat koji prati cijene rabljenih automobila, možda samo mjesto gdje će objavljivati dnevnik o tome kako mrzi asistenta na Matematici 2. Devedesetih, prije nego se stog posložio, ta ideja umire istog trena kad student otvori kalkulator. Licenca za bazu, licenca za operativni sustav, licenca za server — brojke s toliko nula da ih ni ne pokušava izgovoriti naglas. Ideja ostaje ideja. Zauvijek.
Sa LAMP-om, ista ideja preživi vikend. Linux ne košta ništa. Apache ne košta ništa. MySQL ne košta ništa. PHP ne košta ništa. Jedino što studentu treba je hosting — a hosting je, jednostavno rečeno, iznajmljivanje prostora na tuđem serveru koji je uvijek uključen i uvijek spojen na internet, umjesto da student mora imati svoje računalo koje nikad ne gasi (i koje bi mu, realno, ugasila cimerica čim ode na predavanja). Taj hosting, zahvaljujući istoj logici besplatnog softvera koja se prelila i na davatelje usluga, stoji desetak dolara mjesečno. Desetak dolara. Manje od dvije pizze, manje od kino ulaznice, manje od bilo čega što bi normalno spriječilo nekoga da proba nešto glupo. I upravo je to bila poanta — barijera za ulazak nije pala, ona je isparila.
Pogledaj samo što je iz te sobe u pidžami izašlo. Mark Zuckerberg nije pisao Facebook u Oracleu na skupom Sun serveru — pisao ga je u PHP-u, onom istom jeziku koji je Rasmus Lerdorf sklepao da prati posjete na svojoj osobnoj stranici, jeziku kojeg su „pravi programeri” prezirali kao igračku. WordPress, koji danas vrti nezamislivi dio interneta, sjedi na istom LAMP stogu — PHP i MySQL, ista kombinacija, samo umnožena milijun puta. Wikipedia, ona ista enciklopedija koju svi citiraju a nitko ne priznaje da citira, prešla je na LAMP već u prvim godinama i na njemu ostala do danas. Nijedno od toga nije slučajnost. To je posljedica. Domino koji je pao onog trena kad je netko odlučio da server i baza i jezik smiju biti besplatni.
I tu dolazimo do dijela koji volim zvati — što bi bilo da nije. Odigraj alternativnu povijest u glavi: web koji se razvija na Oracle bazama i Sun serverima, gdje svaki novi projekt prvo mora proći kroz odjel nabave i ugovor s pravnim timom prije nego što ijedna linija koda dotakne produkciju. U toj verziji svijeta nema garažnih carstava, jer nema garaža koje mogu platiti ulaznicu. Google ostaje projekt na faksu koji nikad ne prerasta u tražilicu. Facebook ostaje ideja na salveti. Wikipedia — zamisli samo — ostaje neostvarena, jer bi netko morao potpisati enterprise ugovor da bi pokrenuo besplatnu enciklopediju. Ironija je toliko gusta da se može rezati nožem.
Ono što je zapravo demokratizirano nije samo pisanje koda — o tome je pričala prošla sekcija, PHP kao alat za svakoga. Ovdje je demokratiziran cijeli pogon: od ideje do žive stranice, bez posrednika, bez odjela nabave, bez čekanja da nekome u odijelu zatreperi žaruljica i odobri budžet. Student s idejom više nije čekao dozvolu. Otvorio je terminal, instalirao stog za pola sata (ili sat, ako mu je i Apache konfiguracija prvi put u životu), i do nedjelje navečer imao je nešto što radi. Loše, možda. Ružno, sigurno. Ali živo, na internetu, dostupno bilo kome tko upiše adresu u preglednik.
I to je pravi domino efekt ove priče — ne to da su četiri besplatna alata slučajno sjela jedan pored drugog, nego to da je to slaganje stvorilo generaciju ljudi kojima nitko nije tražio dopuštenje. Infrastruktura je jeftina, dakle ideje su jeftine za probati. A kad su ideje jeftine za probati, proba ih tisuću puta više ljudi nego prije. Statistika je brutalno jednostavna: od tisuću ideja, devetsto devedeset devet umre tiho i nitko ih ne spominje. Ali ona jedna koja ne umre — ta jedna se zove Facebook, ili WordPress, ili Wikipedia. LAMP nije garantirao uspjeh. Samo je maknuo cijenu ulaznice na nulu i pustio da statistika radi svoje.

Svijet kakav poznaješ
Danas otvoriš bilo koju domenu i postoji dobra šansa — negdje između trideset i četrdeset posto svih stranica na webu, ovisno koji brojač gledaš — da je pod haubom WordPress. Blog tvoje susjede o pletenju, stranica lokalnog vodoinstalatera, portal velike novinske kuće, online prodavaonica koja prodaje isključivo čarape s uzorkom avokada. Sve to na istoj logici koja je krenula od admina koji su si slali zakrpe za httpd jer nisu imali ništa bolje. WordPress je PHP i MySQL u kostimu, i danas je jedan od najvećih pojedinačnih komada softvera na planeti po broju instalacija. Ne zato što je tehnički najbolje rješenje — o tome ćemo drugom prigodom, i vjeruj, bit će zlobe — nego zato što je besplatan, dovoljno dobar i svatko ga može podignuti za popodne.
E sad, LAMP kao akronim je danas malo muzejski izložak. Nitko ozbiljan više ne piše čisti PHP na Apacheu s MySQL-om i to zove modernim stogom — pojavili su se MERN (MongoDB, Express, React, Node), JAMstack, serverless, Bog i batina. Nove kratice, nove hipsterske naljepnice, novi konferencijski slajdovi o tome kako je sve prije bilo primitivno. Ali skini omot i pogledaj što je unutra: besplatan operativni sustav, besplatan web server ili njegov nasljednik, besplatna baza ili njena varijanta, besplatan jezik za logiku. Isti recept, samo su zamijenili sastojke istog okusa. LAMP nije umro — mutirao je, kako i treba svaka uspješna vrsta, i njegovi geni su u svakom stogu koji danas hvališ na Hacker Newsu.
I tu dolazimo do poante cijelog ovog domino-efekta, one koja se provlači kroz cijelu ovu knjigu kao potajna nit — infrastruktura odlučuje tko smije sanjati. Ne talent. Ne genijalnost. Infrastruktura. Da je 1998. jedini način da staviš nešto na internet bio kupiti Sun server, platiti Oracle licenciju i nazvati konzultanta koji naplaćuje po satu koliko ti plaćaš stanarinu, danas ne bi postojao WordPress. Ne bi postojao Facebook, koji je krenuo kao PHP skripta na sveučilišnom serveru, a ne kao projekt s odobrenim budžetom i timom pravnika. Ne bi postojala Wikipedia, koja i danas — da, i danas — vrti dio svoje infrastrukture na istoj filozofiji koju su ti admini smislili razmjenjujući zakrpe.
Ono što je LAMP zapravo napravio nije bilo tehničko - bilo je ekonomsko, i zato ga stavljamo baš u ovaj lanac. Sniziti cijenu ulaska na nulu ne znači da će svi napraviti dobre stvari. Znači da će svi napraviti nešto, a onda će statistika i vrijeme presuditi koje od tih „nešto” će postati sljedeći div, a koje će ostati zaboravljena stranica o čarapama s avokadima, na poddomeni koja se ne obnavlja od 2011. Broj eksperimenata je taj koji stvara pobjednike, ne genijalnost pojedinačnog eksperimenta. Kasino s milijun stolova će uvijek imati nekoga tko pogodi jackpot, čak i ako je svaki stol pojedinačno loše postavljen.