Ako riešite „maintenance mode“?
- PhelixMad
- Člen | 36
Zdravím, chcel by som sa spýtať ako riešite vy „maintenance mode“?
Riešite to len odkomentovanim requiru v index.php bez naslednej možnosti testovania?
Alebo ste si napísali v BasePresenter metodu starup? Alebo nejak inak?
Bol by som rad, ak by ste sa podelili o vás „algoritmus“ ako to riesite alebo ako si myslíte, že je to správne?!
Ďakujem :)
- Michal Vyšinský
- Člen | 608
Ahoj. Otázka je, jestli je to vůbec potřeba, u nás máme staging environment, kde se vše důkladně otestuje a jednou za čas se udělá release do produkce, takže nepotřebujeme maintenance mód a testovat přímo na produkci. Deployment máme automatizovaný (bash skript spuštěný přes CircleCI).
Před začátkem kritické části deploye – composer, migrace, update zdrojáků – úplně přepíšeme soubor index.php. Po ukončení kritické části se se index.php znovu přepíše na aktuální a web běží dál… teda většinou :)
Editoval Michal Vyšinský (19. 5. 2015 12:32)
- Michal Vyšinský
- Člen | 608
@one-two u tohoto řešení je problém to, že i na produkci pak voláš při každém spuštění is_file()/file_exists() nebo podobnou funkci, která není zrovna nejrychlejší – šaháš na disk
Editoval Michal Vyšinský (19. 5. 2015 13:10)
- newPOPE
- Člen | 648
V jednoduchosti: len prepiname symlink :)
Detailnejsie:
- stage server (kde bezi CI Jenkins) sosne zdrojaky
- urobi build (composer, gulp, …)
- nastavi symlinky (aj na neexistujuce cesty, oni existuju az na produkcii :)) na log, temp, upload foldre. obsah ktory je cross buildy persistentny (inspirovane capistranom)
- dany build zbali (tar)
- prenesie na production server
- tam to rozbali do priecinka (napriklad /var/www/<project>/builds/<nejaky timestamp>)
- spusti DB migracie
- prepne symlink
current
→ na dany build - end
struktura na produkcii je nasledovna:
- builds = adresar s buildami
- shared = obsah ktory je len na produkcii (napr. uploady obrazkov atd…)
- current = symlink na posledny build
Pokial nemas nejak vytazenu app/server tonami pouzivatelov tak je to v pohode.
Editoval newPOPE (19. 5. 2015 13:57)
- one-two
- Člen | 80
@MichalVyšinský neni to trochu přehnaný? přiznám se, že jsem neprofiloval kolikrát se tyhle funkce volaj například v nette a doctrine, ale mam trochu pocit, že to „zbrždění“ je zanedbatelný… Nicméně přepsat celej index.php zní zajímavě :)
@newPOPE takže pokud někdo zrovna trefí request během db migrace, tak mu to spadne? :)
- David Kudera
- Člen | 455
Taky by mě zajímalo (na postgre). Všechno se provede při deployi bokem, ale kvůli db migracím se na chvíli musí spustit maintenance a vůbec se mi to nelíbí…