Articles

Jak uruchomić własny serwer Git

Zarządzaj swoim kodem na własnym serwerze, uruchamiając goły, podstawowy serwer Git lub za pomocą narzędzia GitLab GUI.

Naucz się jak skonfigurować własny serwer Git w tym tutorialu z naszego archiwum.

Git jest systemem wersjonowania stworzonym przez Linusa Torvaldsa, który jest używany przez miliony użytkowników na całym świecie. Firmy takie jak GitHub oferują usługi hostingu kodu opartego na Git. Według raportów, GitHub, witryna hostingowa kodu, jest największą na świecie usługą hostingową kodu. Firma twierdzi, że istnieje 9.2M osób współpracujących teraz w 21.8M repozytoriów na GitHub. Duże firmy przenoszą się teraz do GitHuba. Nawet Google, gigant wyszukiwarek, zamyka swój własny Google Code i przenosi się na GitHub.

Uruchom swój własny serwer Git

GitHub jest świetną usługą, jednak istnieją pewne ograniczenia i restrykcje, szczególnie jeśli jesteś osobą prywatną lub małym graczem. Jednym z ograniczeń GitHuba jest to, że darmowa usługa nie pozwala na prywatny hosting kodu. Musisz zapłacić miesięczną opłatę w wysokości $7 za hostowanie 5 prywatnych repozytoriów, a wydatki rosną wraz z większą ilością repozytoriów.

W przypadkach takich jak te lub gdy chcesz mieć większą kontrolę, najlepszą ścieżką jest uruchomienie Git na własnym serwerze. Nie tylko oszczędzasz koszty, ale również masz większą kontrolę nad swoim serwerem. W większości przypadków większość zaawansowanych użytkowników Linuksa ma już swoje własne serwery i umieszczanie Gita na tych serwerach jest 'darmowe jak piwo'.

W tym poradniku omówimy dwie metody zarządzania kodem na własnym serwerze. Jedna z nich to uruchomienie gołego, podstawowego serwera Git, a druga to wykorzystanie narzędzia GUI o nazwie GitLab. Do tego tutoriala użyłem w pełni załatanego serwera Ubuntu 14.04 LTS działającego na VPS.

Instalacja Git na twoim serwerze

W tym tutorialu rozważamy przypadek użycia, w którym mamy zdalny serwer i lokalny serwer i będziemy pracować pomiędzy tymi maszynami. Dla uproszczenia będziemy je nazywać remote-server i local-server.

Po pierwsze, zainstaluj Gita na obu maszynach. Możesz zainstalować Git’a z pakietów dostępnych w repozytoriach lub w swoich dystrybucjach, albo możesz to zrobić ręcznie. W tym artykule użyjemy prostszej metody:

sudo apt-get install git-core

Następnie dodajemy użytkownika dla Gita.

sudo useradd gitpasswd git

Aby ułatwić dostęp do serwera skonfigurujmy bezhasłowe logowanie ssh. Najpierw należy utworzyć klucze ssh na lokalnym komputerze:

ssh-keygen -t rsa

Proszę podać lokalizację do przechowywania klucza, wystarczy nacisnąć Enter, aby użyć domyślnej lokalizacji. Drugim pytaniem będzie podanie hasła, które będzie potrzebne do uzyskania dostępu do zdalnego serwera. Generuje on dwa klucze – klucz publiczny i klucz prywatny. Zanotuj lokalizację klucza publicznego, który będzie Ci potrzebny w następnym kroku.

Teraz musisz skopiować te klucze na serwer, aby obie maszyny mogły ze sobą rozmawiać. Uruchom następujące polecenie na swoim lokalnym komputerze:

cat ~/.ssh/id_rsa.pub | ssh git@remote-server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Teraz ssh do serwera i utwórz katalog projektu dla Git. Możesz użyć żądanej ścieżki dla repo.

git@server:~ $ mkdir -p /home/swapnil/project-1.git

Następnie zmień na ten katalog:

