červem
2006
Schrödingerův web
Jak aktualizujete webové aplikace? Přes FTP přepíšete soubory za novější? Co se dá říci o chování webu v průběhu přepisování?
Asi jen to, že bude naprosto nepředvídatelné. V lepším případě náhodný návštěvník uvidí prázdnou stránku (Fatal Error), v horším případě citlivé informace či nechtě způsobí poškození dat.
Nejde jen o to, že v každém okamžiku je na webu jiný mix starých a
nových souborů, ale že zrovna kopírovaný soubor může být v tom
nejnepříjemnějším místě přerušený. Prázdný soubor
(require je spokojeno), jenž má obsahovat důležitou tabulku
práv, může k neštěstí stačit.
Vždyť je to jen vteřinka
Jednak, neříká se vteřina ale sekunda :) a za druhé, internetové spojení a elektrika si dobře vybírají, kdy vypadnout, a takhle chvíle je k tomu jako stvořená.
Navíc ona to sekundička není. Třeba La Trine zobrazuje ve špičce stránku každých 5 sekund a tak bleskově CMS rozhodně neupgradnu.
Co s tím?
Na podobné situace jsou nejlépe vyzbrojeny databáze: mají transakce. U souborových systémů si musíme poradit jinak. Třeba novou verzi nahrát do dočasného adresáře a ten pak přejmenovat.
Z důvodu rychlého (skoro)atomického uploadu také vytvářím tzv. „compact“ verze open-source aplikací. Návod na stlačení skriptů jsem uveřejňoval už dříve.
A japato děláte vy? Spoléháte na štěstí?
Komentáře
» přidat
Tento článek byl uzavřen. Už není možné k němu přidávat komentáře.

