Mazoquê?! post novo depois de tanto tempo? será isso uma ilusão de ótica? uma peça pregada pelo seu Internet Explorer navegador? Não caros amigos e visitantes, eis que apareço como um parente depois de você ganhar na megasena para trazer mais um humilde post para seu deleite.

O objetivo nesse post é criar um repositório GIT privado no linux (CentOS) para uso em projetos pessoais e afins, este tutorial parte do suposto que você está usando uma máquina windows e que o seu servidor está rodando linux (CentOS).

Apesar de existirem alguns bons repositórios git publicos (GitHub, BitBucket, etc) eu prefiro manter meus fontes privados em um lugar onde eu tenha total controle das coisas (paranoia = true) e para esse fim eu uso uma VPS baratinha da tia Ramnode, se o repositório for usado por poucas pessoas não precisa ser uma máquina parruda, eu peguei uma OpenVZ bem fraquinha com HD SATA mesmo, na data em que este post foi escrito essa lindeza estava saindo por apenas 15 obamas por ano, uma pexinxa! não precisa comprar segundo IP, se já tiver um domínio simplesmente crie um registro DNS A apontando para o IP da sua VPSe seja feliz.

Partindo do pressuposto de que você menino maroto e faceiro já comprou sua VPS, logue nela via SSH e vamos começar a brincadeira.

A primeira coisa a fazer caso você não tenha o GIT instalado é fazer a instalação, ela é bem fácil e pode ser feita via YUM, com o seguinte comando.

yum install git 

Agora vamos criar um usuário chamado “git”, os repositórios vão ficar no diretório home desse usuário, para criar o usuário basta usar o comando abaixo.

adduser git 

Agora precisamos configurar o password desse usuário.

 passwd git 

Informe uma senha de sua escolha, aperte enter e confirme a senha.

Agora vamos mudar de usuário e entrar no diretório “home” do usuário e criar um repositório vazio de nome “repositorio.git” (sim, com o .git no final)

 su git 

 

 cd /home/git 

 

 mkdir repositorio.git 

 

 cd repositorio.git 
git --bare init 

Se tudo deu certo até aqui você deve ter visto uma mensagem como no final da imagem

 

repositorio_git_1

 

Como a pasta foi criada com o usuário “git” ele será o owner (dono) dessa pasta, tendo todas as permissões na mesma e suas subpastas, nós também poderíamos criar com o usuário root mas depois seria necessário tornar o usuário “git” o dono do diretório para que não desse nenhum erro de permissão na hora de dar um “push” das alterações no repositório.

O próximo passo é instalar um cliente GIT no seu computador windows, um cliente muito utilizado é o TortoiseGit, mas se você gosta  de brincar na linha de comando pode instalar o GitExtensions que já vem com um bash maroto pra fazer tudo via comandos do GIT, eu sempre tenho os dois instalados pois não sei todos os comandos de cabeça e com um cliente visual fica tudo mais fácil.

Não preciso explicar como se instala o cliente né? –‘  é tipo dois cliques, next, next, next.

Com o cliente instalado, agora temos que configurar seu perfil de commiter, basicamente são os dados que vão aparecer no commit que você fizer…

se você instalou o GitExtensions você pode fazer pela linha de comando, primeiro vamos rodar um comando para configurar o email.

 git config --global user.email "seuemail@site.com.br" 

logo após vamos rodar um outro comando para configurar o nome

 git config --global user.name "Nome Sobrenome"  

Para verificar se ficou certinho basta rodar o seguinte comando

  git config --global user.email;git config --global user.name   

Deve aparecer seu email e seu nome e sobrenome no console, reparem que eu usamos o filtro –global, essa configuração significa que esse perfil vai valer para todos os repositórios que eu fizer qualquer alteração, caso seja necessário manter dados diferentes para para cada repositório (como dados pessoais em alguns repositórios e dados corporativos em outros) basta usar o mesmo comando sem o filtro –global.

Caso você esteja usando o TortoiseGit, essa configuração é ainda mais simples, clicando com o botão direito em qualquer pasta escolha TortoiseGit > Settings, nas opções escolha a aba Git e informe seu nome e email e depois confirme.

 

repositorio_git_2

 

Agora vem uma parte muito legal, temos que configurar o servidor linux para aceitar conexões por chaves privadas, sem pedir senha, nesse método cada computador que acessa o repositório vai ter sua chave pública armazenada no servidor de forma que ao fazer push, pull, ou qualquer outra operação no GIT não seja necessária autenticação.

Na sua máquina cliente (windows) baixe o PuttyGen, feito isso abra o PuttyGen, deixe as opções como estão e escolha a opção Generate, depois de clicar, gire o ponteiro do mouse na parte cinza conforme instruções do programa, quando o processo terminar, vá no campo key passphrase informe uma senha (apenas pra dificultar o trabalho dos hackudos), confirme a senha no campo de baixo e salve  as senhas clicando em save public key e save private key, salve a public key com a extensão .txt, a private key será salva automaticamente com a extensão .ppk.