cd /home/swapnil/project-1.git

Teraz utwórz puste repo:

git init --bareInitialized empty Git repository in /home/swapnil/project-1.git

Teraz musimy utworzyć repo Git na lokalnej maszynie.

mkdir -p /home/swapnil/git/project

I zmień katalog na ten:

cd /home/swapnil/git/project

Teraz utwórz pliki, których potrzebujesz do projektu w tym katalogu. Pozostań w tym katalogu i zainicjuj git:

git init Initialized empty Git repository in /home/swapnil/git/project

Teraz dodaj pliki do repo:

git add .

Teraz za każdym razem, gdy dodajesz plik lub wprowadzasz zmiany, musisz uruchomić powyższe polecenie add. Musisz również napisać wiadomość commit z każdą zmianą w pliku. Komunikat commit w zasadzie mówi, jakie zmiany zostały wprowadzone.

git commit -m "message" -a message 2 files changed, 2 insertions(+) create mode 100644 GoT.txt create mode 100644 writing.txt

W tym przypadku miałem plik o nazwie GoT (Game of Thrones review) i dokonałem pewnych zmian, więc kiedy uruchomiłem polecenie, określiło ono, że zmiany zostały wprowadzone do pliku. W powyższej komendzie opcja '-a' oznacza commity dla wszystkich plików w repo. Jeśli dokonałeś zmian tylko w jednym pliku, możesz podać jego nazwę zamiast używać '-a'.

Przykład:

git commit -m "message" GoT.txt message 1 file changed, 1 insertion(+)

Do tej pory pracowaliśmy na lokalnym serwerze. Teraz musimy przepchnąć te zmiany na serwer, aby praca była dostępna przez Internet i można było współpracować z innymi członkami zespołu.

git remote add origin ssh://git@remote-server/repo-<wbr< a="">>path-on-server..git

Teraz możesz przesuwać lub wyciągać zmiany pomiędzy serwerem a lokalną maszyną używając opcji 'push' lub 'pull':

git push origin master

Jeśli są inni członkowie zespołu, którzy chcą pracować z projektem, muszą sklonować repo na serwerze na swoją lokalną maszynę:

git clone git@remote-server:/home/swapnil/project.git

Tutaj /home/swapnil/project.git jest ścieżką projektu na zdalnym serwerze, wymień wartości dla własnego serwera.

Następnie zmień katalog na lokalnym komputerze (zamień projekt z nazwą projektu na swoim serwerze):

cd /project

Teraz mogą edytować pliki, pisać komunikaty o zmianach commit, a następnie przesłać je na serwer:

git commit -m 'corrections in GoT.txt story' -aAnd then push changes:
git push origin master

Zakładam, że jest to wystarczające dla nowego użytkownika, aby rozpocząć pracę z Gitem na własnych serwerach. Jeśli szukasz narzędzi GUI do zarządzania zmianami na lokalnych maszynach, możesz użyć narzędzi GUI takich jak QGit lub GitK dla Linuksa.

QGit

Używanie GitLab

To było rozwiązanie czysto wierszowe dla właściciela projektu i współpracownika. Z pewnością nie jest to tak proste jak korzystanie z GitHuba. Niestety, podczas gdy GitHub jest największym na świecie serwisem hostującym kod, jego własne oprogramowanie nie jest dostępne do użytku przez innych. Nie jest to open source, więc nie można pobrać kodu źródłowego i skompilować własnego GitHuba. W przeciwieństwie do WordPressa czy Drupala nie możesz pobrać GitHuba i uruchomić go na własnym serwerze.

Jak zwykle w świecie open source nie ma końca opcji. GitLab jest fajnym projektem, który właśnie to robi. Jest to projekt open source, który pozwala użytkownikom na uruchomienie systemu zarządzania projektami podobnego do GitHub na ich własnych serwerach.

Możesz użyć GitLab do uruchomienia usługi podobnej do GitHub dla członków Twojego zespołu lub Twojej firmy. Możesz używać GitLab do pracy nad prywatnymi projektami przed udostępnieniem ich publicznie.

