Configurer un serveur git

57

J'ai récemment installé ubuntu-server sur Amazon EC2. Je voudrais l'utiliser comme mon serveur git, afin de pouvoir y stocker mes dépôts.

Alors, où puis-je trouver des instructions détaillées sur la configuration de git sur le serveur Ubuntu? Toutes ces clés SSH et ce genre de choses, plusieurs utilisateurs, etc.

Pawełkowy
la source
2
Je ne pense pas que ce soit une question liée à Ubuntu (au-delà de l'évident "c'est linux"), avez-vous même regardé la documentation de git ? Il est fait mention de la mise en place d’un référentiel public et privé .
Ward Muylaert
22
@BonboBingo Dire "Il suffit de chercher sur Google" n'est vraiment pas une solution. "Si vous recherchez suffisamment longtemps ..." Ask Ubuntu a pour objectif de devenir le site d' autorité en matière de questions-réponses fournissant des réponses de premier niveau au lieu d'un mur de réponses indiquant "Just Google" - pour plus d'informations consultez la FAQ
Marco Ceppi
1
Il existe un guide d’étape utile ici: help.ubuntu.com/community/Git. @Marco Ceppi Désolé mais je n'étais pas polémique. Et puis le lien que j'ai posté semble être tout à fait pertinent pour la question ... OK maintenant comme réponse?
BonboBingo
Les commentaires de @BonboBingo ne comptent pas comme des réponses! Je ne faisais que commenter la partie "Rechercher sur Google" de votre commentaire. Si vous souhaitez répondre avec des détails sur l'article de Git dans le guide d'aide Ubuntu, vous devez utiliser la case "Votre réponse" au bas de cette page! :)
Marco Ceppi
2
"Au lieu d'un mur de réponses qui dit" Juste Google "- pour plus d'informations, cochez la case" ... ok vous avez raison :) Arrêtons ici.
BonboBingo

Réponses:

38

Vous pouvez utiliser ce didacticiel pour installer un serveur Git tel que proposé par aking1012 ou simplement installer un serveur SSH sur votre instance EC2 (il serait probablement judicieux de le sécuriser et de changer le port par défaut).

Git peut être sans serveur, vous initialisez votre référentiel et vous y accédez depuis distant via SSH. Donc, des instructions comme celle-ci sur le serveur Ubuntu devraient le faire:

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

Enfin, installez SSH sur votre serveur:

sudo apt-get install ssh-server

Maintenant, vous devez configurer SSH pour le sécuriser.

Il est temps de mettre votre projet en ligne (les données que vous avez déjà sur votre machine de développement):

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

Et maintenant, vous pouvez commencer à cloner. Vous allez sur votre machine de développement:

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

Vérifiez cette excellente ressource sur Git .

Et pour générer vos clés ssh pour une authentification plus sûre, vous pouvez lire cet article sur l’ authentification SSH .

Huygens
la source
Ça ne devrait pas openssh-server?
Jorge Castro
1
@jorge il semble que ce ssh-serversoit un alias pour openssh-server, du moins sur Ubuntu 10.04.
Huygens
1
Cela pourrait fonctionner, mais la journalisation via SSH sur des machines Amazon EC2 nécessite une paire de clés publique / privée (ssh -i key.pem ubuntu @ address). De plus, je dois me rappeler le chemin (adresse ubuntu @: / var / www / dir1 / dir2), au lieu de simplement git clone git.mydomain.com/repository
Pawełkowy
1
@Pawel bon point. C'est pourquoi certaines personnes placent le référentiel git à la racine du système de fichiers. Mais oui, vous avez besoin de clés ssh ou de comptes. Vous pouvez aussi utiliser HTTP, mais vous n’avez pas un contrôle d’accès aussi agréable que je sache.
Huygens
3
@ PawełKarpiński - Vous pouvez configurer un fichier de configuration SSH côté client ~/.ssh/configpour gérer le nom d'utilisateur / l'adresse de l'hôte, la clé de saisie, les ports et ainsi de suite.
Shauna
15

J'utilise Gitolite pour toutes les configurations de serveur Git, ce qui permet une granularité de sécurité d'accès "par branche". L'installation est assez simple si vous le faites sur un serveur distant, il suffit de lancer un script interactif. En plus de cette nature "facile à installer", il a également un paquet dans Natty et Maverick

sudo apt-get install gitolite

Cela ne fournira pas une interface Web comme Github ou Gitweb - mais vous pouvez facilement configurer et installer celles-ci sur quelque chose comme Gitolite.

