Pokloni za geek-a | PC Press

Kako konzervirati sajt

Internet je sjajan kad treba predstaviti nove stvari, ali kad želite da sačuvate nešto što ste davno napravili na Web-u, stvari se brzo iskomplikuju. Iz godine u godinu smo čuvali stare verzije sajta pcpress.rs i to je najzad postalo nemoguće. Ipak, pronašli smo rešenje gledajući „van kutije“. Ili bolje reći, gledajući „u kutiji“.

PCPress.rs Image

PC Press-ov sajt na adresi pcpress.rs (bolje reći, pcpress.co.yu) je jedan od prvih sajtova nastalih u Jugoslaviji, kada smo 1996. godine dobili priključak na Internet. Inicijalno je hostovan na iznajmljenom serveru SezamaPro. Korišćen je Microsoft Windows Server operativni sistem, a sam sajt je realizovan klasično, ručnim HTML kodiranjem. Tako se tada radilo.

Flaner

Ubrzo nam je postalo jasno da je ručno kodiranje veoma neracionalno kada svakog meseca treba postaviti novi broj časopisa, a naročito ako bismo želeli i neke dnevne izmene. Zato smo došli na ideju da napravimo nešto što se danas zove CMS (Content Management System, sistem za upravljanje sadržajem). Nismo tada znali tako učen izraz, nego se govorilo da podatke o onome što je objavljeno u časopisu treba upisati u bazu podataka, pa odatle dinamički generisati Web stranice. Podloga za sve to su i dalje bile Microsoft tehno­logije, pre svega operativni sistem Windows Server. Naš tadašnji webmaster Aleksandar Vacić je napravio sajt koristeći ASP i DHTML tehnologije; bio je to na neki način projekat ispred svog vremena, CMS pre CMS-a. O izradi tog sajta možete da čitate na pc.pcpress.rs/tekst.php?id=2990. CMS je lepo funkcionisao, potrajao je za Internet svet neverovatnih 15 godina, dok sredinom 2014. godine Milan Basrak nije napravio novi CMS i novi sajt, ovoga puta zasnovan na Linux-u, PHP-u i MySQL-u, pa migrirao stari sadržaj u novo okruženje (čitajte o tim doživljajima na pc.pcpress.rs/tekst.php?id=11347).

Sačuvajmo istoriju

Kada naprave novi sajt, ljudi obično obrišu stari i zaborave na njega. Tako se gube toliki vredni (i uzgred mnogi bezvredni), godinama prikupljani podaci. Pošto smo već migrirali sve podatke sa starog sajta u novo okruženje, ne bi se izgubilo ništa – mirne duše smo mogli da zaboravimo na sav ASP, DHTML, Microsoft SQL Server… No bilo nam je nekako žao da to uradimo – voleli smo stari sajt i želeli da se za istoriju sačuva i njegov originalni izgled. Osim toga, šta sa raznoraznim linkovima po svetu gde je neko referencirao tekst objavljen na starom sajtu, zar da klik na njih rezultuje greškom…

Kada naprave novi sajt, ljudi obično obrišu stari i zaborave na njega. Tako se gube toliki vredni (i uzgred mnogi bezvredni), godinama prikupljani podaci

I tako rešimo da sačuvamo stari sajt u njegovom starom sjaju. Iznajmimo na EUNET-u virtuelnu Windows Server mašinu i postavimo na nju stari sajt tako da bude na adresi pc2.pcpress.rs. A kad smo već bili u radnji, postavimo i prastari sajt, onaj koji je iz meseca u mesec ručno pisan, na pc1.pcpress.rs – što da se i on izgubi. Trebalo je još napraviti magiju da se svaki poziv na pc.pcpress.rs/.asp. rediriguje na pc2.pcpress.rs/.asp. i da tako staro opstane u Internet svetu paralelno sa novim. Idealna kombinacija.

To što mi čuvamo tradiciju ne znači nužno da je i ostali čuvaju. Eto recimo Microsoft – Windows Server 2003, na kome je naš sajt zasnovan, proglašen je zastarelim i podrška za njega je prestala sredinom 2015. godine. Prebaciti naš softver na aktuelni Windows Server 2025 nije lak zadatak, pošto se ASP jezik značajno promenio u međuvremenu – kada stavite stari kod, on prijavljuje hiljade grešaka; preveliki bi posao bio da se to prilagođava. I tako, rešimo da ostavimo Windows Server 2003 takav kakav je – za njega više nema bezbednosnih unapređenja, opasno je da takva mašina bude na Internetu, ali šta da se radi; ako se zapati neki virus, prosto ćemo vratiti ispravnu verziju sa backup-a. Pa dok služi – služi.

Pročitajte i:  Novi Copilot režim u Microsoft Edgeu uz više AI

Crni četvrtak

