2011-08-15 19 views
9

Od dwóch tygodni próbuję wdrożyć Git w naszym biurze. Zamiast braku dokumentacji, to bogactwo przykładów, samouczków i różnych zastosowań git sprawiło, że pomyliłem się co do zalecanej konfiguracji do tworzenia stron internetowych.Git: zalecana konfiguracja do tworzenia stron internetowych

Sądzę, że mam na uwadze dobry układ, ale zanim przejdę do kolejnej struktury, chciałbym sprawdzić u bardziej doświadczonych ludzi. Mam następujący pamiętać:

  • Stacje robocze popchnąć do lokalnego serwera pomostowego (A)
  • lokalny serwer inscenizacja współpracuje z gitolite prawidłowo podzielić role
  • Hak automatycznie pcha każdą zmianę do serwera pomostowego na serwer produkcyjny (B)

to uwidoczniono poniżej: enter image description here

Czy to ma sens? Mamy wiele mniejszych witryn PHP, nic nie jest bardzo skomplikowane. Mam wątpliwości:

  • Jakiego rodzaju "haczyka" należy użyć dla (B)?
  • Czy powinienem również uruchamiać gitolite na serwerze produkcyjnym? Czuję, że nie powinienem, ponieważ w końcu to tylko jeden użytkownik przesyła pliki na serwer (hak na serwerze testowym), ale nie jestem pewien.
  • Moim punktem wyjścia jest: mamy wszystkie witryny na serwerze produkcyjnym, a nie na serwerze pomostowym ani stacjach roboczych. Jaki jest wygodny sposób "przeciągnięcia" ich do miejsca postoju i stacji roboczych, przy początkowej konfiguracji?

teraz następujące pytania są niektóre dodatkowe myśli, nie niezmiernie ważne w tej chwili, ale podzielić się swoimi przemyśleniami, jeśli zdarzy ci się dowiedzieć więcej:

  • Dla uproszczenia wolę być w stanie uruchomić git push ze stacji roboczej i zaktualizować zarówno serwer pomostowy, jak i serwer produkcyjny. Czasami jednak przydatne może być jedynie zaktualizowanie serwera pomostowego i sprawdzenie, co się tam dzieje na początku, przed uruchomieniem. Czy istnieje proste rozwiązanie?

  • W rzeczywistości mamy nie tylko jeden, ale kilka różnych serwerów produkcyjnych. Ale tylko jeden serwer pośredniczący. Czy istnieje sposób konfiguracji różnych serwerów produkcyjnych, aby git automatycznie wypchnął je na właściwy serwer?

Z góry dziękuję za podzielenie się przemyśleniami!

+0

Jakie są kryteria przesyłania na serwer produkcyjny? Czy sprawdzanie haka dla określonego komunikatu zatwierdzenia? –

Odpowiedz

3
  • Jakie „haka” należy używać do (B)?

Należy użyć post-receive or post-update hooks to zrobić

  • Mam również uruchomić gitolite na serwerze produkcyjnym? Czuję, że nie powinienem, ponieważ w końcu to tylko jeden użytkownik przesyła pliki na serwer (hak na serwerze testowym), ale nie jestem pewien.

nie obowiązkowe ze względów Wspominałeś, ale ponieważ gitolite jest dość prosty w konfiguracji nie zaszkodzi

  • mojego punktu wyjścia jest: mamy wszystkie strony internetowe na Serwer produkcyjny, a jeszcze nie na serwerze pośredniczącym ani na stacjach roboczych. Jaki jest wygodny sposób "przeciągnięcia" ich do miejsca postoju i stacji roboczych, przy początkowej konfiguracji?

Dla każdego z nich można łatwo wykonać te polecenia

cd /path/of/project 
git init 
# optionally create and edit your .gitignore file before the next step 
git add . 
git commit 

a następnie z serwera pomostowego uruchomić polecenie git clone.

  • Dla uproszczenia wolę być w stanie uruchomić git pchania ze stacji roboczej i mają zarówno serwer inscenizacja i serwer produkcyjny aktualizowana. Czasami jednak przydatne może być jedynie zaktualizowanie serwera pomostowego i sprawdzenie, co się tam dzieje na początku, przed uruchomieniem. Czy istnieje proste rozwiązanie?

