Einrichten eines Git-Servers

57

Ich habe vor kurzem Ubuntu-Server auf Amazon EC2 eingerichtet. Ich möchte es als meinen Git-Server verwenden, damit ich meine Repos dort aufbewahren kann.

Wo finde ich eine detaillierte Anleitung zum Einrichten von Git auf einem Ubuntu-Server? All diese SSH-Schlüssel und ähnliches, mehrere Benutzer usw.

Pawełkowy
quelle
2
Ich glaube nicht, dass dies eine Ubuntu-bezogene Frage ist (jenseits des offensichtlichen "Es ist Linux"). Hast du dir auch schon die Git-Dokumentation angesehen ? Dort wird erwähnt, dass sowohl ein öffentliches als auch ein privates Repository eingerichtet werden soll.
Ward Muylaert
22
@BonboBingo "Nur Google durchsuchen" ist wirklich keine Lösung. Die Mehrheit der hier gestellten Fragen könnte mit "Wenn Sie lange genug suchen ..." beantwortet werden. Ask Ubuntu soll die Autoritätsseite für Fragen und Antworten sein, die Antworten der ersten Ebene anstelle einer Antwortmauer mit der Aufschrift "Nur Google" bereitstellt - für weitere Informationen check the FAQ
Marco Ceppi
1
Hier finden Sie eine nützliche Schrittanleitung: help.ubuntu.com/community/Git. @ Marco Ceppi Sorry, aber ich war nicht polemisch. Und dann scheint der Link, den ich gepostet hatte, ziemlich relevant für die Frage zu sein ... Okay, jetzt als Antwort?
BonboBingo
@ Bonbo Bingo Kommentare zählen nicht als Antworten! Ich habe lediglich den Abschnitt "Google durchsuchen" Ihres Kommentars kommentiert. Wenn Sie mit Details zum Git-Artikel in der Ubuntu-Hilfe antworten möchten, sollten Sie das Feld "Ihre Antwort" unten auf dieser Seite verwenden! :)
Marco Ceppi
2
"Anstelle einer Reihe von Antworten mit der Aufschrift" Nur Google "- für weitere Informationen klicken Sie auf" ... ok, Sie haben Recht :) Lassen Sie uns hier aufhören.
BonboBingo

Antworten:

38

Sie können das Tutorial verwenden, um einen Git-Server zu installieren, wie Sie es von aking1012 vorgeschlagen haben , oder Sie können einfach den SSH-Server auf Ihrer EC2-Instanz installieren (wahrscheinlich ist es ratsam, ihn zu sichern und den Standardport zu ändern).

Git kann serverlos sein, wenn Sie Ihr Repository initialisieren und dann von einem entfernten Standort über SSH darauf zugreifen. Anweisungen wie diese auf dem Ubuntu-Server sollten es also tun:

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

Installieren Sie abschließend SSH auf Ihrem Server:

sudo apt-get install ssh-server

Jetzt sollten Sie SSH konfigurieren, um es zu sichern.

Es ist Zeit, Ihr Projekt online zu stellen (die Daten, die Sie bereits auf Ihrem Entwicklungscomputer haben):

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

Und jetzt können Sie mit dem Klonen beginnen. Sie gehen auf Ihre Entwicklungsmaschine:

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

Überprüfen Sie diese hervorragende Ressource auf Git .

Um Ihre SSH- Schlüssel für eine sicherere Authentifizierung zu generieren, lesen Sie diesen Artikel über die SSH-Authentifizierung .

Huygens
quelle
Sollte das nicht sein openssh-server?
Jorge Castro
1
@jorge das scheint ssh-serverein alias für openssh-server zu sein, zumindest unter Ubuntu 10.04.
Huygens
1
Das könnte funktionieren, aber für die Protokollierung über SSH auf Amazon EC2-Computern ist ein öffentliches / privates Schlüsselpaar erforderlich (ssh -i key.pem ubuntu @ address). Außerdem muss ich mir den Pfad merken (ubuntu @ address: / var / www / dir1 / dir2), anstatt nur git clone git.mydomain.com/repository
Pawełkowy
1
@Pawel guter Punkt. Das ist der Grund, warum manche Leute das Git-Repository im Dateisystem-Stammverzeichnis ablegen. Aber ja, Sie brauchen SSH-Schlüssel oder Konten. Oder Sie könnten HTTP verwenden, aber dann haben Sie keine wirklich gute Zugriffskontrolle AFAIK.
Huygens
3
@ PawełKarpiński - Sie können eine clientseitige SSH-Konfigurationsdatei einrichten, in ~/.ssh/configder Benutzername / Host-Adresse, Tasteneingabe, Ports und so weiter verwaltet werden.
Shauna
15

Für alle meine Git-Server-Setups verwende ich Gitolite, das eine Sicherheitsgranularität für den Zugriff "pro Zweig" ermöglicht. Das Setup ist ziemlich einfach, wenn Sie es auf einem Remote-Server ausführen, es ist so einfach wie das Ausführen eines interaktiven Skripts. Zusätzlich zu dieser "einfach einzurichtenden" Natur gibt es auch ein Paket in Natty und Maverick

sudo apt-get install gitolite

Dies wird kein Web-Frontend wie Github oder Gitweb bieten - aber Sie können diese auf einfache Weise über etwas wie Gitolite konfigurieren und installieren.

Marco Ceppi
quelle
9

Ich mag Gitolite . Das Pro Git-Buch enthält einen Abschnitt , ich empfehle jedoch, das ganze Buch zu lesen.

Wie für Ihre Mehrbenutzeranforderung:

Mit Gitolite können Sie Berechtigungen nicht nur nach Repository (wie bei Gitosis), sondern auch nach Zweig- oder Tagnamen in jedem Repository festlegen. Das heißt, Sie können festlegen, dass bestimmte Personen (oder Gruppen von Personen) nur bestimmte "Refs" (Zweige oder Tags), nicht jedoch andere Personen übertragen können.

Li Lo
quelle
7

http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way kann leicht an Ihre Zwecke angepasst werden ... ein ähnliches Tutorial http: // blog .agdunn.net /? p = 277 .

RobotHumans
quelle
1
Anmerkung: Ich stelle gerade eine 0 zusammen, um rvm, ree / ruby, Rails, Git-Tutorial für Entwicklungsclient und Entwicklungsserver-Tutorial fertigzustellen. Es werden nur viele Online-Tutorials an einer Stelle gezeichnet und ein wenig modifiziert, aber es ist noch in Arbeit.
RobotHumans
Diese Tutorials sind großartig, aber sie sind ziemlich kompliziert. Gibt es keine "kürzeren" Tutorials? :)
Pawełkowy
Ich habe nichts Einfacheres gesehen ... Die meisten Tutorials für Gitorious und Gitosis erstellen kein Beispielprojekt und testen es nicht (etwas, von dem ich denke, dass es in jedem Tutorial enthalten sein sollte). Wenn ich einen anderen Tutor sehe, der direkter ist, werde ich diesen Thread im Auge behalten
RobotHumans
@ PawełKarpiński - Was ist an ihnen so kompliziert? Ich habe das Gitosis-Setup bereits verwendet und es ist eigentlich sehr einfach.
Shauna
4

Die Lösung, die für mich am besten funktionierte, war das Einrichten von WebDAV.

  • sudo a2enmod sudo dav_fs

  • sudo a2enmod dav

  • Fügen Sie eine neue Datei hinzu, /etc/apache2/sites-availableund benennen Sie sie beispielsweise git.yourserver.com. Bearbeiten Sie es und fügen Sie folgende Zeilen hinzu:

<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>

  • Erstelle ein Verzeichnis /var/www/git.yourserver.comund ein Verzeichnis reposinnerhalb der ID
  • sudo chown www-data /var/www/git.yourserver.com/repos
  • sudo htpasswd -c /var/www/git.yourserver.com/password.dav user_login und geben Sie das Passwort für den Benutzer ein user_login
  • sudo chown root:www-data /var/www/git.yourserver.com/password.dav
  • sudo chmod 640 /var/www/git.yourserver.com/password.dav

Jetzt sudo a2ensite git.yourserver.comund sudo service apache2 restart.

  • /var/www/git.yourserver.com/reposVerzeichnis eingeben und anlegen, zBmyrepo.git
  • cd myrepo.git
  • git --bare init
  • git update-server-info

Melden Sie sich jetzt von Ihrem Remote-Server ab und wechseln Sie in das lokale Verzeichnis, in dem Sie Ihre Dateien bearbeiten möchten.

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

und du bist fertig. Wenn Sie Ihre festgeschriebenen Änderungen an den Server senden möchten:

git push origin master

Sie können so viele Benutzer erstellen, wie Sie möchten sudo htpasswd. Denken Sie daran -c, beim Hinzufügen weiterer Benutzer den Schalter nicht zu verwenden , da die alte Datei gelöscht wird.

Pawełkowy
quelle
3
HTTP ist das "dumme" Protokoll, das unterstützt wird, von dem jedoch dringend abgeraten wird. Das native git-Protokoll funktioniert viel besser und ist einfacher einzurichten, da Sie lediglich einen funktionierenden ssh-Server haben müssen (was Sie bereits sollten) und git-core installieren müssen. Überhaupt kein Grund, sich mit Apache zu beschäftigen.
Psusi
3

Ich mag auch den Gitolite- Ansatz für die Verwaltung von Benutzern und Sicherheit. Ich habe einen Git + Gitolite Server AMI für EC2, der gerade getestet wird. Probieren Sie es einfach aus. Dokumentation finden Sie hier:

Alestic Git Server

Mit diesem Ansatz können Sie in wenigen Minuten einen zentralen Git-Server mit privaten Repositorys einrichten. Es gibt eine Lernkurve für Gitolite und EC2, wenn Sie mit diesen nicht vertraut sind.

Eric Hammond
quelle
3

Mit Gitolit ist es sehr einfach zu erreichen . In weniger als einer Stunde haben Sie einen einfach konfigurierbaren und sicheren Multiuser-Git-Server.

Ich habe einen Howto-Artikel auf meiner Website

realcnbs
quelle