PHP fóra: Builder | JakPsatWeb | Webtrh
Nejste přihlášen(a)
Jakým způsobem řešíte deployment?
Snažím se udělat post commit hook v SVN, který by mi umožnil jednoduchý a rychlý deployment aplikací. Jenže je s tím moc problémů a celkově mě to nepřijde jako moc dobrá metoda. Takže – co používáte na deployment? Našel jsem třeba phing, ale připadá mi to jako tank na komára…
hledáme zkušené programátory v PHP / Nette: http://www.twobits.cz/volna-mista/
Offline
v podstatě to děláme ručně, řekneme SVN revizi, náš release manager udělá update ze SVN a případně pustí nějaký sql skripty. Taky by mě zajímalo jak to dělaj ostatní. Teď se spíš snažíme o používání pre commit hooků který by pouštěly unit testy a code sniffer.
Offline
Blba otazka: co to deployment? Pokud googlim spravne tak jde o nasazeni aplikace na produkcni server ne?
Osobne zvazuji tento postup, ale bohuzel jeste jsem to neprotlacil k pouzivani.
Drive jsem chtel mit v document_root klasickou SVN pracovni kopii, ale nekdo rikal, ze soubory v adresarich .svn je nebezpecne mit verejne. Takze export by to mel resit. Jedine co zbyva doresit je jak aktualizovat databazi.
Offline
No, nekde ve forech jsem videl reseni takove, ze se z SVN neexportovalo primo do document_root ale nekam do (treba) temp a pak se provedl rsync do document_root s vynechanim .svn. On je ale hlavni problem udelat tam nejak prava, protoze samozrejme je potreba chown na prislusneho uzivatele, pricemz je asi rozumny mit zvlast uzivatele na kazdy web. Udelat prislusny chown bez nutnosti byt root uz je celkem orisek (je k tomu potreba kompilovany skript). Ale potud je to asi jeste jednoduse resitelne.
Co s databazi, to fakt nevim. Napadlo me mit v kazdem projektu nejaky „updater“ skript, ktery se zavola po kazdem post-commit, zjisti, jestli existuje nejaky novy SQL delta skript a ktery soucasne udela nejaky zakladni cleanup (treba promaze tmp). Do toho se jeste nabizi potreba zastavit na dobu update prislusny vhost v apache (staci .htaccess?). Pak je taky otazka, jestli pouzivat post-commit hook, anebo rizene vyvolat ten export primo z toho update skriptu…
No a u tohohle jsme se zastavil, protoze to vypada na praci na tyden, a dost me udivuje, ze jsem na to nebyl schopny najit hotove reseni. Takze nez se do toho pustim, chtel bych si overit, ze skutecne nic rozumneho neni…
hledáme zkušené programátory v PHP / Nette: http://www.twobits.cz/volna-mista/
Offline
Asi by to slo nascriptovat pod PHP. Proste by apache spustil nejaky script a prava jsou vyresena. Maximalne nejaky postprocesing na chmod a promazani tempu a onu DB.
Export neni to same co Update. Export pouze stahne zdrojaky (zadne .svn)!
Offline
Na deployment používám konzolový skript napsaný v PHP (tj. spouští se
přes php.exe deployment.phpc). Jako parametr dostane INI soubor,
kde je specifikováno FTP, lokální a vzdálený adresář, které soubory a
adresáře vynechat, které tempy promazat, …
Po spuštění se vyhledají všechny soubory na lokálním počítači a uploadnou na server. Zároveň s tím se uploadne soubor obsahující seznam souborů a jejich hashe. Díky tomu se příště už uploadují jen změněné soubory.
Offline
phx: prava prave nejsou vyresena, protoze pak maji vsechny soubory ownera „apache“. Jeste by se to dalo snest na nejakem hostingu, kde neni ssh a tudiz ani zadna jina moznost (nez FTP), ale je to dost blba praxe… Urcite by tam nekde mel probehnout chown na nejakeho nezavadneho uzivatele a to skriptem neudelas.
David: Tohle se mi libi jako univerzalni reseni, ale ma to taky svoje mouchy – FTP je dost pofiderni protokol, prenos (byt jen zmen) trva dlouho a zapisy nejsou atomicke (v prubehu uploadu je skript v nestabilnim stavu). Nehlede na to, ze se obcas stane, ze se soubor prenaseny pres FTP „podela“. Kazdopadne je pak potreba stejne volat nejaky updater na serveru, uz jen kvuli databazi.
Vzhledem k tomu, ze vsechno mame na vlastnich serverech, asi zvolim nejake reseni zalozene na exportu z SVN, rsync, a pak update skript napsany v PHP ktery udela delta SQL, smaze temp a sessions a zkontroluje vysledek.
hledáme zkušené programátory v PHP / Nette: http://www.twobits.cz/volna-mista/
Offline
Wosonj napsal(a):
David: Tohle se mi libi jako univerzalni reseni, ale ma to taky svoje mouchy – FTP je dost pofiderni protokol, prenos (byt jen zmen) trva dlouho a zapisy nejsou atomicke (v prubehu uploadu je skript v nestabilnim stavu).
Funguje to tak, že všechny soubory se uploadují s postfixem .tmp, a to i opakovaně, dokud není upload OK a teprve pak se všechny přejmenují. Ani tak to není atomické, ale je to tomu o pořádný krok blíž.
Našel jsem na netu pro inspiraci http://bukaj.netuje.cz/…p-deployment
Offline
ha, to je dobre! to prejmenovani by uz afaik byt atomicke melo byt, pokud ma nejaky proces otevreny pro cteni blabla.php a ja udelam mv blabla.php.tmp blabla.php, tak ten proces myslim docte puvodni blabla.php. I kdyby ne, je to rozhodne rychla operace. Jeste to doplnit o preneseni .htaccess s vypnutim prislusneho vhostu na zacatku prejmenovani a jeho opetovne spusteni na konci a je vystarano :-)
hledáme zkušené programátory v PHP / Nette: http://www.twobits.cz/volna-mista/
Offline
A Davide podělíš se o upravenou verzi z Tvé kuchyně, nebo to zůstane pod pokličkou? :)
Tomik – tomik@jmx.cz | http://tomik.jmx.cz
Offline
Wosonj napsal(a):
ha, to je dobre! to prejmenovani by uz afaik byt atomicke melo byt, pokud ma nejaky proces otevreny pro cteni blabla.php a ja udelam mv blabla.php.tmp blabla.php, tak ten proces myslim docte puvodni blabla.php. I kdyby ne, je to rozhodne rychla operace.
Přesně tak, pokud takto nahrávám třeba archívy ke stažení, tak vlastně v jednu chvíli lidé stahují starý a v jednu chvíli nový, všechny jsou kompletní. Alespoň na Linuxu to tak je.
Jeste to doplnit o preneseni .htaccess s vypnutim prislusneho vhostu na zacatku prejmenovani a jeho opetovne spusteni na konci a je vystarano :-)
Dobrá připomínka, tohle řeším na úrovni aplikace detekcí jednoho .tmp souboru.
Offline
Tomik napsal(a):
A Davide podělíš se o upravenou verzi z Tvé kuchyně, nebo to zůstane pod pokličkou? :)
To není upravená verze ale vlastní. A ta zůstane pod pokličkou.
Offline
David Grudl napsal(a):
Tomik napsal(a):
A Davide podělíš se o upravenou verzi z Tvé kuchyně, nebo to zůstane pod pokličkou? :)
To není upravená verze ale vlastní. A ta zůstane pod pokličkou.
Je-li vlastní, tak tam patří! :)
Edit: tedy patří pod tu poličku, abychom si rozumněli. :)
Editoval Tomik (11. 2. 2009 15:43)
Tomik – tomik@jmx.cz | http://tomik.jmx.cz
Offline