Jhonatan Henkel
Posted on November 1, 2023
Olá dev, ja faz temo que não nos falamos, não é mesmo?
Hoje a nossa conversa vai ser sobre hospedagem para aplicação em linguagem Go. Tentei algumas alternativas que não deram certo, como por exemplo:
- Kinghost: Não aceitam hospedagem em Go.
- Heroku: Consegui hospedar, porem não consegui usar devido ao Heroku não deixar eu configurar o .env, e não, não devemos comitar o .env.
Dando uma pesquisada e trocando ideia com algumas pessoas, cheguei a AWS, aqui da de usar, não sei como fica ao certo quanto a custos, mas acredito que não vamos ultrapassar o limite do plano gratuito. É desejável que você tenha um pouco de experiencia na AWS para compreender bem esse post.
Primeiramente acesse o serviço de EC2 da AWS, no menu lateral selecione a opção instances.
Na tela que se abrir, clique no botão superior direito em amarelo escrito Launch instances, é aqui que vamos criar nossa instância na AWS para rodar nossa aplicação em Go.
Inicialmente, vamos definir um nome, selecionar a opção Amazon Linux, escolher a AMI Amazon Linux 2 AMI e por fim a arquitetura 64 bits.
Em tipo de instância, recomendo escolher a t2.micro, e em key pair clique em create new key pair, é aqui que vamos gerar o certificado para conexão via SSH.
Defina um nome, e o resto deixe nas opções padrão, ao criar, salve o arquivo em um local seguro e não perca, vamos precisar dele para acessar o SSH.
Em network settings, clique em Edit
Clique em Add security group rule e defina a porta que sua aplicação Go vai usar, se for a 8000 por exemplo, vai ficar mais ou menos assim:
Agora é só clicar em launch instance e aguardar um pouco.
Agora com a instância criada e iniciada, acesse seu terminal, vá até a pasta que você salvou o certificado mencionado anteriormente, lembra? aquele que eu pedi para salvar e não perder.
O endereço para acessar sua instancia vai ser algo parecido com isso: ec2-XX-XXX-XX-XX.XX-XX-X.compute.amazonaws.com, onde os X's são equivalentes ao DNS da sua máquina.
para pegar o endereço correto, basta ir até os detalhes da sua instância na AWS e pegar o endereço contido no campo Public IPv4 DNS. Dica, esse endereço não é estático, ou seja, fica mudando.
O comando para acessar via SSH pelo terminal, o comando vai ser o seguinte:
sudo ssh -i chave.pem ec2-user@ec2-XX-XXX-XX-XX.XX-XX-X.compute.amazonaws.com
Com isso, você já deve ver a tela inicial da sua maquina. Agora vamos a parte legal, configurar o Go.
Use os seguintes comandos:
sudo yum update -y
sudo yum install -y golang
Para garantir que ficou certo, rode:
go version
Você deve ter algo parecido com isso:
Caso precise atualizar o Go para uma versão mais recente, como eu por exemplo, precisava da 1.21, rode esses comandos:
wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
tar -xvf go1.21.0.linux-amd64.tar.gz
mv go /usr/local
Configure as variáveis de ambiente do Go com os seguintes comandos:
export GOROOT=/usr/local/go
export GOPATH=$HOME/Apps/app1
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
Com isso rode novamente o go version para ver se ficou conforme desejado.
Agora já temos tudo pronto para rodar a aplicação, basta clonar seu repo para a AWS via git clone no SSH, criar seu .env caso necessário, rodar o go mod tidy para atualizar as dependências do seu projeto e por fim rodar o go run main.go no diretório do seu main.
Caso tenha problemas de permissão, rode os comandos com o sudo.
para testar, basta usar a url, seguido pa porta, como por exemplo:
http://ec2-XX-XXX-XX-XXX.XX-XXX-X.compute.amazonaws.com:8080/mainPage
E por hoje é só pessoal, até a próxima ;)
Posted on November 1, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.