Služilo je do četvrtka 9. januara 2020. godine. A onda, u večernjim časovima, javlja mi EUNET-ov (sada SBB) automatski nadzorni sistem da nešto nije u redu. Mašina se, doduše, odaziva na ping, ali sajt se ne otvara. Probam da se prijavim na mašinu koristeći Remote Desktop, vrti se nešto ali… Srećom ostavim ga da se vrti i posle nekog vremena, ničim izazvano, ulogujem se na mašinu. Tamo se sve vuče kao kornjača, ali startujem nekako Task Manager i vidim da je procesor opterećen 100%. Dobro, svi znamo da bi se problemi, kada bi automobili funkcionisali kao i računari, rešavali tako što izađeš iz vozila i ponovo uđeš u njega, pa u skladu s tim najpre restartujem računar. Valjda će sve da se reši samo.

PCPress.rs Image
Prva verzija PC Press sajta iz decembra 1996. godine. I dalje „živi“ na muzejskom serveru, adresa http://pc1.pcpress.rs/arhiva/20

Nije se rešilo. Jedina posledica je bila da je opet trebalo čekati „pola sata“ da se prijavim na server, tek da bih ustanovio da je procesor i dalje zauzet 100%. Da vidimo koji proces troši resurse… Task Manager kaže – ni jedan. Kako to? Posle shvatim da Task Manager u osnovnom stanju prikazuje samo moje procese; kažem mu da prikaže i ostale procese na mašini, i vidim da Microsoft SQL Server 2005 angažuje 100% procesora. Ubijem taj proces, mašini lakne, sve odmah radi normalno, ali sajt ne funkcioniše jer su mu potrebni podaci koje dotični SQL Server čuva.

Moja prva (i jedina) pretpostavka je bila da je mašina, koja već pet godina živi na Internetu bez ikakvih sistems­kih osvežavanja, fasovala neki virus i da sada masovno šalje spam po svetu, napada druge računare za potrebe nepoznatih nalogodavaca ili pravi neke druge nepodopštine. Malo čudno da se to dešava preko SQL Server-a, ali ko će ga znati… Instaliram Malwarebytes (morao sam da tražim staru verzija jer tekuća neće da se instalira, ali srećom i ta stara verzija posle učita najnovije definicije virusa), pustim ga da detaljno analizira disk i pročitam da nema štetnih sadržaja – sve je u redu. Samo što ništa ne radi.

Kad reklame presuše

Pošto nisam znao šta bih dalje, pošaljem poruku SBB-ovoj službi podrške i zamolim da pogledaju u čemu je stvar sa našim serverom, ili makar da vrate sajt na stanje od pre recimo nedelju dana – neće se time ništa izgubiti jer na sajtu i tako nije bilo promena već 5 godina. Oni mi ljubazno kažu da smo zakupili non-managed hosting, dakle da mi sami održavamo svoju mašinu, te nam daju nekoliko dobrih saveta šta treba da pogledamo. A vraćanje mašine u pređašnje stanje nije rešilo problem.

Pročitajte i:  Filmovi koji nisu na Movies Anywhere

Pošto su oni fini ljudi s kojima već godinama sarađujemo, lepo ih zamolim da ipak pogledaju, i pošto su utrošili priličan broj radnih sati, stiže izveštaj u kome kaže da je računar OK, da je integritet fajl sistema i SQL baze podataka očuvan, a da havarija nastaje zato što se upit koji treba da ispisuje reklamne banere vrti u mrtvoj petlji.

Prešli smo na CRM da bi se spasli ručnog kodiranja u HTML-u, a zašto sada ne bismo koristili nekog bota koji će proći kroz sve stranice sajta, naterati CRM da ih generiše i onda ih zapisati na disk u HTML formatu?

I onda meni sine: baneri. Prodajemo, naravno, reklame na sajtu i za njih su u okviru dizajna rezervisane pozicije: gore, desno, između stavki… Za svaki baner postoji podatak kada počinje da se prikazuje i kada prestaje da se prikazuje. Pošto se na „istorijskom“ sajtu niko neće oglašavati, ostavili smo banere koji su se u zadnjem trenutku zatekli i stavili da se oni vrte „zauvek“. Ali kompjuter nema datum „zauvek“, mora nešto da se napiše. I tako je onaj ko je to podešavao (možda sam to bio i ja) stavio da se baneri prikazuju do 01.01.2020. godine što je tamo neke 2014. godine zvučalo kao „zauvek“.

E pa, 2020. godina nije zauvek… dan po dan, dođe i ona. I tako kažem Tihomiru iz službe podrške da vrati datum na mašini na 2019. godinu. I sajt proradi kao nov. Ulogujem se u administratorsku sekciju (trebalo je setiti se šest godina stare lozinke) i, naravno… baneri ističu 09.01.2020. godine, odnosno kako tamo piše 9. siječnja 2020. E sad zašto je mašina setovana na hrvatski, i zašto se baner ipak prikazivao do 9. siječnja… to pitajte našeg programera. A naročito ga pitajte zašto kad nema ni jednog banera za ispisivanje, SQL upit upadne u mrtvu petlju i „troši“ 100% procesora.

Epilog? Postavio sam da baneri važe do 1. siječnja 2120, a da li je to zauvek… misliću o tome za 100 godina. Problem rešen?

