deployment php aplikací | webexpo 2011

Post on 12-May-2015

2.775 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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?

top related