Como executar o seu próprio servidor de Git
Saiba como configurar o seu próprio servidor Git neste tutorial a partir dos nossos arquivos.
Git é um sistema de versões desenvolvido por Linus Torvalds, que é utilizado por milhões de utilizadores em todo o mundo. Empresas como GitHub oferecem serviços de alojamento de códigos baseados em Git. De acordo com relatórios, GitHub, um site de alojamento de códigos, é o maior serviço de alojamento de códigos do mundo. A empresa afirma que há 9,2M pessoas a colaborar neste momento em 21,8M repositórios no GitHub. Grandes empresas estão agora a mudar-se para GitHub. Até o Google, o gigante dos motores de busca, está a fechar o seu próprio código Google e a mudar-se para GitHub.
Executar o seu próprio servidor Git
GitHub é um grande serviço, contudo existem algumas limitações e restrições, especialmente se for um indivíduo ou um pequeno jogador. Uma das limitações do GitHub é que o serviço gratuito não permite o alojamento privado do código. Tem de pagar uma taxa mensal de $7 para alojar 5 repositórios privados, e as despesas aumentam com mais repos.
Em casos como estes ou quando quiser mais controlo, o melhor caminho é executar Git no seu próprio servidor. Não só poupa custos, como também tem mais controlo sobre o seu servidor. Na maioria dos casos, a maioria dos utilizadores avançados de Linux já têm os seus próprios servidores e empurrar Git nesses servidores é como ‘grátis como na cerveja’.
Neste tutorial vamos falar sobre dois métodos de gestão do seu código no seu próprio servidor. Um é executar um servidor Git básico e nu e o segundo é através de uma ferramenta GUI chamada GitLab. Para este tutorial utilizei um servidor Ubuntu 14.04 LTS totalmente remendado a correr num VPS.
Install Git no vosso servidor
Neste tutorial estamos a considerar um caso de uso em que temos um servidor remoto e um servidor local e vamos trabalhar entre estas máquinas. Por uma questão de simplicidade, chamar-lhes-emos servidor remoto e servidor local.
P>Primeiro, instalem Git em ambas as máquinas. Pode instalar Git a partir dos pacotes já disponíveis através dos repos ou das suas distros, ou pode fazê-lo manualmente. Neste artigo utilizaremos o método mais simples:
sudo apt-get install git-core
Então adicione um utilizador para Git.
sudo useradd gitpasswd git
A fim de facilitar o acesso ao servidor, vamos configurar um login ssh sem password. Primeiro crie chaves ssh na sua máquina local:
ssh-keygen -t rsa
Pedir-lhe-á para fornecer o local de armazenamento da chave, basta premir Enter para utilizar o local predefinido. A segunda pergunta será para lhe fornecer uma frase de passagem que será necessária para aceder ao servidor remoto. Gera duas chaves – uma chave pública e uma chave privada. Anote a localização da chave pública que será necessária no próximo passo.
Agora terá de copiar estas chaves para o servidor para que as duas máquinas possam falar uma com a outra. Execute o seguinte comando na sua máquina local:
cat ~/.ssh/id_rsa.pub | ssh git@remote-server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Now ssh para o servidor e crie um directório de projectos para Git. Pode usar o caminho desejado para o repo.
git@server:~ $ mkdir -p /home/swapnil/project-1.git
Então mude para este directório:
cd /home/swapnil/project-1.git
Então crie um repo vazio:
git init --bareInitialized empty Git repository in /home/swapnil/project-1.git
Temos agora de criar um repo Git na máquina local.
mkdir -p /home/swapnil/git/project
E mudar para este directório:
cd /home/swapnil/git/project
Criar agora os ficheiros de que necessita para o projecto neste directório. Fique neste directório e inicie o git:
git init Initialized empty Git repository in /home/swapnil/git/project
Adicione agora ficheiros ao repo:
git add .
Agora cada vez que adicionar um ficheiro ou fizer alterações tem de executar o comando de adição acima. Também precisa de escrever uma mensagem de compromisso com cada alteração num ficheiro. A mensagem de submissão diz basicamente que alterações foram feitas.
git commit -m "message" -a message 2 files changed, 2 insertions(+) create mode 100644 GoT.txt create mode 100644 writing.txt
Neste caso eu tinha um ficheiro chamado GoT (Game of Thrones review) e fiz algumas alterações, por isso quando corri o comando especificou que foram feitas alterações ao ficheiro. Na opção ‘-a’ do comando acima, significa commits para todos os ficheiros no repo. Se fez alterações apenas a um, pode especificar o nome desse ficheiro em vez de usar ‘-a’.
Um exemplo:
git commit -m "message" GoT.txt message 1 file changed, 1 insertion(+)
Até agora, temos estado a trabalhar no servidor local. Agora temos de empurrar estas alterações para o servidor para que o trabalho esteja acessível através da Internet e possa colaborar com outros membros da equipa.
git remote add origin ssh://git@remote-server/repo-<wbr< a="">>path-on-server..git
Agora pode empurrar ou puxar as alterações entre o servidor e a máquina local usando a opção ‘push’ ou ‘pull’:
git push origin master
Se houver outros membros da equipa que queiram trabalhar com o projecto precisam de clonar o reporte no servidor para a sua máquina local:
git clone git@remote-server:/home/swapnil/project.git
Here /home/swapnil/project.git é o caminho do projecto no servidor remoto, troque os valores pelo seu próprio servidor.
Então, mudar directório na máquina local (trocar projecto com o nome do projecto no seu servidor):
cd /project
Agora podem editar ficheiros, escrever mensagens de alteração de compromisso e depois empurrá-los para o servidor:
git commit -m 'corrections in GoT.txt story' -aAnd then push changes:
git push origin master
Parto do princípio que isto é suficiente para um novo utilizador começar a utilizar Git nos seus próprios servidores. Se procura algumas ferramentas GUI para gerir alterações em máquinas locais, pode usar ferramentas GUI como QGit ou GitK para Linux.
>QGit
Usando GitLab
Esta foi uma solução de linha de comando pura para o dono e colaborador do projecto. Certamente não é tão fácil como usar GitHub. Infelizmente, enquanto GitHub é o maior serviço de alojamento de código do mundo; o seu próprio software não está disponível para ser utilizado por outros. Não é de código aberto, pelo que não pode pegar no código fonte e compilar o seu próprio GitHub. Ao contrário do WordPress ou do Drupal, não pode descarregar o GitHub e executá-lo nos seus próprios servidores.
Como é habitual no mundo do código aberto, as opções não têm fim. GitLab é um projecto sofisticado que faz exactamente isso. É um projecto open source que permite aos utilizadores executar um sistema de gestão de projectos semelhante ao GitHub nos seus próprios servidores.
P>Pode usar GitLab para executar um serviço semelhante ao GitHub para os membros da sua equipa ou para a sua empresa. Pode usar GitLab para trabalhar em projectos privados antes de os libertar para contribuições públicas.
GitLab emprega o modelo tradicional de negócio Open Source. Eles têm dois produtos: software de código aberto gratuito, que os utilizadores podem instalar nos seus próprios servidores, e um serviço alojado semelhante ao GitHub.
A versão descarregável tem duas edições – a edição gratuita da comunidade e a edição empresarial paga. A edição empresarial é baseada na edição comunitária, mas vem com características adicionais destinadas aos clientes empresariais. É mais ou menos semelhante ao que o WordPress.org ou WordPress.com oferece.
A edição comunitária é altamente escalável e pode suportar 25.000 utilizadores num único servidor ou cluster. Algumas das características do GitLab incluem: Gestão de repositório Git, revisões de código, rastreio de edições, feeds de actividade, e wikis. Vem com GitLab CI para integração e entrega contínua.
Muitos fornecedores de VPS como a Digital Ocean oferecem gotículas de GitLab aos utilizadores. Se desejar executá-lo no seu próprio servidor, pode instalá-lo manualmente. GitLab oferece um pacote Omnibus para diferentes sistemas operativos. Antes de instalarmos o GitLab, poderá querer configurar um servidor de correio electrónico SMTP para que o GitLab possa empurrar os emails como e quando necessário. Eles recomendam o Postfix. Assim, instale o Postfix no seu servidor:
sudo apt-get install postfix
Durante a instalação do Postfix ele irá fazer-lhe algumas perguntas; não as salte. Se falhou, pode sempre reconfigurá-lo usando este comando:
sudo dpkg-reconfigure postfix
Quando executar este comando escolha “Internet Site” e forneça o ID de e-mail para o domínio que será usado pelo Gitlab.
No meu caso forneci:
This e-mail address is being protected from spambots. You need JavaScript enabled to view it
Use Tab e crie um nome de utilizador para o postfix. A página seguinte pedir-lhe-á para fornecer um destino para o mail.
Nos restantes passos, utilize as opções por defeito. Uma vez instalado e configurado o Postfix, passemos à instalação do GitLab.
P>Download dos pacotes usando wget (substitua o link para download pelos últimos pacotes daqui) :
wget https://downloads-packages.s3.amazonaws.com/ubuntu-14.04/gitlab_7.9.4-omnibus.1-1_amd64.deb
Então instale o pacote:
sudo dpkg -i gitlab_7.9.4-omnibus.1-1_amd64.deb
Agora é hora de configurar e iniciar o GitLabs.
sudo gitlab-ctl reconfigure
Tem agora de configurar o nome de domínio no ficheiro de configuração para que possa aceder ao GitLab. Abra o ficheiro.
nano /etc/gitlab/gitlab.rb
Neste ficheiro, edite o ‘external_url’ e dê o domínio do servidor. Guarde o ficheiro e depois abra o sítio do GitLab recentemente criado a partir de um navegador web.
Por defeito cria ‘root’ como administrador do sistema e utiliza ‘5iveL!fe’ como palavra-passe. Entre no site do GitLab e depois altere a palavra-passe.
Após a palavra-passe ser alterada, entre no site e comece a gerir o seu projecto.
p>GitLab está a transbordar de características e opções. Vou pedir emprestadas linhas populares do filme, A Matriz: “Infelizmente, ninguém pode ser informado sobre o que todo o GitLab pode fazer. Tem de se tentar por si próprio”