Kad sve zabajati

Problem je samo odložen. U narednih 5 godina bilo je raznih doživljaja sa starim sajtom. Recimo, iz čista mira nestanu neki tekstovi koji su prikazivani na naslovnoj strani. Ili nestane čitav sajt, što se reši restartovanjem računara. Ili se prikazuje tekst u sistemskom fontu a ne našim pažljivo izabranim fontovima. Ili se izgube datumi publikovanja svih tekstova u bazi. Ili naprasno nestanu sve slike u tekstovima. I tako redom. Mučio sam se sa rešavanjem tih prob­lema, više ili manje uspešno, ali je vremenom postalo jasno da od posla nema ništa. Ne možete da godine 2025. aktivno koristite server koji radi sa softverom iz 2001. godine. Žalosno, ali je tako.

Napomenuo bih da sam i dalje prijatno iznenađen činjenicom da naš Windows Server 2003, SQL Server 2005 i drugi prateći programi za sve ovo vreme nisu hakovani, iako su bili „na izvol’te“ čitavom globalnom Internetu. Moguće je da je neki od problema bio posledica hakerskih napada (recimo, gubitak jedne kolone u tabeli je baš delovao sumnjivo), ali hakeri nisu preuzeli kontrolu nad serverom, koristili ga za slanje spama ili na bilo koji način ugrozili njegov integritet. Ipak su te Microsoft tehnologije robusnije nego što mi često mislimo.

Pročitajte i:  Google - vremenska prognoza uz AI

A da se vratimo unazad?

Kada smo došli do zaključka da server više ne radi nego što radi, trebalo je nešto preduzeti. Najlogičnije bi bilo isključiti ga i zaboraviti na čitav stari sajt. Pre tog drastičnog rešenja, hteli smo da ipak pokušamo nešto… I tako dođosmo na ideju da sajt „vratimo unazad“. Prešli smo na CRM da bismo se spasli ručnog kodiranja u HTML-u, a zašto sada ne bismo koristili nekog bota koji će proći kroz sve stranice sajta, naterati CRM da ih generiše i onda ih zapisati na disk u HTML formatu? Onda ćemo te fajlove staviti na običan Web server, gde će moći da žive „zauvek“, ili barem dok osnovni HTML format bude postojao. Neće sve raditi kao pre, recimo komande za pretraživanje sadržaja, ali će stranice izgledati isto i svi linkovi sa drugih sajtova i sa pretraživača (ono što je Google pre mnogo godina crawl-ovao) će funkcionisati kao i do sada. I još ćemo im dodati sertifikat tako da im se može pristupati sigurnim https protokolom, što nismo umeli da instaliramo na starom Windows serveru.

Za konzerviranje sajta koristili smo wget koji postoji u verziji za Linux i Windows. Komanda je nalik na:
wget –mirror –convert- links –adjust-extension –page-requisites –no-
parent http://pc2.pcpress.rs

Procedura potraje prilično dugo, i najzad se u folderu pc2.pcpress.rs nađe „milion“ fajlova i foldera sa sadržajem sajta. Najpre je sve to bilo slabo čitljivo, trebalo je dosta toga popraviti, u čemu nam je pomogao kolega Vladimir Kukuruzović. Prvi problem je bio u brojnim statički kodiranim linkovima, što je rešeno običnim search and replace iz komandne linije u Linux-u:

find . -iname “.html” -type f -print0 |xargs -0 -I ime sed -i -e “s/.asp\”/.asp.html\”/” ime find . -iname “.html” -type f -print0 |xargs -0 -I ime sed -i -e “s/http:\/\/pc2.pcpress.rs//” ime

Posle toga su stvari uglavnom proradile, ali je i dalje bilo problema. U Microsoft ASP-u koji je tada korišćen moglo je da se piše nešto kao href=“/arhiva/tekst.asp?broj=210&tekstID=11346“ a fajl ne može da se zove tako – ono & u imenu treba pretvoriti u znak &, a onda promeniti i sve reference. Mučio sam se sa search/replace u Linux-u i najzad nisam uspeo, pa sam napisao Python program koji je to sredio.

Problem je bio i u tome što je sajt hostovan na Windows-u, gde su velika slova jednaka malim. A sada smo ga prebacili na Linux gde se malo slovo razlikuje od velikog (nikad mi se nije sviđala ta konvencija, ali šta je tu je), pa je bilo neispravnih linkova koje je trebalo popravljati. Radio sam to ručno jer grešaka nije bilo toliko da bih pisao program. Probleme je locirala Python biblioteka link­checker – komanda kojom se ona poziva je nalik na linkchecker https://pc2.pcpress.rs –file-output=csv) – spora je, ali nađe greške.

I tako pc1.pcpress.rs, pc2.pcpress.rs i pcmuzej.com srećno žive na Linux serveru na kome mogu da ostanu… pa, recimo zauvek.

Facebook komentari:
Tagovi: , , ,

Dejan Ristanović

www.dejanristanovic.com

Leave a Reply

Your email address will not be published. Required fields are marked *