#1 Jirka Ch http://www.chomat.net/ nový
Osobně používám především rsync v kombinaci se SSH. Několikrát jsem použil i onu fintu s přejmenováním adresáře.
#2 XThom http://blog.gluchman.sk nový
Kvôli nechcenému zobrazeniu citlivých údajov, či errorov je najlepšie asi upgradeovať v noci, čo ale je nechránené voči absencií elektriny.
Najlepšie je potom asi na nejaký čas stránku „zablokovať“ s oznamom na štýl „momentíček, za chvíľu to tu bude back“. Inteligentný návštevník pochopí a počká :)
#3 marek http://www.ibike.cz nový
hlavně na štěstí, jde taky o to kdy, ve tři ráno mam většinou kliku :) a u důležitějších webů přejmenovávám…
#4 Václav Vaník http://www.walk.cz nový
Já to dělám tak, že na server nahraju index.html s hláškou, že server se upgraduje a pak .htaccess, kde přesměruji vše na index.html, až je vše upgradnuto, tak oba soubory smažu
#5 Jirka Pech http://hq.cz nový
Trik s přejmenováním používám, ale u SELinuxu doporučuji nezapomenout na obnovenení správného nastavení adresářů, atd.
Další z možných triků je všechno připravit v jiném adresáři a přepnout document root pomocí graceful restartu apache (pokud používáte tento web server). Sice s tím už musíte počítat v návrhu aplikace, ale řešení je to velmi elegantní, protože výpadek je prakticky nulový.
#6 Leo nový
Ja se tim nezatezuju, u webu co jsem delal to nehralo podstatnejsi roli. U prejmenovani adresare to znamena, ze musite prenest znova cely web (podadresar) ne? A co ma Schrodinger spolecneho s nepredvidatelnosti?
Leo
#7 error414 nový
u vlastniho blogu to nahrnu vecer, kdyz se neco podela tak mohu aspon nadavat.
Jinak na vecech kde jde o prachy pouzivem CVS. Nevim presne jak to interne resi, mozna to tam jen nakopiruje rychle nevim. Byl mi doporucen na updaty webu.
#8 Pavel Zbytovský nový
Díky mod_rewritu mi jdou všechny skripty přes index.php a pokud chci web pozastavit, jen si vytvořím přes FTP složku s názvem stop. Myšlenka:
A ještě si ze zkušenosti ukládám všechna POST data, kdyby někdo náhodou vkládal článek, tak aby se nic neztratilo.
#9 Pjotr http://sietook.druskova.sk nový
XThom, ale v noci je to len lokálne, pretože ak sa niekto pozrie z opačného konca planéty (samozrejme, že Zem), tak to má povedzme, že aj poludnie.
#10 Arcao http://www.arcao.com nový
#8 Pavel Zbytovský: dobrý nápad, ale ještě by bylo možná lepší místo českých znaků použít escapované verze &#xxx; , nebo posílat kódování dokumentu. Dále by tam třeba mohlo být meta refresh, který by dotyčného člověka automaticky přesměroval, pokud by byl update dokončen.
#11 Arcao http://www.arcao.com nový
#9 Pjotr: pokud děláš web czech only tak je to v pohodě, jinak nejlepší čas na noční updaty je kolem 4 hodiny ráno…
#12 Reg http://reg.regzone.org nový
#6 Leo: no to je přeci podle toho kvantovýho pokusu s Schrodingerovou kočkou kde neni určený jesli je kočka živá nebo mrtvá dokud se na ní někdo nepodívá nebo nějak tak…
#13 Huggi nový
brzo ‚po ranu‘ pouhym prepsanim..ale je pravda, ze to nejsou ninjak dulezity weby..;)
Čtení blogů po očku může způsobovat šilhavost.
nema nahodou varovani bejt prez 1/3 plochy?:))
#14 Arcao http://www.arcao.com nový
PS: Varování ministerstva zdravotnictví: Čtení automaticky generovaných komentářů může způsobovat imbecilitu.
#15 llook http://llook.wz.cz/weblog/ nový
#10 Arcao: tady někdo nechápe, že když je u kódu napsáno „myšlenka“, že jde o něco jako pseudokód…
#16 Lukáš Lánský http://www.czech-ware.net/lansky nový
No, nebyl bych to já, kdybych nezdůraznil technologickou dominanci technologie ASP.NET, která na podobné situace pamatuje
Tajemství souboru app_offline.htm
#17 Borek http://www.borber.com/ nový
#16 Lukáš Lánský: To není technologická dominance, ale usnadnění práce, která by normálně zabrala asi 2 minuty (jak už někdo psal, .htaccess a maintanance.htm to řeší).
Jiná možnost: v Drupalu je „app_offline“ zabudováno do CMS. Tak je to správne a tak to ma byť.
Ale co si budeme povídat, upload přes FTP stejně dělá u malých věcí každý :)
#18 Arcao http://www.arcao.com nový
#17 Borek: né všude je povolené používání .htaccess souborů…
#19 *V*ě*r*o*š* http://www.cestovatel.cz/~2/ nový
Při velkých změnách shodím aplikační server, po opravení/upgradu ho zase nahodím.
Až budu plánovat dlouhou odstávku, tak spustím kopii serveru, která bude hlásit „pracuje se“ a patřičný HTTP response (503?).
Jen ještě musím někde sehnat lopatu, abych se s ní vyfotil. Nápis „pracuje se“ bez obrázku kopáče je nanic.
#20 rarouš http://www.rarous.net nový
Jak psal kolega #16 Lukáš Lánský: v ASP .NET využívám možnosti
app_offline.htm, nejen při FTP nahrávání, ale i při deployi ze Studia a v práci má staging na starosti někdo jiný :D#21 Petr Gürth nový
Jde to jednoduššeji?
#22 Mordae http://mordae.net nový
#19 *V*ě*r*o*š*: Sakra, lidi, ja se snad necham premluvit a budu taky delat v Py, jenom me sakra nici syntax, moc odlisna od C…
#23 Tom http://blog.hubalek.net/ nový
Ja hostuju na freehostingu pipni.cz, kde jsou vypadky beznym chovanim, takze se ten upgradovy od toho serveroveho vubec nepozna
Myslim ze pri celkove dostupnosti serveru 87% nema nejakta vterika na zazitek z webu zadny negativni vliv.
#24 Qwe nový
#17 Borek: nahozenim app_offline.htm se take detachuje databaze a dalsi navazane zalezitosti, takze to neni „nahrada neceho, co lze napsat za 2 minuty“ – je to pomerne promyslene ;)
#25 error414 http://www.error414.com/ nový
Dam boty za to ze DGX chysta nejakou ficurku jak to obejit.
#26 Borek http://www.borber.com/ nový
#24 Qwe: Detachování je záležitost SQL Serveru, tady byla řeč o problému přepisování starých souborů novými a to lze velmi snadno zařídit i jinde. Tím ale app_offline nijak nehaním, je to dobrá věc, jen si nemyslím, že by dokazovala „technologickou dominanci“ ASP.NET. Ta je dokázána úplně jinými věcmi :)
#27 Borek http://www.borber.com/ nový
#25 error414: Jaké máš číslo, měl bych zájem :) Tohle totiž nelze vyřešit – buďto je to vestavěno přímo v technologii (v ASP.NET to je, v PHP nikoliv) nebo máš smůlu. Dá se to řešit, když máš přístup k .htaccess nebo httpd.ini souborům, ale to už se nebavíme o univerzálním řešení…
#28 David Grudl http://davidgrudl.com nový
#25 error414: Tady padlo docela dost hezkých řešení a tím se záměr vlastně vyplnil – každý si může vybrat podle gusta.
#29 carnero http://carnero.info nový
U některých serverů vzniká při uploadu přes FTP v rootu dočasný soubor – využíval jsem to, kontroloval jsem zda existuje a pokud ano, uživatel měl na chvíli informaci o „aktualizaci“ – osobní web, takže minuta offline až tak nevadila a lepší než nějaká blbost.
#30 mrzout nový
Kdybych se tim chtel zabyvat, nahraju to vedle a pak zmenim cesty v nastaveni vhosta a reloadnu apache.
Ale nechci :)
#31 adzio http://adzio.net nový
Tak jde to udělat i následovně, sice to považuju za krajní nouzi, ale budiž. Ku příkladu je třeba upgradeovat soubor xy.php nebo index.php…Hotový soubor přejmenujeme třeba na index1.php a nahrajeme na FTP. Stránka se stále načítá z staré verze index.php…Pak je třeba mít hrooozně rychlé FTP a taky myš, rychle přejemnovat a smazat…Je to sice naprosto laické, ale pro lamy ideální…
#32 Pachollini http://www.all-stars.cz/ nový
U těch důležitých:
scp user@server:www/web ./web-new
mv web web-old; mv web-new web
#33 Jakub Vrána http://php.vrana.cz/ nový
Já jsem si skript pro zpracování šablon upravil tak, že kompiluje až šablony, které jsou alespoň 2 –vteřiny– sekundy staré.
#34 Jan Tichý http://www.phpguru.cz/ nový
U projektů, kde na tom zase až tak nezáleží, to opravdu nechávám na náhodě, i když se mi to už párkrát vymstilo – zpravidla se mi kouslo FTP uprostřed uploadu nejdůležitějšího souboru a web pak vyhazoval rozličné parse errory.
Pro důležité projekty mi jako nejlepší řešení přijde mít klidně i více různých verzí aplikace uklizené někde v paralelních adresářích. Na tu aktuální pak udělat symlink. Když potřebuji aktualizovat, v pohodě si vytvořím další adresář s nejnovější verzí a když je upload v pořádku hotov, tak jenom přehodím symlink.