- Like
- Digg
- Del
- Tumblr
- VKontakte
- Flattr
- Buffer
- Love This
- Odnoklassniki
- Meneame
- Blogger
- Amazon
- Yahoo Mail
- Gmail
- AOL
- Newsvine
- HackerNews
- Evernote
- MySpace
- Mail.ru
- Viadeo
- Line
- Comments
- Yummly
- SMS
- Viber
- Telegram
- Subscribe
- Skype
- Facebook Messenger
- Kakao
- LiveJournal
- Yammer
- Edgar
- Fintel
- Mix
- Instapaper
- Copy Link
Temat wypychania aplikacji na produkcję jest dosyć szeroki. Mamy sporo możliwości, choćby korzystając z takiego oprogramowania jak chyba najpopularniejsze Capistrano, Mina, czy wspomagając się narzędziami typu Ansible. Ale nie zawsze potrzebujemy strzelać z armaty do muchy. Przy mini projektach przesyłanych na naszego VPSa można to zrobić w banalnie prosty sposób przy wykorzystaniu GITa, którego i tak używamy.
Żeby było ciekawiej GITa do deploymentu można użyć na kilka sposobów ale dzisiaj opowiem wam o tym, moim zdaniem, najprostszym z możliwych.
Założenia
Przyjmuję, że mamy na localhoście jakiś mały projekt, który nie potrzebuje żadnych wymyślnych czynności i w zasadzie jego cały deploy sprowadza się do przesłania plików na serwer. Projekt oczywiście jest w gicie – nie wyobrażam sobie, że ktoś jeszcze w obecnych czasach pracuje bez tego. Z drugiej strony mamy swojego VPSa lub hosting z dostępem do SSH i GITa.
I cały proces polega na tym, że na VPS robimy nowe repozytorium GITa, w którym podpinamy pod hooka akcję przenoszącą kod na docelowe miejsce. Z kolei z localhosta wypychamy kod na to repozytorium i tyle. Magia dzieje się w tle 😉 Zobaczmy jakie to jest proste w implementacji.
Konfiguracja na VPS
Tutaj potrzebujemy dwa miejsca: jedno to docelowy katalog odpalany przez serwer. Przyjmijmy, że to jest /home/webmastah/app/public_html
. Drugie to miejsce gdzie założymy sobie nasze nowe repozytorum GITA – /home/webmastah/repo
.
Przechodzimy do tego katalogu i zakładamy owe repo:
1 2 3 |
cd /home/webmastah/repo mkdir webmastah.git && cd webmastah.git git init --bare |
Opcja --bare
oznacza, że nie chcemy trzymać w nim bieżącej kopii do pracy – wszak nie będziemy nic tam robić. Polecam dokładniejsze wyjaśnienie na StackOverflow.
Tworzymy hooka
W utworzonym repozytorium GITa znajdziesz katalog hooks
. W środku będzie kilka przykładowych plików dla danych akcji. GIT ma ich kilka, m.in. pre-commit
, pre-rebase
, update
, dokładniejsze wyjaśnienie znajdziesz w dokumentacji. Nas interesuje post-receive
który jak sama nazwa wskazuje jest odpalany w momencie jak zawartość PUSHa w komplecie dotarła do repozytorium.
Ok, wejdźmy do tego katalogu i stwórzmy naszego hooka.
1 2 |
cd hooks cat > post-receive |
Użyj swojego ulubionego edytora lub jeżeli nie wiesz jak to robić użyj powyższego cat > post-receive
. Po klepnięciu entera będziesz mógł wpisać zawartość do tego pliku, a całość zakończyć poprzez skrót control-d
.
Do pliku wstaw:
1 2 |
#!/bin/sh git --work-tree=/home/webmastah/app/public_html --git-dir=/home/webmastah/repo/webmastah.git checkout -f |
Gdzie --work-tree
wskazuje na nasz katalog gdzie odpalana jest aplikacja, a --git-dir
na nasze utworzone przed chwilą repo.
Po wyjściu nie zapomnij nadać odpowiednich praw do tego pliku chmod +x post-receive
Tym sposobem za każdym razem jak to repozytorium otrzyma kod automatycznie przeniesie go na docelowe miejsce z naszą aplikacją.
Konfiguracja na localhoście
Przechodzimy do katalogu z naszym projektem i dodajemy do GITa nasze zewnętrzne repozytorium:
1 |
git remote add live ssh://user@mydomain.com/home/webmastah/repo/webmastah.git |
live
tutaj jest dowolną nazwą, równie dobrze może to być dev
czy prod
. Zresztą w ten sam sposób możesz skonfigurować sobie środowisko testowe i później w zależności od potrzeb pchać zmiany w odpowiednie miejsce.
I robimy deploya
Działamy standardowo z naszym projektem. W momencie jak będziemy chcieli nasze zmiany wypchnąć na produkcję robimy po prostu git push live
i gotowe. Prawda, że proste?
Wersja Video
Wkrótce video tutorial z całego tego procesu krok po kroku. Chcesz zobaczyć? SUBSKRYBUJ!
- 62podań
- Facebook48
- LinkedIn10
- Email3