Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Deployment PHP aplikací | WebExpo 2011

3,456 views

Published on

Published in: Technology
  • Be the first to comment

Deployment PHP aplikací | WebExpo 2011

  1. 1. Deployment PHP aplikací<br />Jan Mittner<br />
  2. 2. Kdo jsme a co děláme?<br />
  3. 3. Vergilio, s.r.o.<br />malé webové studio<br />co děláme<br />tvorba webů a webových aplikací<br />desítky klientů<br />150 projektů<br />ze známějších projektů např. Jízdomat.cz<br />
  4. 4. Jaký problém jsme řešili?<br />
  5. 5. Deployment PHP aplikací<br />mnoho projektů s častými aktualizacemi<br />desítky až stovky úprav měsíčně<br />jak je nahrát do produkčního prostředí?<br />deployment aplikace<br />řada rutinních kroků<br />na mnoha místech možnost udělání chyby<br />žádná přidaná hodnota<br />nikoho to nebaví<br />
  6. 6. Otevření databázového klienta<br />Přihlášení do databáze<br />Úprava databázového schématu<br />Lokální práce vývojáře<br />Je vše OK?<br />Kontrola výsledku <br />a chyb<br />Commit do repository<br />Čekání na dokončení přenosu<br />občas se na commit zapomene…<br />Je vše OK?<br />opakování přenosu (FTP padá…)<br />Spuštění FTP klienta<br />Spuštění přenosu<br />Notifikace týmu o deploymentu<br />Notifikace zákazníka o deploymentu<br />Připojení ke správnému FTP serveru<br />Výběr změněných souborů<br />
  7. 7. Lokální práce vývojáře<br />Commit do repository<br />Otevření deployovací aplikace<br />Kliknutí na tlačítko „Deploy!”<br />
  8. 8. Jak jsme to vyřešili?<br />
  9. 9. Automatizovaný deployment<br />SVN + Phing + DBDeploy<br />deployovací aplikace <br />vývojář<br />produkční server(y)<br />integrační / test server<br />klient deployovací aplikace<br />Phing skript<br />SVN repository<br />SVN klient<br />deployovací aplikace<br />Phing skript<br />
  10. 10. Live ukázka<br />
  11. 11. Funkcionalita#1<br />přenos jen změněných souborů<br />tisíce souborů, stovky adresářů<br />migrace databáze<br />spouštění delta skriptů pro migraci databáze<br />zálohování databáze před migrací<br />různá konfigurace pro různá běhová prostředí<br />např. doplnění produkčních hesel<br />aby nebyla uložena v repository, ale doplnila se až při deploymentu<br />můžeme tak nechat na projektu pracovat kohokoliv<br />
  12. 12.
  13. 13. Funkcionalita #2<br />linkování externích knihoven a sdílených adresářů<br />Zend Framework, Nette, ...<br />uploadované soubory, logy, ...<br />automatické odstraňování cache a dalších souborů<br />členové týmu i zákazník obdrží e-mail s notifikací<br />včetně přehledu provedených změn (volitelně)<br />
  14. 14. Eliminace rizika lidského faktoru<br />nikdo nezná hesla do žádných služeb <br />FTP, SSH, DB, …<br />špatný adresář nebo soubor při uploadu<br />opomenutí commitu do repository<br />méně technicky zkušení členové týmu <br />např. grafici<br />… a to vše na jedno kliknutí<br />
  15. 15. Jak tedy na to?<br />
  16. 16. Charakteristika řešení #1<br />systém pro správu verzí nezbytným základem<br />SVN, Git, …<br />automatizace potřebných kroků pomocí nástroje Phing<br />velmi podobné javovému nástroji Ant<br />řada připravených a užitečných tasků <br />možnost psát vlastní tasky jednoduše a rychle přímo v PHP<br />spouštění phingových skriptů pomocí deployovací aplikace instalované na produkčním a integračním serveru<br />
  17. 17.
  18. 18.
  19. 19. Charakteristika řešení #2<br />pro všechny projekty je stejný build skript (orchestrační skript)<br />automaticky modifikován dle konfigurace daného projektu<br />symlinky (sdílené adresáře)<br />replace pravidla (produkční hesla)<br />remove pravidla (cache)<br />dostatečně univerzální řešení (proprietární aplikace, ZF, Wordpress)<br />logika fungování podobná nástroji Capistrano pro RoR<br />current, releases a shared adresáře - symlinking<br />Phing i DBDeploy musel být trochu upraven<br />úprava stávajících tasků, přidání vlastních tasků<br />celé ale v PHP<br />
  20. 20.
  21. 21. Možná rozšíření<br />spouštěnítestů na testovacím serveru<br />napojení na CI server<br />Jenkins, PHPUnderControl, CruiseControl, …<br />PHP CodeSniffer, PHPMD, PDepend, …<br />javascripty a CSS soubory<br />minifikace<br />kombinování souborů<br />přímá podpora Phingu<br />
  22. 22. Co když…<br />… máte hosting jen s FTP přístupem?<br />… máte hosting se SFTP/SCP přístupem?<br />… máte vlastní server nebo SSH přístup?<br />
  23. 23. Jak začít?<br />1. Nainstalujte si PEAR + Phing <br />2. Vytvořte první build skript<br />3. Přidejte úkoly pro deploy target <br />4. Spusťte phing deploy –buildfilescript.xml<br />5. Upravujte build skript k obrazu svému<br />6. Zautomatizujte spouštění phingu<br />
  24. 24. Zhodnocení našeho řešení<br />aktivně využíváno od dubna 2010 u 150 projektů<br />průměrně 8 deploymentů denně<br />min. 1/2hodinová úspora času denně<br />roční úspora odhadem až 20 čld.<br />značné snížení chybovosti a zvýšení agilnosti<br />cokoliv se otestuje, je možné ihned nasadit<br />databáze a aplikace vždy ve stejné verzi<br />všechno musí projít přes repository<br />
  25. 25. Existující řešení<br />Capistrano, Capifony, Phingistrano, Pake, …<br />ne však zcela univerzální řešení<br />PHPFog, PagodaBox<br />PaaS cloudové služby s možností one-click deploymentu<br />neposkytují však všechny popisované funkce<br />připravujeme vlastní projekt Elephantra.cz<br />ne open-source, ale důležité funkce zdarma<br />
  26. 26. Co si odnést?<br />manuální deployment je ztráta času a peněz<br />deployment PHP aplikací lze automatizovat<br />existujínástroje, které vám pomohou<br />
  27. 27. Děkuji za pozornostVaše dotazy?<br />

×