Producții PHP automatizare highload deploya pe serverul

prodakshene Codul de actualizare (sau Deploy), una dintre treburile pe care trebuie să le îndeplinească din timp în timp, și în funcție de complexitatea arhitecturii poate deveni sau pur și simplu, sau un proces teribil de plictisitor.







Suntem programatori pentru a automatiza de rutină, așa că aici ne vom concentra pe automatizarea procesului de actualizare în producțiile de descărcare, folosind peeped în utilitate Rubyists Capistrano.

Capistrano este distribuit ca un gem'a rubin, prin urmare, pentru a stabili primele pietre set:

urmată de o bijuterie set Capistrano

Că ar trebui să desfășoare procesul de a construi

Instrucțiunile sunt scrise în fișierul Capfile, care este de obicei în rădăcină de proiect și conține pași și o varietate de funcții sunt utilizate atunci când deploe (sau pentru a automatiza orice altceva sarcini plictisitoare).

Să configurați actualizarea proiectului care conține PHP / cod Nodejs stocat în GIT, în ciuda faptului că prodakshene NodeJS PHP și rulează pe servere diferite. Deci, pentru a actualiza întregul sistem este necesar:

Server 1:
actualizați codul php de la git
Server 2:
1. Opriți NodeJS vechiul server
2. NodeJS Actualizarea de la git






3. începe noul NodeJS de server

Începem cu serverul de configurare. Din moment ce Capistrano am „împrumutat“ în Rubyists, este natural și Capfile va trebui să scrie în Ruby, dar nimic în neregulă cu faptul că, cunoașterea superioară nu este necesară pentru problemele noastre carnale.

Prescrierea parametrii de acces la ambele servere:

Acum, creați o sarcină pentru a actualiza codul php:

Sarcina „update_appserver“ va îndeplini toate comenzile sale pe server (sau servere), specificate în app_server. Pentru a actualiza în acest caz, este pur și simplu executat Git trage într-un anumit dosar (Capistrano este capabil să mai „inteligente“ pentru a lucra cu git, aici).

NodeJS actualizare Queue

Mers pe jos în folosință:

pune - linie de ieșire (de exemplu, pentru indicarea deploya fazei curente)
rula - rulați comanda pe server
de captare - executa și returnează un rezultat, am folosit pentru a obține ID-ul procesului de server pentru nodejs ulterioare opri.

Și, în sfârșit, a face sarcinile pe care va efectua o actualizare completă:

Acum, rulați în consolă și bucurați-vă de proces.

După cum se poate vedea orice probleme ridicate.

Dar cel mai delicios, care, în rolurile pe care le-am pus la început, puteți specifica nu doar una, ci mai multe servere, adică nu numai

În acest caz, comanda va fi realizată în paralel pe toate serverele.

Astfel, nici o rutină, flexibilă și extensibilă, ne-am întors din nou pentru a trece pe la partea de calculator a operei sale. O alta ar fi să-l învețe să gătească cafea și bere deschisă)

La Capistrano într-adevăr știe mult mai mult decât 3 enumerate echipa, astfel încât orice persoană interesată - proiect wiki.

În cazul în care un post ca - click pe unul - voi fi fericit.