Configurare un server git


57

Di recente ho installato Ubuntu-Server su Amazon EC2. Vorrei usarlo come mio server git, in modo da poter memorizzare i miei repository lì.

Quindi, dove posso trovare alcune istruzioni dettagliate su come configurare git sul server Ubuntu? Tutte queste chiavi SSH e cose del genere, più utenti, ecc.


2
Non penso che questa sia una domanda relativa a Ubuntu (oltre all'ovvio "è linux"), hai anche guardato la documentazione di git ? Ci sono menzioni lì sulla creazione di un repository pubblico e privato .
Ward Muylaert,

22
@BonboBingo Dire "Cerca solo su Google" in realtà non è una soluzione. Alla maggior parte delle domande qui potrebbe essere data una risposta "se cerchi abbastanza a lungo ..." Chiedi a Ubuntu di essere il sito di domande e risposte di autorità che fornisce risposte di 1 ° livello invece di un muro di risposte che dice "Solo Google" - per ulteriori informazioni consulta le FAQ
Marco Ceppi

1
C'è una guida utile qui: help.ubuntu.com/community/Git. @Marco Ceppi Scusa ma non ero polemico. E poi il link che avevo pubblicato sembra essere abbastanza rilevante per la domanda ... Okay ora come risposta?
BonboBingo,

I commenti di @BonboBingo non contano come risposte! Stavo semplicemente commentando la parte "Cerca in Google" del tuo commento. Se vuoi rispondere con dettagli sull'articolo Git nella Guida di Ubuntu, dovresti usare la casella "La tua risposta" in fondo a questa pagina! :)
Marco Ceppi

2
"invece di un muro di risposte che dice" Solo Google "- per ulteriori informazioni, controlla" ... ok hai ragione :) Fermiamoci qui.
BonboBingo,

Risposte:


38

Puoi usare il tutorial per installare un server Git come aking1012 ti ha proposto o potresti semplicemente installare il server SSH sulla tua istanza EC2 (probabilmente sarebbe saggio proteggerlo e cambiare la porta predefinita).

Git può essere senza server e avviare il repository e quindi accedervi da remoto tramite SSH. Quindi istruzioni come questa sul server Ubuntu dovrebbero farlo:

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

Infine installa SSH sul tuo server:

sudo apt-get install ssh-server

Ora, dovresti configurare SSH per proteggerlo.

È tempo di mettere online il tuo progetto (i dati che hai già sulla tua macchina di sviluppo):

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

E ora puoi iniziare a clonare in giro. Vai sulla tua macchina di sviluppo:

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

Controlla questa eccellente risorsa su Git .

E per generare le tue chiavi ssh per un'autenticazione più sicura, puoi leggere questo articolo sull'autenticazione SSH .


Non dovrebbe essere openssh-server?
Jorge Castro,

1
@jorge sembra che ssh-serversia un alias di openssh-server, almeno su Ubuntu 10.04.
Huygens,

1
bene, questo potrebbe funzionare, ma la registrazione tramite SSH su macchine Amazon EC2 richiede una coppia di chiavi pubblica / privata (ssh -i key.pem ubuntu @ address). Inoltre, devo ricordare il percorso (ubuntu @ address: / var / www / dir1 / dir2), invece di solo git clone git.mydomain.com/repository
Pawełkowy

1
@Pawel buon punto. Ecco perché alcune persone mettono il repository git nella radice del file system. Ma sì, hai bisogno di chiavi o account SSH. Oppure potresti usare HTTP, ma in questo caso non hai il controllo degli accessi AFAIK davvero piacevole.
Huygens,

3
@ PawełKarpiński - È possibile impostare un file di configurazione SSH sul lato client ~/.ssh/configper gestire nome utente / indirizzo host, input chiave, porte e quant'altro.
Shauna,

15

Per tutte le configurazioni del mio server Git uso Gitolite che consente una granularità di sicurezza dell'accesso "per ramo". L'installazione è piuttosto semplice se lo stai facendo su un server remoto è facile come eseguire uno script interattivo. Oltre a questa natura "facile da installare" ha anche un pacchetto in Natty e Maverick

sudo apt-get install gitolite

