Configurando um servidor git

57

Recentemente, configurei o ubuntu-server no Amazon EC2. Gostaria de usá-lo como meu servidor git, para que eu pudesse armazenar meus repositórios lá.

Então, onde posso encontrar instruções detalhadas de como configurar o git no servidor ubuntu? Todas essas chaves SSH e coisas assim, vários usuários, etc.

Pawełkowy
fonte
2
Eu não acho que essa seja uma pergunta relacionada ao Ubuntu (além do óbvio "é linux"), você também já olhou a documentação do git ? Há menções à criação de repositórios público e privado .
Ward Muylaert
22
@BonboBingo Dizer "Basta pesquisar no Google" realmente não é uma solução. A maioria das perguntas aqui podem ser respondidas com "se você pesquisar por tempo suficiente ..." O Ask Ubuntu tem o objetivo de ser o site de perguntas e respostas com autoridade, fornecendo respostas de primeiro nível, em vez de um mural de respostas que diz "Just Google" - para obter mais informações consulte as perguntas frequentes
Marco Ceppi
1
Há um guia de etapas útil aqui: help.ubuntu.com/community/Git. @Marco Ceppi Desculpe, mas eu não era polêmico. E então o link que eu publiquei parece ser bastante relevante para a pergunta ... Ok, agora como resposta?
BonboBingo
Os comentários do @BonboBingo não contam como respostas! Eu estava apenas comentando a parte "Pesquisar no Google" do seu comentário. Se você quiser responder com detalhes sobre o artigo Git no guia de Ajuda do Ubuntu, use a caixa "Sua resposta" na parte inferior desta página! :)
Marco Ceppi
2
"em vez de um conjunto de respostas que diz" Just Google "- para obter mais informações, consulte" ... ok, você está certo :) Vamos parar por aqui.
BonboBingo

Respostas:

38

Você pode usar o tutorial para instalar um servidor Git conforme sugerido pelo aking1012 ou instalar o servidor SSH na sua instância do EC2 (provavelmente seria aconselhável protegê-lo e alterar a porta padrão).

O Git pode ser sem servidor, você inicia seu repositório e acessa-o remotamente via SSH. Portanto, instruções como esta no servidor Ubuntu devem fazer isso:

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

Por fim, instale o SSH no seu servidor:

sudo apt-get install ssh-server

Agora, você deve configurar o SSH para protegê-lo.

É hora de colocar seu projeto online (os dados que você já possui na sua máquina de desenvolvimento):

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

E agora você pode começar a clonar. Você segue sua máquina de desenvolvimento:

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

Verifique este excelente recurso no Git .

E para gerar suas chaves ssh para autenticação mais segura, você pode ler este artigo sobre autenticação SSH .

Huygens
fonte
Isso não deveria ser openssh-server?
Jorge Castro
1
@jorge parece que ssh-serveré um apelido para o openssh-server, pelo menos no Ubuntu 10.04.
Huygens
1
bem, isso poderia funcionar, mas o registro via SSH em máquinas Amazon EC2 requer par de chaves pública / privada (ssh -i key.pem ubuntu @ address). Além disso, eu tenho que lembrar o caminho (ubuntu @ endereço: / var / www / dir1 / dir2), em vez de apenas git git.mydomain.com/repository clone
Pawełkowy
1
@Pawel bom ponto. É por isso que algumas pessoas colocam o repositório git na raiz do sistema de arquivos. Mas sim, você precisa de chaves ou contas ssh. Ou você pode usar HTTP, mas não possui um controle de acesso muito bom, o AFAIK.
Huygens
3
@ PawełKarpiński - Você pode configurar um arquivo de configuração SSH do lado do cliente ~/.ssh/configpara lidar com o nome de usuário / endereço do host, entrada de chave, portas e outros enfeites.
Shauna
15

Para todas as configurações do meu servidor Git, eu uso o Gitolite, que permite uma granularidade de segurança do acesso "por filial". A instalação é bem simples: se você estiver fazendo isso em um servidor remoto, é tão fácil quanto executar um script interativo. Além dessa natureza "fácil de configurar", também possui um pacote em Natty e Maverick

sudo apt-get install gitolite

Isso não fornecerá um front-end da Web como o Github ou o Gitweb - mas você pode facilmente configurar e instalar aqueles em cima de algo como o Gitolite.

Marco Ceppi
fonte
9

Eu gosto de gitolita . O livro Pro Git tem uma seção , mas eu recomendo a leitura do livro inteiro.

Quanto ao requisito de vários usuários:

O Gitolite permite que você especifique permissões não apenas pelo repositório (como o Gitosis), mas também por nomes de ramificações ou tags em cada repositório. Ou seja, você pode especificar que determinadas pessoas (ou grupos de pessoas) só podem enviar determinados "refs" (ramos ou tags), mas outros não.

Li Lo
fonte
7

http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way pode ser ligeiramente modificado para atender às suas finalidades ... um tutorial semelhante http: // blog .agdunn.net /? p = 277 .

RobotHumans
fonte
1
note: No momento, estou montando um tutorial de 0 a pronto rvm, ree / ruby, rails, git para cliente de desenvolvimento e tutorial do servidor de desenvolvimento. apenas atrai muitos tutoriais on-line para um único local e os modifica um pouco, mas ainda é um trabalho em andamento no momento.
RobotHumans
esses tutoriais são incríveis, mas bem, são praticamente complicados. Não existem tutoriais "mais curtos"? :)
Pawełkowy
Não vi nada mais direto ... a maioria dos tutoriais para gitorious e gitosis não passa pela criação de um projeto e teste de amostra (algo que acho que deveria estar em todos os tutoriais). Se eu ver um outro tut que é mais dirigir Eu vou manter esta discussão em mente
RobotHumans
@ PawełKarpiński - O que há de tão complicado neles? Eu usei a configuração Gitosis antes e é realmente muito fácil.
Shauna
4

A solução que funcionou melhor para mim foi a configuração do WebDAV.

  • sudo a2enmod sudo dav_fs

  • sudo a2enmod dav

  • adicione um novo arquivo /etc/apache2/sites-availablee nomeie-o, por exemplo git.yourserver.com,. Edite-o e adicione as seguintes linhas:

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

  • criar diretório /var/www/git.yourserver.come diretório reposdentro de id
  • sudo chown www-data /var/www/git.yourserver.com/repos
  • sudo htpasswd -c /var/www/git.yourserver.com/password.dav user_login e digite a senha do usuário chamado user_login
  • sudo chown root:www-data /var/www/git.yourserver.com/password.dav
  • sudo chmod 640 /var/www/git.yourserver.com/password.dav

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

  • Digite /var/www/git.yourserver.com/repose crie o diretório, por exemplo,myrepo.git
  • cd myrepo.git
  • git --bare init
  • git update-server-info

Agora, efetue logout no servidor remoto e vá para o diretório local em que deseja editar seus arquivos.

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

e você terminou. Se você deseja enviar as alterações confirmadas para o servidor:

git push origin master

Você pode criar quantos usuários desejar sudo htpasswd. Lembre-se de não usar a -copção ao adicionar mais usuários, porque o arquivo antigo será excluído.

Pawełkowy
fonte
3
HTTP é o protocolo "burro" suportado, mas fortemente desencorajado. O protocolo git nativo funciona muito melhor e é mais fácil de configurar, pois tudo o que você precisa fazer é ter um servidor ssh funcional (que você já deveria) e instalar o git-core. Não há necessidade de mexer com apache.
Psusi
3

Também gosto da abordagem gitolite para gerenciar usuários e segurança. Eu tenho um AMI de servidor Git + gitolite para EC2 atualmente em teste. Sinta-se livre para experimentá-lo; documentação está disponível aqui:

Alestic Git Server

Usando essa abordagem, você pode ter um servidor Git central com repositórios particulares em execução em questão de minutos. Existe uma curva de aprendizado para o gitolito e o EC2 se você não estiver familiarizado com eles.

Eric Hammond
fonte
3

É muito fácil conseguir com gitolita . Em menos de uma hora, você terá um servidor git multiusuário fácil de configurar e seguro.

Eu tenho um artigo de instruções no meu site

realcnbs
fonte