Konfigurowanie serwera git

57

Niedawno skonfigurowałem serwer Ubuntu na Amazon EC2. Chciałbym użyć go jako mojego serwera git, aby móc tam przechowywać moje repozytoria.

Gdzie mogę znaleźć szczegółowe instrukcje konfiguracji git na serwerze Ubuntu? Wszystkie te klucze SSH itp., Wielu użytkowników itp.

Pawełkowy
źródło
2
Nie sądzę, że jest to pytanie związane z Ubuntu (poza oczywistym „Linuksem”), czy przeglądałeś nawet dokumentację git ? Wspomniano o utworzeniu publicznego, jak i prywatnego repozytorium.
Ward Muylaert
22
@BonboBingo Powiedzenie „Po prostu wyszukaj w Google” naprawdę nie jest rozwiązaniem. Większość pytań tutaj może być odpowiedział: „jeśli szukać wystarczająco długo ...” Zapytaj Ubuntu ma być Pytanie organ i strona Odpowiedź udzielania odpowiedzi 1. poziom zamiast ścianę odpowiedzi, które mówią „Just Google” - więcej informacji sprawdź FAQ
Marco Ceppi
1
Tutaj znajduje się przydatny przewodnik po krokach: help.ubuntu.com/community/Git. @Marco Ceppi Przepraszam, ale nie byłem polemiczny. A potem link, który zamieściłem, wydaje się być bardzo odpowiedni do pytania ... OK, teraz jako odpowiedź?
BonboBingo,
Komentarze @BonboBingo nie liczą się jako odpowiedzi! Komentowałem tylko część Twojego komentarza „Szukaj w Google”. Jeśli chcesz odpowiedzieć ze szczegółami na temat artykułu Git w Przewodniku pomocy Ubuntu, powinieneś użyć pola „Twoja odpowiedź” na dole tej strony! :)
Marco Ceppi
2
”zamiast ściany odpowiedzi z napisem„ Tylko Google ”- aby uzyskać więcej informacji, zaznacz„… ok masz rację :) Zatrzymajmy się tutaj.
BonboBingo,

Odpowiedzi:

38

Możesz użyć tego samouczka, aby zainstalować serwer Git, tak jak zaproponował to aking1012 , lub możesz po prostu zainstalować serwer SSH w instancji EC2 (prawdopodobnie rozsądnie byłoby go zabezpieczyć i zmienić domyślny port).

Git może być pozbawiony serwera, inicjujesz repozytorium, a następnie uzyskujesz do niego dostęp zdalnie przez SSH. Dlatego takie instrukcje na serwerze Ubuntu powinny to zrobić:

GIT_DIR=project.git git init  
cd project.git  
git --bare update-server-info  
cp hooks/post-update.sample hooks/post-update

Na koniec zainstaluj SSH na swoim serwerze:

sudo apt-get install ssh-server

Teraz należy skonfigurować SSH, aby go zabezpieczyć.

Czas umieścić projekt w trybie online (dane, które już masz na komputerze deweloperskim):

git push ssh://<username>@<remote-git-hostname>/path/to/project.git master

A teraz możesz zacząć klonować. Idziesz na maszynę programistyczną:

git clone ssh://<username>@<remote-git-hostname>/path/to/dir.git

Sprawdź to doskonałe źródło w Git .

Aby wygenerować klucze SSH w celu bezpieczniejszego uwierzytelnienia, przeczytaj ten artykuł na temat uwierzytelniania SSH .

Huygens
źródło
Czy to nie powinno openssh-server?
Jorge Castro,
1
@jorge wydaje się, że ssh-serverjest to alias do openssh-server, przynajmniej na Ubuntu 10.04.
Huygens,
1
cóż, to może działać, ale logowanie przez SSH do maszyn Amazon EC2 wymaga publicznego / prywatnego klucza (ssh -i key.pem ubuntu @ address). Muszę też zapamiętać ścieżkę (ubuntu @ adres: / var / www / dir1 / dir2), zamiast po prostu klonować git.mydomain.com/repository
Pawełkowy
1
@Pawel dobry punkt. Dlatego niektóre osoby umieszczają repozytorium git w katalogu głównym systemu plików. Ale tak, potrzebujesz kluczy ssh lub kont. Lub możesz użyć HTTP, ale wtedy nie masz naprawdę ładnej kontroli dostępu AFAIK.
Huygens,
3
@ PawełKarpiński - Możesz skonfigurować plik konfiguracyjny SSH po stronie klienta, ~/.ssh/configaby obsługiwał nazwę użytkownika / adres hosta, wprowadzanie klucza, porty i tak dalej.
Shauna
15

Do wszystkich moich konfiguracji serwera Git używam Gitolite, który pozwala na szczegółową ochronę dostępu „na oddział”. Konfiguracja jest dość prosta, jeśli robisz to na zdalnym serwerze, jest tak prosta, jak uruchomienie interaktywnego skryptu. Oprócz tej „łatwej do skonfigurowania” natury ma także pakiet w Natty i Maverick

sudo apt-get install gitolite