GitLab stosuje tradycyjny model biznesowy Open Source. Posiada dwa produkty: darmowe oprogramowanie open source, które użytkownicy mogą zainstalować na własnych serwerach, oraz usługę hostowaną podobną do GitHub.

Wersja do pobrania posiada dwie edycje – darmową edycję społecznościową oraz płatną edycję korporacyjną. Edycja enterprise jest oparta na edycji community, ale zawiera dodatkowe funkcje skierowane do klientów korporacyjnych. Jest ona mniej więcej podobna do tego, co oferują WordPress.org lub WordPress.com.

Edycja społecznościowa jest wysoce skalowalna i może obsługiwać 25 000 użytkowników na pojedynczym serwerze lub klastrze. Niektóre z funkcji GitLab obejmują: Zarządzanie repozytorium Git, przeglądy kodu, śledzenie problemów, kanały aktywności i wiki. Pochodzi z GitLab CI dla ciągłej integracji i dostarczania.

Wielu dostawców VPS, takich jak Digital Ocean, oferuje droplety GitLab dla użytkowników. Jeśli chcesz uruchomić go na swoim własnym serwerze, możesz zainstalować go ręcznie. GitLab oferuje pakiet Omnibus dla różnych systemów operacyjnych. Zanim zainstalujemy GitLab, możesz chcieć skonfigurować serwer poczty SMTP, aby GitLab mógł wysyłać e-maile w razie potrzeby. Zalecany jest Postfix. Tak więc zainstaluj Postfixa na swoim serwerze:

sudo apt-get install postfix

Podczas instalacji Postfix zada ci kilka pytań; nie pomijaj ich. Jeśli je pominąłeś, zawsze możesz ponownie skonfigurować go za pomocą tego polecenia:

sudo dpkg-reconfigure postfix

Po uruchomieniu tego polecenia wybierz „Internet Site” i podaj identyfikator e-mail domeny, która będzie używana przez Gitlab.

W moim przypadku podałem:

This e-mail address is being protected from spambots. You need JavaScript enabled to view it 

Użyj Tab i utwórz nazwę użytkownika dla postfixa. Na następnej stronie zostaniesz poproszony o podanie miejsca docelowego dla poczty.

W pozostałych krokach użyj opcji domyślnych. Gdy Postfix jest już zainstalowany i skonfigurowany, przejdźmy do instalacji GitLab.

Pobierz pakiety za pomocą wget (zastąp link do pobrania najnowszymi pakietami stąd) :

wget https://downloads-packages.s3.amazonaws.com/ubuntu-14.04/gitlab_7.9.4-omnibus.1-1_amd64.deb

A następnie zainstaluj pakiet:

sudo dpkg -i gitlab_7.9.4-omnibus.1-1_amd64.deb

Teraz czas na konfigurację i uruchomienie GitLabs.

sudo gitlab-ctl reconfigure

Teraz musisz skonfigurować nazwę domeny w pliku konfiguracyjnym, abyś mógł uzyskać dostęp do GitLab. Otwórz ten plik.

nano /etc/gitlab/gitlab.rb

W tym pliku edytuj 'external_url' i podaj domenę serwera. Zapisz plik, a następnie otwórz nowo utworzoną witrynę GitLab z poziomu przeglądarki internetowej.

GitLab 1

Domyślnie tworzy 'root' jako administratora systemu i używa '5iveL!fe' jako hasła. Zaloguj się do witryny GitLab, a następnie zmień hasło.

GitLab 2

Po zmianie hasła zaloguj się do witryny i zacznij zarządzać swoim projektem.

Strona zarządzania projektem GitLab

GitLab jest przepełniony funkcjami i opcjami. Zapożyczę popularne wersy z filmu „Matrix”: „Niestety, nikomu nie można powiedzieć, co wszystko GitLab potrafi. Musisz sam spróbować.”

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *