deployment php aplikací | webexpo 2011

23
Jan Mittner Deployment PHP aplikací

Upload: jan-mittner

Post on 12-May-2015

2.775 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Deployment PHP aplikací | WebExpo 2011

Jan Mittner

Deployment PHP aplikací

Page 2: Deployment PHP aplikací | WebExpo 2011

Kdo jsme a co děláme?

Page 3: Deployment PHP aplikací | WebExpo 2011

Vergilio, s.r.o.

malé webové studio

co děláme tvorba webů a webových aplikací

desítky klientů150 projektů

ze známějších projektů např. Jízdomat.cz

Page 4: Deployment PHP aplikací | WebExpo 2011

Jaký problém jsme řešili?

Page 5: Deployment PHP aplikací | WebExpo 2011

Deployment PHP aplikací

mnoho projektů s častými aktualizacemi desítky až stovky úprav měsíčně jak je nahrát do produkčního prostředí?

deployment aplikace řada rutinních kroků na mnoha místech možnost udělání chyby žádná přidaná hodnota nikoho to nebaví

Page 6: Deployment PHP aplikací | WebExpo 2011

Lokální práce

vývojáře

Commit do repository

Spuštění FTP klienta

Připojení ke správnému FTP serveru

občas se na com

mit zapom

ene…

Výběr změněných

souborů

Spuštění přenosu

Čekání na dokončení přenosu

Otevření databázového

klienta

Přihlášení do databáze

Je vše OK? opa

kování přen

osu (F

TP

padá…

)

Úprava databázového

schématu

Kontrola výsledku

a chyb

Je vše OK?

Notifikace týmu o

deploymentu

Notifikace zákazníka o deploymentu

Page 7: Deployment PHP aplikací | WebExpo 2011

Lokální práce

vývojáře

Commit do repository

Otevření deployovací

aplikace

Kliknutí na tlačítko

„Deploy!”

Page 8: Deployment PHP aplikací | WebExpo 2011

Jak jsme to vyřešili?

Page 9: Deployment PHP aplikací | WebExpo 2011

Automatizovaný deployment

SVN + Phing + DBDeploy deployovací aplikace

klient deployovací aplikacePhing skript

SVN repository

deployovací aplikacePhing skript

SVN klient

vývojář integrační / test server produkční server(y)

Page 10: Deployment PHP aplikací | WebExpo 2011

Live ukázka

Page 11: Deployment PHP aplikací | WebExpo 2011

Funkcionalita #1

přenos jen změněných souborů tisíce souborů, stovky adresářů

migrace databáze spouštění delta skriptů pro migraci databáze zálohování databáze před migrací

různá konfigurace pro různá běhová prostředí např. doplnění produkčních hesel

aby nebyla uložena v repository, ale doplnila se až při deploymentu

můžeme tak nechat na projektu pracovat kohokoliv

Page 12: Deployment PHP aplikací | WebExpo 2011

Funkcionalita #2

linkování externích knihoven a sdílených adresářů Zend Framework, Nette, ... uploadované soubory, logy, ...

automatické odstraňování cache a dalších souborů

členové týmu i zákazník obdrží e-mail s notifikací včetně přehledu provedených změn (volitelně)

Page 13: Deployment PHP aplikací | WebExpo 2011

Eliminace rizika lidského faktoru

nikdo nezná hesla do žádných služeb FTP, SSH, DB, …

špatný adresář nebo soubor při uploadu

opomenutí commitu do repository

méně technicky zkušení členové týmu např. grafici

… a to vše na jedno kliknutí

Page 14: Deployment PHP aplikací | WebExpo 2011

Jak tedy na to?

Page 15: Deployment PHP aplikací | WebExpo 2011

Charakteristika řešení #1

systém pro správu verzí nezbytným základem SVN, Git, …

automatizace potřebných kroků pomocí nástroje Phing velmi podobné javovému nástroji Ant řada připravených a užitečných tasků možnost psát vlastní tasky jednoduše a rychle přímo v

PHP

spouštění phingových skriptů pomocí deployovací aplikace instalované na produkčním a integračním serveru

Page 16: Deployment PHP aplikací | WebExpo 2011

Charakteristika řešení #2

pro všechny projekty je stejný build skript (orchestrační skript) automaticky modifikován dle konfigurace daného projektu

symlinky (sdílené adresáře) replace pravidla (produkční hesla) remove pravidla (cache)

dostatečně univerzální řešení (proprietární aplikace, ZF, Wordpress)

logika fungování podobná nástroji Capistrano pro RoR current, releases a shared adresáře - symlinking

Phing i DBDeploy musel být trochu upraven úprava stávajících tasků, přidání vlastních tasků celé ale v PHP

Page 17: Deployment PHP aplikací | WebExpo 2011

Možná rozšíření

spouštění testů na testovacím serveru

napojení na CI server Jenkins, PHPUnderControl, CruiseControl, … PHP CodeSniffer, PHPMD, PDepend, …

javascripty a CSS soubory minifikace kombinování souborů přímá podpora Phingu

Page 18: Deployment PHP aplikací | WebExpo 2011

Co když…

… máte hosting jen s FTP přístupem?

… máte hosting se SFTP/SCP přístupem?

… máte vlastní server nebo SSH přístup?

Page 19: Deployment PHP aplikací | WebExpo 2011

Jak začít?

1. Nainstalujte si PEAR + Phing

2. Vytvořte první build skript

3. Přidejte úkoly pro deploy target

4. Spusťte phing deploy –buildfile script.xml

5. Upravujte build skript k obrazu svému

6. Zautomatizujte spouštění phingu

Page 20: Deployment PHP aplikací | WebExpo 2011

Zhodnocení našeho řešení

aktivně využíváno od dubna 2010 u 150 projektů

průměrně 8 deploymentů denně min. 1/2hodinová úspora času denně roční úspora odhadem až 20 čld.

značné snížení chybovosti a zvýšení agilnosti cokoliv se otestuje, je možné ihned nasadit databáze a aplikace vždy ve stejné verzi všechno musí projít přes repository

Page 21: Deployment PHP aplikací | WebExpo 2011

Existující řešení

Capistrano, Capifony, Phingistrano, Pake, … ne však zcela univerzální řešení

PHPFog, PagodaBox PaaS cloudové služby s možností one-click

deploymentu neposkytují však všechny popisované funkce

připravujeme vlastní projekt Elephantra.cz ne open-source, ale důležité funkce zdarma

Page 22: Deployment PHP aplikací | WebExpo 2011

Co si odnést?

manuální deployment je ztráta času a peněz

deployment PHP aplikací lze automatizovat

existují nástroje, které vám pomohou

Page 23: Deployment PHP aplikací | WebExpo 2011

Děkuji za pozornost

Vaše dotazy?