nie widzę proste rozwiązanie dla tego zadania, jednak nie lubię swoje rozwiązanie z wdrożeniem zautomatyzowanej produkcji, coś może pójść źle i złamiesz swój zakład produkcyjny, więc wolę citizen conn wiele zdalnych rozwiązań. Możesz lepiej zarządzać rzeczami dzięki gitolite i obsłudze uprawnień.Każdy może naciskać na serwer testowy, ale ograniczona grupa ludzi może przesłać na serwer produkcyjny.

  • W rzeczywistości mamy nie tylko jeden, ale kilka różnych serwerów produkcyjnych. Ale tylko jeden serwer pośredniczący. Czy istnieje sposób konfiguracji różnych serwerów produkcyjnych, aby git automatycznie wypchnął je na właściwy serwer?

Mogłeś zapisać adres serwera produkcyjnego w jakimś pliku tekstowym w projekcie, a następnie użyć zawartości tego pliku w swoim hakiem git.

+0

Dzięki, brzmi całkiem nieźle! Spróbuję tego spróbować! – user852091

3

Nie chcesz uruchamiać serwera git na produkcyjnym serwerze WWW. Naprawdę nie chcesz również plików repozytorium git na serwerze produkcyjnym. Osobiście lubię prostować i nie mieszać procesu wdrażania z procesem SCM.

Więc myślę, że nie zamierzam odpowiedzieć na pytanie o git, ale mam użyć git dla wszystkich moich projektów internetowych, a oto typ konfiguracji wdrażania używam:

Zwykle używam git tylko dla SCM i użyj wewnętrznego serwera do obsługi repozytoriów (może to być bardzo dobrze to samo, co serwer pomostowy).

Do wdrożenia zwykle używam skryptu rake, ponieważ lubię ruby. Ale skrypt basha też by zrobił. Wersja bash byłoby coś takiego:

# deploy_staging.sh 
rsync -va --delete --exclude-from excludes.txt ./ stagingserver:/htdocs/www.mysite.com/ 

# deploy_prod.sh 
rsync -va --delete --exclude-from excludes.txt ./ realserver:/htdocs/www.mysite.com/ 

# deploy_all.sh 
bash deploy_staging.sh || exit $? 
bash deploy_prod.sh 

# excludes.txt 
.git 
deploy_*.sh 
excludes.txt 

Deweloperzy, które są uprawnione do publikowania na serwery mają swoje klucze SSH dodane do odpowiednich kont na maszynach serwerowych.

Ładne i proste, łatwe do powielenia, bez kłopotów z ustawianiem haków, a wszystko jest ładnie zawarte w repozytorium, masz pełną kontrolę nad tym, co zostanie wdrożone, i możesz to sprawdzić i uruchomić wdrożenie z dowolnego miejsca ma właściwy dostęp do sieci.

+1

dobrze jest mieć .git w katalogu głównym, o ile twój root nie jest obsługiwany przez sieć. – Kzqai

+0

Postaram się skonfigurować z serwerami git zarówno na etapie produkcji, jak i produkcji, ale jeśli to stanie się zbyt trudne, myślę, że twoje rozwiązanie będzie moją drogą ucieczki. Dzięki. – user852091

+0

Tak, mogę być niezwykłym przypadkiem, ponieważ mam dużo małych projektów, a nie tylko kilka dużych, więc z biegiem czasu wolałem podejścia, które mogę replikować od zera w ciągu kilku minut. Powodzenia w konfiguracji serwera! – avh

3

Mam podobne ustawienia i wolę używać wielu pilotów. Zamiast więc używać haka, dodałbym "prod" jako pilota, a także dodać "uat" jako pilota. W ten sposób, jeśli chcę, aby popchnąć do produkcji, co mogę zrobić:

git push prod 
git push uat 
+0

Robię to również – thinkdevcode

+0

Ciągnę tylko do mojej produkcji, ale dobrze jest mieć również jego własne repozytorium. Dzieje się tak dlatego, że nierozsądne popchnięcia są czasami trudne, aby poradzić sobie z repozytorium produkcji. – Kzqai

+0

@citizen conn: Ma sens, dzięki. Jedno pytanie: czy nie denerwuje cię to, że musisz się podwoić - zarówno do uatowania, jak i prucia? Jeśli wykonasz wiele drobnych poprawek przed naciśnięciem przycisku, pojawi się rodzaj dźwięku, czy nie? – user852091

Powiązane problemy