Questo non fornirà un frontend web come Github o Gitweb, ma puoi facilmente configurarli e installarli su qualcosa come Gitolite.


9

Mi piace la gitolite . Il libro Pro Git ha una sezione su di esso, ma consiglio di leggere l'intero libro.

Per quanto riguarda il requisito di più utenti:

Gitolite ti consente di specificare le autorizzazioni non solo per repository (come fa Gitosis), ma anche per nomi di rami o tag all'interno di ciascun repository. Cioè, puoi specificare che determinate persone (o gruppi di persone) possono solo spingere determinati "ref" (rami o tag) ma non altri.


7

http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way può essere leggermente modificato per adattarlo ai tuoi scopi ... un tutorial simile http: // blog .agdunn.net /? p = 277 .


1
nota: al momento sto mettendo insieme uno 0 per fare rvm, ree / ruby, rails, tutorial git per client di sviluppo e tutorial di server di sviluppo. disegna molti tutorial online in un unico posto e li modifica un po ', ma al momento è ancora un lavoro in corso.
RobotHumans,

questi tutorial sono fantastici, ma sono piuttosto complicati. Non ci sono tutorial "più brevi"? :)
Pawełkowy,

Non ho visto niente di più semplice ... la maggior parte dei tutorial per gitorosi e gitosi non passa attraverso la creazione di un progetto di esempio e test (qualcosa che penso dovrebbe essere in ogni tutorial). Se vedo un altro tut più diretto, terrò presente questa discussione
RobotHumans,

@ PawełKarpiński - Cosa c'è di così complicato in loro? Ho usato la configurazione di Gitosis prima, ed è in realtà molto semplice.
Shauna,


4

La soluzione che ha funzionato meglio per me è stata la configurazione di WebDAV.

  • sudo a2enmod sudo dav_fs

  • sudo a2enmod dav

  • aggiungere un nuovo file /etc/apache2/sites-availablee denominarlo, ad esempio git.yourserver.com. Modificalo e aggiungi le seguenti righe:

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

  • crea directory /var/www/git.yourserver.come directory reposall'interno di id
  • sudo chown www-data /var/www/git.yourserver.com/repos
  • sudo htpasswd -c /var/www/git.yourserver.com/password.dav user_login e inserisci la password per l'utente di nome user_login
  • sudo chown root:www-data /var/www/git.yourserver.com/password.dav
  • sudo chmod 640 /var/www/git.yourserver.com/password.dav

Ora sudo a2ensite git.yourserver.come sudo service apache2 restart.

  • Immettere /var/www/git.yourserver.com/repose creare una directory, ad esempio,myrepo.git
  • cd myrepo.git
  • git --bare init
  • git update-server-info

Ora, disconnettiti dal tuo server remoto e vai alla directory locale in cui vuoi modificare i tuoi file.

git clone http://user_login:user_password@git.yourserver.com/myrepo.git

e hai finito. Se si desidera inviare le modifiche apportate al server:

git push origin master

Puoi creare tutti gli utenti che desideri utilizzare sudo htpasswd. Ricorda solo di non utilizzare -cswitch, quando aggiungi più utenti, perché il vecchio file verrà eliminato.


3
HTTP è il protocollo "stupido" che è supportato ma fortemente scoraggiato. Il protocollo git nativo funziona molto meglio ed è più facile da configurare poiché tutto ciò che devi fare è avere un server ssh funzionante (che già dovresti) e installare git-core. Non c'è bisogno di scherzare con Apache.
psusi

3

Mi piace anche l' approccio gitolite per la gestione degli utenti e della sicurezza. Ho un server Git + gitolite AMI per EC2 attualmente in fase di test. Sentiti libero di provarlo; la documentazione è disponibile qui:

Alestic Git Server

Usando questo approccio, puoi avere un server Git centrale con repository privati ​​in esecuzione in pochi minuti. Esiste una curva di apprendimento per gitolite ed EC2 se non si ha familiarità con essi.


3

È molto facile da ottenere con la gitolite . In meno di un'ora avrai un server git multiutente facilmente configurabile e sicuro.

Ho un articolo howto sul mio sito

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.