Sistemul de control al versiunii Subversion este atât de vast. care este adecvată nu numai pentru dezvoltare, ci și pentru desfășurarea întregului serviciu / aplicație / site de pe serverul de producție.
Există mai multe metode, așa că vom încerca să dezasamblat fiecare dintre ele.
Utilizarea cârligelor SVN
Cârligele (cârligele) sunt, de fapt, scripturi care sunt declanșate de anumite evenimente, de exemplu modificări de revizie. Ele rulează în modul automat, astfel încât acestea nu pot fi mai potrivite pentru implementarea automată a aplicațiilor.
Șabloane de hârtie
Repozitorul SVN este implicit la directorul de cârlige. în care sunt plasate șabloane de diverse cârlige:
# Conținut implicit de cârlige
Numele lor descriu pe scurt când sunt lansate aceste scripturi. În acest caz, ne interesează post-comiterea. care este lansat imediat după comiterea noii revizuiri, când există deja un număr de revizuire.
Schema de lucru
Cel mai probabil nu doriți să renunțați la versiunea de dezvoltare imediat în producție. Este logic mai întâi să o executați și să o testați pe serverul de test pentru a efectua toate depanarea necesară și pentru a scăpa de bug-uri în timp, dacă acestea sunt disponibile. Apoi, implementați aplicația pe un server public.
Deci, procesul va fi ceva de genul:- dezvoltare pe partea clientului;
- să efectueze modificări în depozit;
- modificări automate la serverul de testare;
- depanare, testarea operabilității;
- implementarea actualizării (la comandă, în modul automat) de pe serverul de producție.
Exemple reale
Mai întâi, trebuie să creați scripturi pentru SVN, care pot fi scrise în orice limbaj prietenos cu serverul (Bash, Python, etc.).
De fapt, sunt necesare doar două scripturi: una pentru trimiterea la serverul de testare și testarea comenzii de implementare; iar al doilea pentru încărcarea directă pe serverul de producție.
Scriptul post-commit va arata astfel:
În acest exemplu, toate versiunile care au trecut comitetul sunt încărcate pe serverul de testare, dar dacă mesajul de comitere conține o comandă pentru implementare, fișierele sunt de asemenea încărcate pe serverul public. În acest caz, este lansat al doilea script:
# Utilizați comanda de export svn, care face o copie curată a depozitului fără fișiere .svn
Implementarea semiautomată a aplicațiilor
Deployment folosind Subversion poate fi la fel de simplu ca executarea svn up. Pentru aceasta, aveți nevoie de un client svn instalat pe serverul de producție, un depozit curat și câteva măsuri de securitate suplimentare.
Ascunderea configurilor
Cel mai probabil, configurația de pe serverele de producție și de testare este diferită, deci trebuie să vă asigurați fișierele necesare și să le excludeți de la actualizarea în svn. Pentru început, este mai bine să creați un director de tip / implicit. copiați toate fișierele necesare, apoi adăugați-l la svn și comiteți-l.
Acum puteți șterge config-urile de site-uri de la svn:
Copiile locale ale fișierelor vor fi salvate
# Toate fișierele incluse în .svn_ignore vor fi ignorate
siguranță
Directoarele .svn sunt accesibile în mod prestabilit la Internetul larg, dacă sunt pe server. Deci, soluția cea mai bună și, în același timp, simplă va fi interzicerea accesului la aceste foldere de pe partea serverului web. Pentru a face acest lucru, adăugați următoarele în fișierul de configurare Nginx în secțiunea http:
• Dați acces la toate fișierele cu extensia necesară
Și în Apache acest lucru se face astfel:
# Configurați blocul de site sau configurația principală a serverului web
deploymenta
Acum este suficient să vă conectați la serverul de producție prin SSH, mergeți la directorul document_root și executați:
# Toate fișierele și modificările vor fi copiate pe server
Este demn de remarcat că o astfel de metodă va reveni rapid la revizia necesară și, în general, va efectua toate manipulările necesare cu svn direct pe serverul de producție.
Cel mai important lucru
După o mică modificare și scrierea a două scenarii, puteți implementa aplicația web sau site-ul pe serverul de producție în modul automat. Principalul lucru nu este să uitați să testați lucrările de dezvoltare înainte de lansare.