Deploy aplicatii web cu git

Postat la Sat 03 October 2015 in tutoriale

Multi dintre noi folosim local GIT pentru salvarea/stocarea modifcarilor facute la proiecte. Dar putini folosesc GIT si pentru transferul (deploy) proiectelor pe serverele pe care ruleaza aplicatia.

Beneficiul major pe care il vad eu este ca se transfera toate fisierele modificate din proiect (si testate local sau prin alt sistem).

Ce avem nevoie pentru aplicarea acestui sistem:

  • un repo local cu git (normal);
  • acces la serverul de productie (de obicei prin SSH) ce are instalat git;
  • un repo extern accesibil de dezvoltator cat si de la serverul de productie sunt sunt replicate commiturile din proiect.

Ca repo extern se foloseste cel mai des Github, Bitbucket (pe care il prefer ca home dezvoltator) sau solutii/servicii dedicate.

Primul pas este crearea unui repository pe serviciul dorit si adaugarea la proiectul nostru:

git add remote bitbucket https://user@bitbucket.org/user/repo.git

unde ca argumente sunt:

  • numele dorit ca identificare al repo extern: bitbucket
  • adresa remote pentru repo: https://user@bitbucket.org/user/repo.git

Alternativ se poate folosi si varianta de conectare prin SSH:

git add remote bitbucket git@bitbucket.org:user/repo.git

Mai departe dezvoltarea proiectului merge normal cu posibilitatea de a salva pe repo remote modificarile locale facute:

git add .
git commit -m "salvare intermediara"
git push bitbucket master

Buun... A venit momentul ca proeictul sa fie descarcat pe serverul de productie. Ne conectam pe server si clonam (duplicam) repo-ul in folderul proiect

git clone https://user@bitbucket.org/user/repo.git proiect

In cazul in care proeictul contine multe commit-uri fi folderul .git este mare putem clona pe server doar ultimul commit:

git clone --depth=1 https://user@bitbucket.org/user/repo.git proiect

Acum deploy-urile ulterioare se pot realiza mui usor ruland in folderul proiect comanda:

git pull

Modul recomndabil prin care se fac modificari la proiect sa fie:

  1. modificare in repo local al dezvoltatorului;
  2. replicarea pe repo remote;
  3. publicarea pe serverul de productie.

Acest mod asigura existemta tuturor modificarilor in toate locurile.

Nota:

  • Aceasta metoda se poate aplica la proiecte de complexitate mica, cu modificari mici si fregvente pe un singur server.
  • Pentru proiecte mari sau replicare pe mai multe servere exista alte solutii de deploy (de ex Capistrano).
  • In cazul cand aveti doar access FTP la server exista servicii dedicate chiar si gratuite (De ex Ftploy).

Mai multe gasiti aici.