Nie zapewni to frontendu internetowego, takiego jak Github lub Gitweb - ale możesz łatwo skonfigurować i zainstalować je na czymś takim jak Gitolite.

Marco Ceppi
źródło
9

Lubię gitolit . Książka Pro Git zawiera sekcję , ale polecam przeczytać całą książkę.

Jeśli chodzi o wymagania dotyczące wielu użytkowników:

Gitolite pozwala określić uprawnienia nie tylko według repozytorium (jak robi to Gitosis), ale także według nazw oddziałów lub znaczników w każdym repozytorium. Oznacza to, że możesz określić, że niektóre osoby (lub grupy osób) mogą przesyłać tylko niektóre „referencje” (gałęzie lub tagi), ale nie inne.

Li Lo
źródło
7

http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way można nieznacznie zmodyfikować, aby dostosować go do twoich celów ... podobny samouczek http: // blog .agdunn.net /? p = 277 .

RobotHumans
źródło
1
Uwaga: Obecnie przygotowuję 0 dla gotowego rvm, ree / ruby, railsów, tutoriala git dla klienta programowania i tutoriala serwera programowania. po prostu rysuje wiele samouczków online w jednym miejscu i nieco je modyfikuje, ale w tej chwili jest to wciąż praca.
RobotHumans,
te samouczki są niesamowite, ale są dość skomplikowane. Czy nie ma „krótszych” samouczków? :)
Pawełkowy
Nie widziałem nic prostszego ... większość samouczków dotyczących gitozy i gitozy nie przechodzi przez tworzenie przykładowego projektu i testowania (coś, co moim zdaniem powinno być w każdym samouczku). Jeśli zobaczę inną bezpośrednią informację, będę pamiętać o tym wątku
RobotHumans,
@ PawełKarpiński - Co w nich takiego skomplikowanego? Używałem wcześniej konfiguracji Gitosis i jest to naprawdę bardzo łatwe.
Shauna
4

Najlepszym rozwiązaniem dla mnie było skonfigurowanie WebDAV.

  • sudo a2enmod sudo dav_fs

  • sudo a2enmod dav

  • dodaj nowy plik /etc/apache2/sites-availablei nazwij go, na przykład git.yourserver.com. Edytuj go i dodaj następujące wiersze:

<VirtualHost *:80>

DocumentRoot /var/www/git.yourserver.com/repos
ServerName git.yourserver.net
Options Indexes FollowSymLinks MultiViews

<Location />
    DAV On
    AuthType Basic
    AuthName "git repos"
    AuthUserFile /var/www/git.yourserver.net/password.dav
    Require valid-user
</Location>

</VirtualHost>

  • utwórz katalog /var/www/git.yourserver.comi katalog reposwewnątrz identyfikatora
  • sudo chown www-data /var/www/git.yourserver.com/repos
  • sudo htpasswd -c /var/www/git.yourserver.com/password.dav user_login i wprowadź hasło dla użytkownika o nazwie user_login
  • sudo chown root:www-data /var/www/git.yourserver.com/password.dav
  • sudo chmod 640 /var/www/git.yourserver.com/password.dav

Teraz sudo a2ensite git.yourserver.comi sudo service apache2 restart.

  • Wprowadź /var/www/git.yourserver.com/reposi utwórz katalog, na przykładmyrepo.git
  • cd myrepo.git
  • git --bare init
  • git update-server-info

Teraz wyloguj się ze zdalnego serwera i przejdź do lokalnego katalogu, w którym chcesz edytować swoje pliki.

git clone http://user_login:[email protected]/myrepo.git

i skończyłeś. Jeśli chcesz wysłać zatwierdzone zmiany na serwer:

git push origin master

Możesz utworzyć dowolną liczbę użytkowników sudo htpasswd. Pamiętaj tylko, aby nie używać -cprzełącznika podczas dodawania większej liczby użytkowników, ponieważ stary plik zostanie usunięty.

Pawełkowy
źródło
3
HTTP to „głupi” protokół, który jest obsługiwany, ale zdecydowanie odradzany. Natywny protokół git działa znacznie lepiej i jest łatwiejszy do skonfigurowania, ponieważ wszystko, co musisz zrobić, to mieć działający serwer ssh (co już powinieneś) i zainstalować git-core. W ogóle nie trzeba się grzebać z apaszem.
psusi
3

Lubię również podejście gitolite do zarządzania użytkownikami i bezpieczeństwem. Mam obecnie testowany serwer Git + gitolite AMI dla EC2. Spróbuj tego; dokumentacja jest dostępna tutaj:

Alestic Git Server

Korzystając z tego podejścia, możesz mieć centralny serwer Git z prywatnymi repozytoriami działający w ciągu kilku minut. Istnieje krzywa uczenia się dla gitolitu i EC2, jeśli ich nie znasz.

Eric Hammond
źródło
3

Z gitolitem jest bardzo łatwo osiągnąć . Za niecałą godzinę będziesz mieć łatwy do skonfigurowania i bezpieczny serwer git dla wielu użytkowników.

Mam artykuł Howto na mojej stronie

realcnbs
źródło