DEV Community

Guiller
Guiller

Posted on • Edited on

Deploy API Node, Adonis, Mysql AWS Ubuntu

Deploy de produção completo API Node/Adonis, Mysql, Ubuntu 18/20 no servidor cloud AWS.

  • Criar uma máquina no serviço ec2 da Aws. Ubuntu Server 18.04 ou 20
sudo apt-get update
Enter fullscreen mode Exit fullscreen mode
sudo apt-get upgrade
Enter fullscreen mode Exit fullscreen mode
  • Instalar o Nodejs na versão 14 TLS
curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -
Enter fullscreen mode Exit fullscreen mode
sudo apt -y install nodejs
Enter fullscreen mode Exit fullscreen mode
  • Verifique a instalação e versão.
node  -v
Enter fullscreen mode Exit fullscreen mode
A versão deve ser igual ou superior a 14.17

-Versão do Nodejs instalada:

v14.17.2
Enter fullscreen mode Exit fullscreen mode
  • Verifique o NPM e sua versão:
npm -v
Enter fullscreen mode Exit fullscreen mode
  • Instalar o Adonis Framework Global

Instalar o Mysql-Server

  • Comando de instalação:
sudo apt install mysql-server
Enter fullscreen mode Exit fullscreen mode
  • Instalando da forma correta e segura siga esse exemplo:

https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-20-04-pt

Verifique se o Mysql foi instalado corretamente e se esta funcionando.

systemctl status mysql.service
Enter fullscreen mode Exit fullscreen mode
  • Se tudo estiver certo, o resultado será esse:

Alt Text

Agora vamos trocar a senha do usuário padrão do mysql, o root.

Entre no Mysql, com o comando:

sudo mysql
Enter fullscreen mode Exit fullscreen mode

Agora alterar/adicionar uma senha para o usuário root.

  • Altere 'you new password' para sua senha atual.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your new password'; 
Enter fullscreen mode Exit fullscreen mode
  • Altere 'you new password' para sua senha atual.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your new password';
Enter fullscreen mode Exit fullscreen mode

Resposta do Mysql:

Query OK, 0 rows affected (0.01 sec)
Enter fullscreen mode Exit fullscreen mode

Criando um novo banco de dados para nossa aplicação:

sudo mysql -u root -p
Enter fullscreen mode Exit fullscreen mode

Digite sua senha cadastrada no processo anterior.

Pronto! Dentro do MYSQL!

Crie um novo banco de dados:

CREATE DATABASE my_name_database;
Enter fullscreen mode Exit fullscreen mode
  • Veja o novo banco criado:
SHOW DATABASES;
Enter fullscreen mode Exit fullscreen mode

Agora poderemos incluir o processo em nosso arquivo .env, fazendo a migração do banco de dados para o nosso banco recém criado. Se tudo estiver correto poderemos fazer as migrations sem problemas.

  • Você pode usar outros Banco de Dados ou ORMs e coisas do tipo, você pode fazer isso usando qualquer outra ferramenta nesse sentido, neste exemplo usaremos o Node-JS com AdonisFramework-JS, por isso algumas particularidades.
Download do projeto API Service Backend. Projeto usando Nodejs/Adonis Framework e Mysql Database.

O projeto está aberto no Github:
https://github.com/Utwo/adonis-realworld-example-app

Criar um novo usuário Linux dentro do seu console do Ubuntu 18 ou 20. Toque novo_usuario pelo seu usuário.

sudo adduser novo_usuario
Enter fullscreen mode Exit fullscreen mode

Cadastre sua senha passa esse usuário.

Como conceder a um usuário privilégios root

sudo /usr/sbin/visudo
Enter fullscreen mode Exit fullscreen mode

Altere o arquivo, inserindo seu usuário e o total privilégio.

  • Adicionando o nome do usuário e as mesmas permissões como root sob a especificação de privilégios do usuário irá conceder-lhes os privilégios sudo.
# User privilege specification
root            ALL=(ALL:ALL) ALL 
novo_usuario    ALL=(ALL:ALL) ALL
Enter fullscreen mode Exit fullscreen mode

Alt Text

Entre na sessão desse novo usuário criado:

su - novo_usuario
Enter fullscreen mode Exit fullscreen mode

Pronto! Verifique de estar logado com seu usuário.

