Hospedar uma aplicação java/MySQL em servidor grátis

 

Depois de perceber que em Servidores Partilhados (Shared Hostings) não se pode hospedar um WAR diferentemente de Servidores Dedicados (VPS-Virtual Private Server), senti-me obrigado a procurar uma alternativa para colocar a minha aplicação online sem muitos custos.

Em jeito de fuga da despesa de pagar um VPS, pesquisei plataformas grátis para hospedagem de aplicativos na nuvem que me facilitassem também a integração da base de dados em MYSQL e identifiquei alguns como a OpenShift, Cloudbess e Heroku.

Com os dois primeiros não tive sucesso diferentemente do último(Heroku) uma plataforma que considerei simples na qual partilho agora a minha experiência.

Considerando que já temos a aplicação desenvolvida, os passos para hospedar a aplicação no Heroku seriam os seguintes:

1. Uma conta criada no Heroku;

2. Criar o projecto na plataforma, bem como podemos criar através da linha de comando depois da instalação do Heroku CLI(passo 3) digitando “heroku create nome_do_projecto”;

3. Instalar o Heroku CLI que podemo baixar aqui;

4. Aceder a plataforma pela linha de comandos e digitar “heroku login -i” e colocar os seus dados de acesso usados na criação da conta;

5. Instalar o heroku-deploy um plugin através do comando “heroku plugins:install heroku-cli-deploy”;

Até agora temos um ambiente capaz de hospedar a nossa aplicação caso ela não tenha conexão com a base de dados.

Caso tenha uma base de dados a plataforma oferece vários SGDB´s (Sistemas de Gerenciamentos de Banco de Dados). Para o meu caso que é o MYSQL usei o ClearBD que é um Banco de Dados altamente disponível como um serviço MYSQL que é executado na computação em nuvem bem como em outros ambientes.

No nosso projecto iremos adicionar o ClearDB em jeito de um plugin da seguinte maneira:

· Acedemos ao projecto via web e clicando na aba Resources (Recursos) temos acesso a opção Find more add-ons que clicando nos leva a uma página com muitos recursos, que para o nosso caso como queremos integrar um SGDB que suporte MYSQL escolhemos o ClearDB, este recurso oferece-nos 5MB de espaço grátis, o que é muito suficientes numa fase inicial do nosso projecto;

· Com o plugin adicionado, para uma conexão precisaríamos dos dados de acesso como a url, nome da base de dados, utilizador e senha, digitando: heroku config -a <nome_do_projecto>;

· Vai nos retornar algo como: CLEARDB_DATABASE_URL => mysql://[utilizador]:[senha]@[url_do_servidor]/[nome_da_base_de_dados]?reconnect=true donde podemos extrair dados para acedermos remotamente através do MySQLWorkbench ou um outro aplicativo;

· Para a configuração da conexão no Java com o Spring ao ClearDB aconselho a usar o BasicDataSource em vez de DataSource. Abaixo um exemplo de conexão usando o BasicDataSource:

@Bean

public BasicDataSource dataSourceL() throws URISyntaxException {

URI dbUri = new URI(System.getenv(“CLEARDB_DATABASE_URL”));

String utilizador= dbUri.getUserInfo().split(“:”)[0];

String senha= dbUri.getUserInfo().split(“:”)[1];

String dbUrl = “jdbc:mysql://” + dbUri.getHost() + dbUri.getPath();

BasicDataSource basicDataSource = new BasicDataSource();

basicDataSource.setUrl(dbUrl);

basicDataSource.setUsername(utilizador);

basicDataSource.setPassword(senha);

return basicDataSource;

}

6. Com a nossa configuração feita, podemos exportar o WAR e fazer um teste localmente que é do mesmo jeito que é executado no Heroku com o seguinte comando: heroku war:run <caminho_do_war> -a <nome_da_app>

7. Com testes feitos podemos carregar o WAR digitando: “heroku war:deploy <caminho_do_war> — app <nome_do_projecto_criado_na_plataforma>

8. E para abrir a aplicação no browser usamos o comando: heroku open -a nome_do_projecto

Desta forma, podemos colocar a nossa aplicação no ar, grátis. Em dias pouco dormidas, tive o suporte de um colega de profissão Dalton Harvey que me auxiliou bastante em conseguir colocar a minha primeira aplicação no Heroku, o meu Muito Khanimabo pelo suporte.

 

https://medium.com/@bbrgduave/como-hospedar-uma-aplicação-java-mysql-em-um-servidor-grátis-52546005e9b1