Repare que foi gerada uma outra chave na parte de cima no campo key

repositorio_git_3

 

Essa chave é igual a public key que foi gerada, com um diferencial que ela serve pra logins via SSH, ela deve ser salva em local específico no seu servidor para permitir o login sem password, é essa parte que vamos configurar agora…

logado no servidor vá para o diretório home do usuário git.

 cd /home/git 

se não estiver logado com o usuário git, faça a mudança de usuário e informe a senha se necessário (se estiver logado como root não vai precisar de senha).

 su git 

Vamos criar o diretório .ssh e depois o arquivo authorized_keys que é onde vão ficar as chaves dos computadores de todos os desenvolvedores com acesso sem login no servidor.

 

repositorio_git_4

repositorio_git_5

 

repositorio_git_6

 

Logado com sucesso, sem informar password 😀

Ai você que é chato pacas vai falar:

– Ah, mas eu tenho que informar o usuário?

Nesse caso sim meu jovem gafanhoto, mas você poderia ao invés de colocar somente o IP do servidor, prefixar com o usuário, ficando assim “usuario@ip” dessa forma não iria precisar informar o usuário :p.

Agora que vimos que o login pela chave privada já está funcionando vamos testar  fazendo umas operações no repositório que criamos lá no início.

Primeiro escolha um pasta qualquer do seu computador onde vai ficar o repositório clonado, no meu caso eu coloquei na C:\temp\repositorio.

Clique com o botão direito na pasta e escolha a opção git clone.

na url coloque o caminho da seguinte forma: usuario@ip:nomedorepositorio.git

no meu caso ficou conforme a imagem abaixo, reparem que eu informei a chave privada que geramos pelo PuttyGen.

repositorio_git_7

Ao clicar em Ok, o repositório deve ser clonado com sucesso, sem pedir qualquer autenticação.

repositorio_git_8

 

Repositório clonado com sucesso, agora coloque alguns arquivos dentro da pasta, selecione os arquivos, clique com o botão direito e escolha TortoiseGit > Add para adicionar os arquivos e confirme clicando em OK.

Faça o commit desses arquivos usando o TortoiseGit, escolha a opção Check for modifications para ver os arquivos alterados e depois escolha a opção Commit, informe uma mensagem para o commit e clique em OK.

repositorio_git_9

 

É importante atentar que diferente do Subversion (SVN) o GIT é um controle de versão distribuído e não centralizado, em outras palavras, o commit que você fez não foi para o servidor e sim para a sua própria máquina, para enviar para o servidor é necessário fazer o push dessas alterações.

Para isso basta usar o TortoiseGit e escolher a opção Push, nesse caso nós vamos fazer o push do origin (computador local) pro master (servidor), não esqueça de deixar marcada a opção Autoload Putty Key.

repositorio_git_10

 

repositorio_git_11

 

Agora os fontes foram pro servidor, para fazer o teste, clone o repositório em outra pasta qualquer e dê um show log com o TortoiseGit.

repositorio_git_12

 

Reparem que o commit ficou identificado com o nome do perfil que configurei no TortoiseGit.

 

Agora um pequeno detalhe… supondo que tenha adicionado a chave pública de outros computadores para terem acesso sem login no servidor, além de eles terem permissão para fazer tarefas do GIT sem necessidade de login, eles também poderão logar na máquina usando a mesma chave privada, se você não quer que isso aconteça basta restringir o acesso do usuário git para executar apenas comandos do git e não comandos UNIX, o git vem com um utilitário chamado GIT-SHELL que é serve justamente para este caso, para isso vamos alterar o shell do usuário git, caso não esteja com o usuário root mude com o comando

 su root 

Para descobrir aonde está o utilitário GIT-SHELL use o comando

 which git-shell 

, com o caminho em mãos execute o comando

 cat /etc/shells 

para verificar se o GIT-SHELL já está na lista de shells, caso não esteja use o VI para adicionar o caminho que foi retornado no which do git-shell (o uso do VI foi explicado antes).

Agora basta usar o comando

 chsh git 

e informar o caminho do git-shell, feito isso ao tentar logar via SSH e executar algum comando que não seja do GIT o usuário verá o seguinte erro.

fatal: Interactive git shell is not enabled.

 

Então é isso, se curtiu esse post não esquece de clicar no joinha e avaliar com 10 estrelas aí embaixo, em breve volto com os episódios já gravados do CRUD com entity framework.

😀

VN:F [1.9.22_1171]
Rating: 9.0/10 (3 votes cast)
VN:F [1.9.22_1171]
Rating: +3 (from 3 votes)
Criando seu servidor GIT privado no linux [CentOS], 9.0 out of 10 based on 3 ratings