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:
- Powiadomienia o wdrożeniu - wykorzystaj komendę curl do wysłania powiadomienia o wdrożeniu.
- Prosty rollback - Sprawdź poprzedni commit i przywróć go jednym poleceniem.
- Środowisko testowe- przygotuj subdomenę np. dev.twojadomena.pl i wrzucaj tam wszystkie zmiany. Do twojadomena.pl wrzucaj tylko działające rzeczy
- Statystyki wdrożeń - przy każdym wdrożeniu zapisj plik tekstowy z numerem commita. Mozesz go wyświetlic gdzieś w aplikacji żeby wiedzieć aktualnie leży na środowisku.
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.