Tempo de leitura: 7 minutos

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.

[code language=”bash”]yum install git [/code]

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.

[code language=”bash”]adduser git [/code]

Agora precisamos configurar o password desse usuário.

[code language=”bash”] passwd git [/code]

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)

[code language=”bash”] su git [/code]

 

[code language=”bash”] cd /home/git [/code]

 

[code language=”bash”] mkdir repositorio.git [/code]

 

[code language=”bash”] cd repositorio.git [/code]

[code language=”bash”]git –bare init [/code]

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.

[code language=”bash”] git config –global user.email "seuemail@site.com.br" [/code]

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

[code language=”bash”] git config –global user.name "Nome Sobrenome"  [/code]

Para verificar se ficou certinho basta rodar o seguinte comando

[code language=”bash”]  git config –global user.email;git config –global user.name   [/code]

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.

[code language=”bash”] cd /home/git [/code]

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

[code language=”bash”] su git [/code]

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

[code language=”bash”] su root [/code]

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

[code] which git-shell [/code]

, com o caminho em mãos execute o comando

[code language=”bash”] cat /etc/shells [/code]

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

[code language=”bash”] chsh git [/code]

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