Articles

Como executar o seu próprio servidor de Git

Gerir o seu código no seu próprio servidor, executando um servidor Git básico, nu ou através da ferramenta GUI do GitLab.

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.

>QGitQGit

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.

GitLab 1

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.

GitLab 2

Após a palavra-passe ser alterada, entre no site e comece a gerir o seu projecto.

GitLab gerir página do projectop>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”

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *