Tenha seu próprio servidor Git | TUTORIAL Tenha seu próprio servidor Git TUTORIAL Repositórios sob controle O Git, obra de Linus Torvalds, conquistou os desenvolvedores como gerenciador de versões de código. Conheça duas abordagens para colaboração em grupos de trabalho, onde você pode configurar facilmente seu próprio servidor Git para armazenar seus repositórios. por Oliver Frommel O Git [1] é um sistema P2P (plataforma de compartilhamento peer-to-peer ou ponto a ponto), de forma que não é necessário um servidor para utilizá-lo. No entanto, se vo cê está desenvolvendo software ou trabalhando em arquivos pertencentes a um grupo de trabalho, um repositório central do qual possa ser feita uma cópia de segurança é uma boa ideia. Há serviços na Internet que fariam o mesmo trabalho, como o Gitorious [2] ou o onipresente GitHub [3], que são gratuitos para projetos open source. O serviço comercial fornecido pelaGitHub custa de US$25, até US$200 mensais para o serviço Platinum. O Gitorious [4] custa US$99 para que você tenha seu próprio subdomínio. Ao instalar seu próprio servidor Git, você pode contar com diversas abordagens de compartilhamento do conteúdo. As duas mais populares são o Gitolite [5] e o Gitosis [6]. As duas ferramentas estão disponíveis no GitHub. O Gitolite é escrito em Perl e o Gitosis em Python, mas apesar das linguagens diferentes, os aplicativos são bem similares. Várias distribuições (como Fedora e Ubuntu) incluem os dois programas em seu repositório de pacotes, o que torna a instalação muito fácil. As duas ferramentas usam diferentes métodos de instalação, levando a diferentes passos de configuração. Os requisitos básicos para a configuração de um servidor Git são um diretório para a configuração e repositórios, uma conta de usuário e chaves SSH necessárias para realizar autenticação. O acesso aos repositórios Git sempre depende de SSH, o que significa que os servidores Git não precisam de uma porta separada. Teoricamente, você poderia instalar o Gitosis de forma paralela ao Gitolite, mas com um ID de usuário separado para cada caso. Gitolite No Ubuntu, o Gitolite instala o pacote, mas não configura o usuário no diretório. No Fedora, quando você completa a instalação de um pacote, você tem um usuário gitolite e um diretório /var/lib/gitolite para os repositórios. Listagem 1: .ssh/authorized_keys 01 # gitolite start 02 command="/usr/local/bin/gl-auth-command ofrommel", no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-dss AAAAB3NzaC1kc3MAAACBAOvwG6F0D2v2J8d+RsQFwozOqqFAgGkMfDK86TUA 04 ... 05 # gitolite end Linux Magazine #92 | Julho de 2012 Descreverei como instalá-lo manualmente com uma conta de usuário git e um diretório /home/git. A figura 1 mostra o início da instalação. Como um futuro administrador de um servidor Git, você precisa de uma cópia de sua chave SSH pública (de uma estação de trabalho/computador cliente) para autenticar-se no servidor e deve depositá-la em um diretório acessível pela conta de usuário git (como o diretório tmp): scp .ssh/id_dsa.pub Server:/tmp/ofrommel.pub Se você não possui um par de chaves SSH, execute o aplicativo ssh-keygen para criar um. No servidor Git, é necessário, em primeiro lugar, baixar o software do GitHub: git clone git://github.com/sitaramc/gitolite Ainda trabalhando como root, execute o script de instalação, que instala os programas do Gitolite globalmente: # gitolite/src/gl-system-install using default values for EUID=0: /usr/local/bin /var/gitolite/conf /var/gitolite/hooks Você pode fazer isso como usuário git, mas dessa forma todos os arquivos serão armazenados no diretório deste usuário. Em seguida, você pode usar seu ID de usuário ao digitar su - git 75 TUTORIAL | Tenha seu próprio servidor Git e então importar sua chave pública SSH para o Gitolite: gl-setup /tmp/ofrommel.pub Será exibido o arquivo de configuração /home/git/.gitolite.rc novamente. Normalmente, não há problemas em manter as configurações padrão. Agora é possível copiar o repositório de administração do Gitolite para o computador cliente. As tarefas de administração serão padronizadas: edite a configuração localmente e então suba as mudanças para o servidor. O seguinte comando clona o repositório: git clone [email protected]: gitolite-admin.git Se a conexão falhar, a configuração do SSH pode estar com algum problema. O arquivo .ssh/authorized_keys, presente no computador do usuário, deve se parecer com a listagem 1. A parte importante é a linha command=. Se tudo funcionar como o esperado, você terá um novo diretório, gitolite-admin, com dois diretórios com os nomes conf e keydir. Em seguida, edite o arquivo conf/ gitolite.conf para criar um novo repositório. Por padrão, ele conterá um repositório de teste: repogitolite-admin RW+= ofrommel repotesting RW+= @all Você precisa adicionar as chaves públicas para os outros usuários Git (com nomes de arquivo correspondentes) no subdiretório keydir e subir as mudanças como descrito anteriormente. Para mais informações – como, por exemplo, sintaxe dos comandos, vá ao arquivo $HOME/ share/gitolite/conf/example.conf no servidor Git ou no arquivo /var/gitolite/conf/example.conf. Uma terceira opção é fazer buscas no exaustivo wiki do Gitolite [7]. Gitosis O Gitosis funciona basicamente da mesma forma que o Gitolite: é necessário possuir de uma conta de usuário especial com uma configuração SSH para executar os scripts correspondentes. Se sua instalação do Gitosis estiver no Ubuntu, será possível perceber que existe uma conta de usuário gitosis e um diretório /srv/gitosis presentes no sistema. De forma similar ao Gitolite, o Fedora também cria um diretório var/lib/gitosis para o Gitosis, com uma conta de usuário para correspondência. Novamente, vou demonstrar a instalação manual para deixar a abordagem clara. Para começar, obtenha o software Gitosis no repositório GitHub: git clone git://eagain.net/gitosis.git Ainda trabalhando como usuário root, mude o diretório do Gitosis e execute o comando python setup.py install para instalar os arquivos de forma global. Então, copie sua chave pública para o servidor da mesma forma que foi feito para o Gitolite, mude o usuário (su - git) e continue trabalhando com o usuário git. Instale o Gitosis com os seguintes comandos: gitosis-init < /tmp/ofrommel.pub Initialized empty Git repository in /home/git/repositories/ gitosis-admin.git/ Reinitialized existing Git repository in /home/git/ repositories/gitosis-admin.git/ Se alguma mensagem de erro reclamando de problemas de permissão for exibida, é possível que você esteja trabalhando com o Gitosis no diretório home do usuário root, no qual você não tem permissão de sobrescrever arquivos como um usuário git. Assim como no Gitolite, a administração no Gitosis usa um repositório especial. Você pode incluir um em seu cliente da seguinte forma: git clone [email protected]: gitosis-admin.git O diretório gitosis-admin agora contém o arquivo de configuração gitosis.conf e o diretório keydir para as chaves SSH. A configuração, para a qual um grupo de webcoders e um novo repositório de webproject foram Como você pode observar, somente a conta de usuário ofrommel (dono da chave) leu e acessou o repositório gitolite-admin. Para criar um novo repositório, copie a entrada de teste (ambas as linhas) e modifique seu conteúdo. Feito isso, confirme as mudanças ao digitar o comando git commit -a. O comando git push sobe as mudanças para o servidor, o que confirma que o novo repositório foi criado: Initialized empty Git repository in /home/git/repositories/project.git/ 76 Figura 1 Instalação do Gitolite. www.linuxmagazine.com.br Tenha seu próprio servidor Git | TUTORIAL adicionados, pode ser conferida na listagem 2. Em seguida, envie as mudanças para o servidor com o comando commit -a e git push. Para criar um novo projeto, crie um novo diretório chamado webproject. Em seguida, execute os seguintes comandos para iniciar o repositório: git init git remote add origin [email protected]:webproject.git [gitosis], insira uma linha com o conteúdo loglevel = DEBUG e então jogue os resultados no servidor da forma usual. Para mais informações sobre o uso do Git, confira um artigo publicado anteriormente na Linux Magazine [8] ou o livro Pro Git [9], disponível gratuitamente online. Listagem 2: gitosis.conf Após adicionar novos arquivos para o diretório, submeta-os ao gerenciador de versão com o comando git add. Para sincronizar o repositório com o servidor para todas as partes, execute novamente o comando: 01 [gitosis] 02 03 group 04 members = [email protected] 05 writable = gitosis-admin 06 07 group 08 members = ofrommel@riker. linux-magazin.de 09 writable = webproject git push origin master:refs/heads/master Gostou do artigo? igo? Se um erro ocorrer com o uso do Gitosis, você pode habilitar mensagens de debug ao abrir o arquivo de configuração gitosis.conf. Na linha Tem novidade na Coleção Academy! Queremos ouvir sua opinião. inião. Fale conosco em [email protected] ne.com. Este artigo no nosso sso site: s http://lnm.com.br/article/7147 r/artic 7147 Se você gostaria de ter uma visão dos seus repositórios em um navegador web, use o Gitweb como uma interface gráfica, embora ele não lhe ofereça o visual interessante do GitHub. ■ Mais informações [1] Git: http://git-scm.com/ [2] Gitorious em código aberto: http://gitorious.org/ [3] GitHub: https://github.com/ [4] Gitorious comercial: http:// gitorious.com/ [5] Gitolite: https://github. com/sitaramc/gitolite [6] Gitosis: https://github. com/res0nat0r/gitosis [7] Wiki do Gitolite: http:// sitaramc.github. com/gitolite/ [8] “Git no controle” por Juliet Kemp, Linux Magazine 68, Junho de 2010, pág. 60 [9] Chacon, Scott, Pro Git. Apress, 2009: http://progit.org/book Instalação e congifuração de servidores VoIP com Asterisk. Configuração de ramais, extensões, secretária eletrônica, monitoramento e espionagem de chamadas, planos de discagem, URA e muitos outros aspectos que abordam o uso de centrais telefônicas IP PBX. Disponível no site www.LinuxMagazine.com.br Linux Magazine #92 | Julho de 2012 77