Primeiramente, precisamos ter no computador servidor e o computador cliente o protocolo Secure Shell(SSH) e GIT(Gerenciador de Arquivos). No SSH o acesso pode ser feito por linhas de comandos entre as máquinas. Saiba que a porta padrão SSH é 22, caso sua porta seja outra é necessário especificar na hora do acesso.

Exemplo 1: Servidor Terra tem porta padrão.

$ ssh my_user@my_server

Exemplo 2: Servidor Lua não tem porta padrão, pois é a 2222. temos que adicionar ” -p <numero_porta>” .

$ ssh -p 2222 my_user@my_server 

Observe que ao executar o comando acima, solicitará a senha no terminal. E o intuito é retirar a senha para facilitar o deploy da aplicação. Para isso, vamos criar um SSH Facilitado.

O “SSH Facilitado” é uma forma de entrar via terminal entre o cliente e o servidor sem digitação da senha. Pois, as duas máquinas estarão configuradas para se comunicar entre si de forma segura.

Desse modo, vamos criar uma chave pública e chave privada no computador cliente. Para isso,abra o terminal no Linux, caso use WINDOWS procure o Git Bash.

Digite comando ssh-keygen e dê um ENTER:

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/my_user/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Novamente, aperte ENTER.

Enter same passphrase again:

Outra vez o ENTER, será criado o par de chaves uma pública e outra privada no diretório /home/my_user/.ssh especificado com os arquivos id_rsa e id_rsa.pub. Então você deve compartilhar apenas o id_rsa.pub

Your identification has been saved in /home/my_user/.ssh/id_rsa
Your public key has been saved in /home/my_user/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:OkPTL5jt293jFe5X+D7LpnFMh+crQhCPj4ODdD/9FHY rui@ubuntu
The key's randomart image is:
+---[RSA 3072]----+
| |
| . |
| + |
| . o o . o E |
| . = S = . ++o|
| o O * + .=o+|
| * + = o. =+|
| + o o +++| | o.. ooB=|
+----[SHA256]-----+

 

Pronto, já temos as chaves criada. Vamos enviar ao servidor apenas a chave pública – id_rsa.pub utilizando o protocolo sftp, SCP ou pelo comando ssh-copy-id. Ao realizar o login por esses protocolos você utiliza a senha ssh que seu servidor disponibilizou.

Por SFTP

$ sftp my_user@server

sftp> put ~/.ssh/id_rsa.pub /home/my_user/.ssh

 

Por SCP

$ scp ~/.ssh/id_rsa.pub my_user@server:/home/my_user/.ssh/

 

Por ssh-copy-id

A sintaxe é:

$ssh-copy-id -i id_rsa.pub my_user@server

Esse comando ssh-copy-id é incluído na maioria das instalações SSH. Por isso, verifique se tem no seu computador. Ele copiará a chave pública no final do arquivo authorized_keys.Então, pode pular as etapas que tem o comando cat e diretamente para configurar o projeto no git.

Se utilizou sftp ou SCP você deve continuar realizando das configurações da chave usando comando cat. Vamos realizar um login utilizando o protocolo ssh com sua senha.

$ssh my_user@server

Digite a senha solicitada.

Após o login efetuado, vá até local onde está o chave pública que enviamos ao servidor via SCP , via SFTP. No nosso exemplo está no caminho /home/my_user/.ssh. E o arquivo possui o nome padrão id_rsa.pub.

$ cd ~/.ssh/
$ cat id_rsa.pub >> authorized_keys
$ chmod 644 authorized_keys

O comando cat concatena o RSA Public key para o arquivo authorized_keys. Se esse arquivo não existir, o comando o criará.

No caso do authorized_keys já existir, particularmente prefiro realizar a criação de outros authorized_keys.

Por exemplo, você cria o authorized_keys2, authorized_keys3 e assim sucessivamente para adicionar outras chaves públicas para acesso ao servidor. Veja abaixo:

$ cd ~/.ssh/
$ cat id_rsa.pub >> authorized_keys2
$ chmod 644 authorized_keys2

Perceba que criamos o authorized_keys2

Vamos a configuração do projeto pelo GIT

Após realizar todos os procedimento de configuração deslogue do servidor e retorne a fazer o login por SSH e entrará automaticamente sem a digitação de senha. Neste momento, crie uma pasta projeto.git na pasta pessoal no servidor sendo um repositório git bare.

home/my_user$ mkdir projeto.git
home/my_user$ cd projeto.git
home/my_user/projeto.git$ git init --bare

Após criação terá os seguintes arquivos e pastas mostrado abaixo.

HEAD config description hooks/ index info/ objects/ refs/

Crie um diretório www para colocar os arquivos vindo do cliente para o servidor.

projeto.git$ mkdir www
projeto.git$ ls
HEAD config description hooks/ index info/ objects/ refs/ www/
home/my_user/projeto.git$ mkdir www

Depois entre no diretório hook/ e crie um arquivo post-receive e dê permissão de execução. O editor utilizado é Vim.

home/my_user/projeto.git/hook$ vim post-receive
home/my_user/projeto.git/hook$ chmod +x hooks/post-receive

post-receive, pode ser configurado de duas maneiras distintas e todos vão chegar copiar os arquivos para o servidor na pasta informada.

Primeira forma de conteúdo do post-receive.

#!/bin/sh
echo "Deploy iniciado"
echo "Usando GIT_WORK_TREE fará os arquivos versionados do servidor ser copiado no diretório www"
GIT_WORK_TREE="/home/my_user/projeto.git/www" git checkout -f
echo "Deploy finalizado"

 

Segunda forma de conteúdo do post-receive.

#!/bin/sh
echo "Deploy iniciado"
git --git-dir="/home/my_user/projeto.git" --work-tree="/home/my_user/projeto.git/www" checkout -f
echo "Deploy finalizado."

Em alguns caso é necessário especificar o branch de origin meu vou exemplificar como production

#!/bin/sh
echo "Deploy iniciado"
git --work-tree="/home/my_user/projeto.git/www" --git-dir="/home/my_user/projeto.git" checkout -f production
echo "Deploy finalizado."

Agora retorne a máquina cliente e crie um repositório git usando comando git init.

$ mkdir projeto
$ cd projeto
projeto$ git init

Depois adicione o repositório remoto do servidor na pasta git –bare.

projeto$ git remote add origin ssh://my_user@serve:/home/my_user/projeto.git

Feito todos procedimentos o git está pronto para automatização do deploy. Após realizar os commit e queira subir arquivos faça um git push. Este comando sobe todos os arquivos que está na branch que estou especificando.

No caso é branch master sendo enviada para o repositório remoto origin

projeto(master)$ git push origin master

Assim você poderá trabalhar com mais facilidade na hora de subir seus códigos para o servidor. Claro que o arquivo post-receive pode ser adicionando mais comandos shell script, mas para este tutorial não seria possível cobrir todos os comandos.

 

Glossário Técnico:

  1. Deploy da aplicação: É maneira do desenvolvedor subir os arquivos computador cliente para servidor que rodará sua aplicação.
  2. Repositório git bare: É um repositório criado no servidor e são considerados repositórios para armazenamento. Também tal repositório não possui uma working tree, logo não é permitido editar arquivos e commitar mudanças. As atualizações a tal repositório bare pode ser feita apenas com git push.
  3. Repositório git : É um armazenamento virtual para projetos que permite salvar versões do código, que você pode acessar quando precisar.

 

 

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *