Jak wrzucić stronę na serwer przez Git - prosty sposób na CD

Deployment strony bez FTP

Obecnie dużą wagę przykłada się do skracania procesu aktulizacji aplikacji. Dzisiejszy standard to pipeleiny CI/CD budowane i utrzymywane przez wyspecjalizowane zespoły DevOps, dzięki którym kod trafia w odpowiednie miejsce. Jeśli chciałbyś wykorzystać elementy DevOps do przyspieszenia wystawiania zmian w swoim małym projekcie - zapraszam do zapoznania z wpisem.

Czego będziemy potrzebować?

Do wykonania tej konfuguracji potrzebuejsz narzędzi, które są w zasadzie standardem w świecie devops. Zakładam, że masz na swoim komputerze dostępne narzędzia git, ssh, ssh-keygen. Jeżeli jeszcze ich nie masz - wykombinuj jak zainstalować.

Krok 0 - BiedaHosting

Hosting kosztuje 15 PLN na rok i powinien wystarczyć do tego zastosowania. Jeżeli planujesz większe pliki - wybierz większy pakiet

Krok 1 - wygeneruj parę kluczy

W linii komend wywołaj polecenie. Potwierdź domyślne opcje.

    
      ssh-keygen -t rsa
    
  
Przejdź do folderu gdzie powstały pliki id_rsa i id_rsa.pub po czym otwórz i skopiuj klucz publiczny (z rozszerzeniem .pub)

Krok 2 - dodaj klucz publiczny w panelu biedahostingu

Przejdź w menu do Funkcje zaawansowane -> klucze SSH -> Wklej klucz (w prawym górnym rogu). No i oczywiscie wklej wygenrowany klucz. Sprawdź możliwość logowania:

ssh -p PORT user@domena.pl np. ssh -p 57185 buser1@buser1.deploy.net.pl

Krok 3 - utwórz repozytorium git

Przejdż w menu do Funkcje zaawansowane -> GIT -> Utwórz repozytorium

Podaj dowolną nazwę repozytorium.

Krok 4 - Git hooks - serce automatyzacji

Znajdź lokalizację repozytorium w systemie plików i przejdz do katalogu hooks (u mnie $USER_HOME/domanins/reponame.git/hooks). utwórz plik post-receive i nadaj mu uprawnienia:

  
    touch post-receive
    chmod +x post-receive
  
W treści sktyptu umieść kod. Zmodyfikuj zmienną TARGET na poprawną scieżkę. W moim skrypcie automaycznie wchodzą zmiany z brancha master - zmodyfikuj jeżeli chcesz działać inaczej.
  
    #!/bin/bash

# Folder, do którego Git ma wypakować pliki (strona www)
TARGET="/home/user/domains/twoja-domena.pl/public_html"

# Sprawdzamy, czy branch, który właśnie przyszedł, to master
while read oldrev newrev refname
do
    if [ "$refname" = "refs/heads/master" ]; then
        echo "Master branch zaktualizowany. Wdrażam zmiany..."
        GIT_WORK_TREE=$TARGET git checkout -f
        echo "Wdrożono pomyslnie!"
    else
        echo "Ref $refname przeslany, ale to nie master. Ignoruję wdrożenie."
    fi
done
  

Krok 5 - przetestuj

Pobierz repozytrorium:

    
      git clone ssh://user@host:port/sciezka_do_repo np.

      git clone ssh://biedauser@buser1.deploy.net.pl:57185/home/biedauser/domains/biedauser.deploy.net.pl/biedarepo.git

    
  

Wgraj potrzebne pliki do repozytroium i wpushuj na zdalnego repozytorium. Git to potężne narzędzie a jego znajomość jest niezbędna w świecie IT. Polecam zapoznanie z jego możliwościami, oczywiście na biedahostingu:)

    
      git status
      git add .
      git commit -m "pliki html"
      git push
    
  

Voila, pliki znalazły się w folderze, który wskazałeś jako target w skypcie (np. folderze z kórego serwowana jest Twoja strona). Nie musisz wysyłać plików przez ftp lub managera plików przy każdej zmianie, a dodatkowo możesz pracować nad zmianami w klika osób i śledzić histore zmian. Cały świat używa gita, wybróbuj i Ty.

Co dalej?

Tak jak wspominałem - git to potężne narzędzie, stojące u podstaw dzisiejszego świata IT. Rozwiązania typu CI/CD oparte o zaawansowane mechanizmy budowane są właściwie wszędzie. Dlatego zachęcam Cię do dalszych eksperymentów o wejścia w świat DevOps w praktyce. Moje pomysły na eksperymenty:

Dlaczego to działa na tanim hostingu?

Do takiego zadania nie potrzebujesz VPS-a ani chmury. Wystarczy: biedahosting, najprostsza oferta pozwlająca na utrzymnie strony w internecie. Właśnie do takich małych rzeczy powstał BiedaHosting — prosty, tani i bez umów.