Klávesové zkratky na tomto webu - rozšířené Na obsah stránky

28
č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í?

napsáno 28. 6. 2006 | shlédnuto 7621x | nahoru

Komentáře RSS 2.0 komentářů » přidat

#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.

Posláno 28. 6. 2006 v 17.20 | Odpovědět

#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á :)

Posláno 28. 6. 2006 v 17.38 | Odpovědět

#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…

Posláno 28. 6. 2006 v 17.39 | Odpovědět
avatar

#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 ;-)

Posláno 28. 6. 2006 v 17.49 | Odpovědět

#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ý.

Posláno 28. 6. 2006 v 17.54 | Odpovědět

#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 nepredvidatel­nosti?

Leo

Posláno 28. 6. 2006 v 17.59 | Odpovědět
Na komentář reagoval [12] Reg

#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.

Posláno 28. 6. 2006 v 18.02 | Odpovědět
avatar

#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:

if(is_dir("stop")){
  echo "<h1>Web dočasně odstaven v " . date("j.n.Y H:i:s", filemtime("stop")) . ".</h1>";
  exit;
}

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.

Posláno 28. 6. 2006 v 18.20 | Odpovědět
Na komentář reagoval [10] Arcao

#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.

Posláno 28. 6. 2006 v 19.05 | Odpovědět
Na komentář reagoval [11] Arcao
avatar

#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.

Posláno 28. 6. 2006 v 19.06 | Odpovědět
Na komentář reagoval [15] llook
avatar

#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…

Posláno 28. 6. 2006 v 19.07 | Odpovědět
avatar

#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…

Posláno 28. 6. 2006 v 19.12 | Odpovědět
avatar

#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?:))

Posláno 28. 6. 2006 v 19.20 | Odpovědět
avatar

#14 Arcao http://www.arcao.com nový

PS: Varování ministerstva zdravotnictví: Čtení automaticky generovaných komentářů může způsobovat imbecilitu.

Posláno 28. 6. 2006 v 19.28 | Odpovědět
avatar

#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…

Posláno 28. 6. 2006 ve 20.41 | Odpovědět
avatar

#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

Posláno 28. 6. 2006 ve 20.58 | Odpovědět
Na komentář reagoval [17] Borek [20] rarouš

#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ý :)

Posláno 28. 6. 2006 ve 21.29 | Odpovědět
Na komentář reagoval [18] Arcao [24] Qwe
avatar

#18 Arcao http://www.arcao.com nový

#17 Borek: né všude je povolené používání .htaccess souborů…

Posláno 28. 6. 2006 ve 21.43 | Odpovědět

#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.

Posláno 28. 6. 2006 ve 22.52 | Odpovědět
Na komentář reagoval [22] Mordae
avatar

#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

Posláno 28. 6. 2006 ve 22.53 | Odpovědět
avatar

#21 Petr Gürth nový

  • spustím 503 stránku v systému
  • svn update
  • vypustím 503 stránku v systému

Jde to jednoduššeji?

Posláno 29. 6. 2006 v 0.19 | Odpovědět
avatar

#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…

Posláno 29. 6. 2006 v 6.29 | Odpovědět
avatar

#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.

Posláno 29. 6. 2006 v 8.41 | Odpovědět

#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 ;)

Posláno 29. 6. 2006 v 9.17 | Odpovědět
Na komentář reagoval [26] Borek
avatar

#25 error414 http://www.error414.com/ nový

Dam boty za to ze DGX chysta nejakou ficurku jak to obejit.

Posláno 29. 6. 2006 ve 12.01 | Odpovědět
Na komentář reagoval [27] Borek [28] David Grudl

#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 :)

Posláno 29. 6. 2006 ve 12.09 | Odpovědět

#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í…

Posláno 29. 6. 2006 ve 12.18 | Odpovědět
avatar

#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.

Posláno 29. 6. 2006 ve 13.42 | Odpovědět

#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.

Posláno 29. 6. 2006 ve 14.44 | Odpovědět

#30 mrzout nový

Kdybych se tim chtel zabyvat, nahraju to vedle a pak zmenim cesty v nastaveni vhosta a reloadnu apache.

Ale nechci :)

Posláno 29. 6. 2006 ve 22.00 | Odpovědět
avatar

#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í…

Posláno 30. 6. 2006 ve 22.34 | Odpovědět

#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

Posláno 15. 7. 2006 v 19.08 | Odpovědět

#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é.

Posláno 13. 2. 2007 ve 14.08 | Odpovědět
avatar

#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.

Posláno 23. 11. 2007 ve 12.51 | Odpovědět

Tento článek byl uzavřen. Už není možné k němu přidávat komentáře.

Výtah na začátek článku na první komentář

Názory čtenářů v diskusích nejsou názory provozovatele webu, a ten za jejich obsah neodpovídá.

Poslední články

Projekty

Statistiky

Odběr zpráv