Marco Ceppi
la source
9

J'aime la gitolite . Le livre Pro Git contient une section , mais je recommande de lire le livre en entier.

En ce qui concerne votre exigence d'utilisateurs multiples:

Gitolite vous permet de spécifier des autorisations non seulement par référentiel (comme le fait Gitosis), mais également par noms de branche ou de balise dans chaque référentiel. Autrement dit, vous pouvez spécifier que certaines personnes (ou groupes de personnes) ne peuvent que pousser certains "ref" (branches ou tags) mais pas d'autres.

Li Lo
la source
7

http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way peut être légèrement modifié pour répondre à vos besoins ... un tutoriel similaire http: // blog .agdunn.net /? p = 277 .

RobotHumans
la source
1
Remarque: je suis en train de mettre au point un didacticiel git pour rvm, ree / ruby, rails, git pour le client de développement et pour le serveur de développement. il rassemble beaucoup de didacticiels en ligne et les modifie un peu, mais le travail est encore en cours.
RobotHumans
ces tutoriels sont géniaux, mais bon, ils sont plutôt compliqués. N'y a-t-il pas de tutoriels "plus courts"? :)
Pawełkowy
Je n'ai rien vu de plus simple ... la plupart des tutoriels pour gitorious et gitosis ne passent pas par la création d'un exemple de projet et de tests (quelque chose que je pense devrait être dans chaque tutoriel). Si je vois un autre jeu qui est plus direct, je garderai ce fil à l'esprit
RobotHumans
@ PawełKarpiński - Qu'est-ce qui les rend si compliqués? J'ai déjà utilisé la configuration Gitosis auparavant, et c'est en fait très facile.
Shauna
4

La solution qui me convenait le mieux était la configuration de WebDAV.

  • sudo a2enmod sudo dav_fs

  • sudo a2enmod dav

  • ajoutez un nouveau fichier /etc/apache2/sites-availableet nommez-le, par exemple git.yourserver.com,. Modifiez-le et ajoutez les lignes suivantes:

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

  • créer un répertoire /var/www/git.yourserver.comet un répertoire à l' reposintérieur de l'id
  • sudo chown www-data /var/www/git.yourserver.com/repos
  • sudo htpasswd -c /var/www/git.yourserver.com/password.dav user_login et entrez le mot de passe pour l'utilisateur nommé user_login
  • sudo chown root:www-data /var/www/git.yourserver.com/password.dav
  • sudo chmod 640 /var/www/git.yourserver.com/password.dav

Maintenant, sudo a2ensite git.yourserver.comet sudo service apache2 restart.

  • Entrez /var/www/git.yourserver.com/reposet créez un répertoire, par exemple,myrepo.git
  • cd myrepo.git
  • git --bare init
  • git update-server-info

Maintenant, déconnectez-vous de votre serveur distant et accédez au répertoire local dans lequel vous souhaitez modifier vos fichiers.

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

et vous avez fini. Si vous souhaitez envoyer vos modifications validées au serveur:

git push origin master

Vous pouvez créer autant d'utilisateurs que vous le souhaitez sudo htpasswd. Rappelez-vous simplement de ne pas utiliser le -ccommutateur, lors de l'ajout d'utilisateurs, car l'ancien fichier sera supprimé.

Pawełkowy
la source
3
HTTP est le protocole "muet" qui est pris en charge mais fortement déconseillé. Le protocole natif git fonctionne beaucoup mieux et est plus facile à configurer car tout ce que vous avez à faire est de disposer d’un serveur ssh en état de marche (ce que vous devriez déjà) et d’installer git-core. Pas besoin de se moquer d'Apache.
Psusi
3

J'aime aussi l' approche gitolite pour la gestion des utilisateurs et la sécurité. J'ai un AMI de serveur Git + gitolite pour EC2 en cours de test. N'hésitez pas à faire un essai; la documentation est disponible ici:

Alestic Git Server

En utilisant cette approche, vous pouvez avoir un serveur Git central avec des référentiels privés fonctionnant en quelques minutes. Il existe une courbe d'apprentissage pour gitolite et EC2 si vous ne les connaissez pas bien.

Eric Hammond
la source
3

C'est très facile à réaliser avec du gitolite . En moins d’une heure, vous disposerez d’un serveur git multi-utilisateurs facile à configurer et sécurisé.

J'ai un article howto sur mon site

realcnbs
la source