myuser@ip-122-34-1-200:~$
Enter fullscreen mode Exit fullscreen mode

Instale o Adonis-Cli Framework Globalmente no servidor:

sudo npm install -g adonis-cli
Enter fullscreen mode Exit fullscreen mode

Instale o PM2 Framework Globalmente para Hosting e Deploy da nossa aplicação:

sudo npm install -g pm2
Enter fullscreen mode Exit fullscreen mode
  • Processo completo de instalação, configuração e migração do banco de dados.

Faça o download do projeto para o local do seu usuário.

O projeto está aberto no Github:
https://github.com/Utwo/adonis-realworld-example-app

git clone https://github.com/Utwo/adonis-realworld-example-app
Enter fullscreen mode Exit fullscreen mode

Entre no projeto:

cd adonis-realworld-example-app
Enter fullscreen mode Exit fullscreen mode

Instale a aplicação e os pacotes:

sudo npm install
Enter fullscreen mode Exit fullscreen mode

Alterar o arquivo .env.exemple para .env:

mv .env.exemple .env
Enter fullscreen mode Exit fullscreen mode

Instale a Adonis dentro da sessão do seu usuário recém criado:

sudo npm i --global @adonisjs/cli
Enter fullscreen mode Exit fullscreen mode

Instale o PM2 dentro da sessão do seu usuário recém criado:

sudo npm install -g pm2
Enter fullscreen mode Exit fullscreen mode

Gerando a chave única da aplicação:

adonis key:generate
Enter fullscreen mode Exit fullscreen mode

Entre no arquivo .env para configurar sua aplicação:

nano .env
Enter fullscreen mode Exit fullscreen mode

Altere suas credências de acesso ao banco de dados no arquivo .env

Alt Text

EM CONSTRUÇÃO...

Referências:

https://wime.com.br/2013/06/06/como-adicionar-e-excluir-usuarios-no-ubuntu-12-04-e-centos-6/

https://www.howtoforge.com/tutorial/how-to-deploy-nodejs-applications-with-pm2-and-nginx-on-ubuntu/

https://dev.to/romainlanz/deploy-your-adonis-website-17ec

https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-20-04-pt

https://stackoverflow.com/questions/51008807/nodejs-mysql-client-does-not-support-authentication-protocol

https://scotch.io/tutorials/deploying-adonisjs-5-to-digitalocean

https://computingforgeeks.com/install-node-js-14-on-ubuntu-debian-linux/

Top comments (2)

Collapse
 
ritik_raj_eb4e6e986982918 profile image
Ritik Raj

Deploying an API with Node.js, AdonisJS, and MySQL on an AWS Ubuntu instance can feel like a solid choice for scalability and reliability. However, after trying both AWS and Vultr, I’ve realized Vultr has several advantages that make it my go-to platform for such deployments.

Firstly, the simplicity of deploying an Ubuntu server on Vultr is unparalleled. Their user interface is intuitive, and the setup process feels seamless compared to AWS, where configuring security groups and other prerequisites can be time-consuming. I followed Vultr’s guide,How To Install MySQL on Ubuntu 20.04 and had my database up and running without any issues.

What really stands out is Vultr’s Managed Databases. Instead of manually installing and configuring MySQL, this feature offers a fully managed solution that’s secure and optimized right out of the box. It saves so much time and lets me focus on building my API with AdonisJS rather than worrying about database management.

Another thing I appreciate about Vultr is its High-Frequency Compute instances. They provide the performance and low latency my API needs, especially under heavy load, and scaling is straightforward. Unlike AWS, where I’ve often found myself digging through complex pricing structures, Vultr’s transparent and affordable pricing is a breath of fresh air.

Lastly, their documentation deserves special mention. Guides like How To Install MySQL on Ubuntu are detailed and easy to follow, making it a lot less stressful to set up a production-ready environment.

In my experience, Vultr is a game-changer for developers. It offers the performance and reliability I need without the steep learning curve or hidden costs that sometimes come with AWS. If you’re deploying an API with Node.js, AdonisJS, and MySQL, I’d highly recommend giving Vultr a try.

Collapse
 
thiagoow profile image
Thiago Silva Lopes

Incrível mano! Preciso fazer um deploy de uma API adonis para um projeto pessoal que estou trabalhando, e seu passo a passo vai me ajudar muito! :)