Deployment PHP aplikací | WebExpo 2011
-
Upload
jan-mittner -
Category
Technology
-
view
2.775 -
download
3
Transcript of Deployment PHP aplikací | WebExpo 2011
Jan Mittner
Deployment PHP aplikací
Kdo jsme a co děláme?
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
Jaký problém jsme řešili?
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í
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
Lokální práce
vývojáře
Commit do repository
Otevření deployovací
aplikace
Kliknutí na tlačítko
„Deploy!”
Jak jsme to vyřešili?
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)
Live ukázka
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
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ě)
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í
Jak tedy na to?
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
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
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
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?
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
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
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
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
Děkuji za pozornost
Vaše dotazy?