No artigo anterior mostramos como publicar um site com conteúdo estático diretamente no serviço Amazon S3. Nesse modelo você consegue criar dinamismo usando JavaScript e Flash. Mas e se você precisar de sites com conteúdo dinâmico e que acessam bancos de dados? Então você pode utilizar o Amazon EC2!
É possível começar de graça no primeiro ano do EC2 usando a oferta gratuita da AWS. Você que costuma usar provedores de hosting, que compartilham o servidor com centenas de usuários, pode ter seu próprio servidor virtual independente gratuitamente! E quando seu serviço for um sucesso você pode escalar a capacidade do seu sistema de forma simples usando servidores maiores ou utilizando mais servidores em um modelo de auto-escalabilidade.
O Amazon EC2 (Elastic Compute Cloud) fornece instâncias virtuais com imagens contendo Sistemas Operacionais tipo Linux ou Windows. Também conta com milhares de imagens de parceiros da Amazon com software pré-instalados e configurados.As instâncias virtuais possuem diversas configurações de memória e processamento para atender as mais diversas necessidades.
No Amazon EC2 você também pode anexar um volume de disco persistente que se assemelha a um disco rígido. O interessante desse disco é que ele não é eliminado quando sua instância termina e pode ser anexado a instâncias virtuais distintas. Esse disco recebe o nome de EBS (Elastic Block Store). Muitas imagens da Amazon já vem configuradas para iniciar um volume EBS automaticamente, para garantir a persistência de dados para o cliente.
Nesse artigo vamos mostrar uma das formas como você pode lançar em poucos minutos uma instância LAMP (Linux, Apache, MySQL e PHP) para executar suas aplicações PHP na Nuvem da Amazon! Usaremos a instância criada pelo nosso parceiro BitNami.
Faça o login na AWS Management Console e clique na aba amazon EC2:
Mude a opção do menu de regiões para a região onde prefere criar seu servidor:
Eu selecionei a região South America (São Paulo)! :
Clique no botão "Launch Instance", selecione a aba "Community AMIs", pesquise por "bitnami lamp" e clique em "Select":
Escolha quantas instâncias deseja lançar e de que tamanho. Você pode lançar dezenas ou centenas de instâncias em um único wizard! No caso lançaremos uma instância do tipo micro. Lembrando que, a partir da criação de sua conta, você pode utilizar uma instância micro sem custo durante um ano inteiro. Clique em "Continue":
Clique em "Continue" até chegar na tela de criação de sua chave privada. Faça o download de sua chave e guarde-a em um local seguro. Só com essa chave é possível acessar a instância:
Escolha um dos grupos de segurança que você possui e clique "Continue":
Confirme todos os dados que você selecionou e clique em "Launch":
Pronto! Em segundos ou poucos minutos você terá disponível sua instância LAMP no Amazon EC2!
Você precisa abrir as portas dos protocolos. Os "Security Groups" são a os firewalls da Amazon. Você inclusive pode abrir uma porta apenas para um endereço IP ou grupos de endereços IP específicos, para ter ainda mais segurança. Eu abri a porta 80 e a porta 22 para todos os IPs. Usando o endereço 0.0.0.0/0 você libera a porta para qualquer usuário da Internet:
Para testar se tudo já está funcionando corretamente, copie o link do "Public DNS" e coloque em um browser. A página inicial confirmando o funcionamento da instância LAMP será mostrada:
Note como em poucos minutos você terá um ambiente próprio, não compartilhado, para construir seus sites dinâmicos ou instalar seus softwares. E, quando for necessário, você pode escalar verticalmente ou horizontalmente as instâncias, inclusive de forma automática através das APIs e ferramentas de linha de comando da AWS.
Mais algumas dicas para configurar a sua instância. Para se conectar a ela leia essa página sobre como conectar a uma instância Linux na AWS a partir de uma máquina cliente Linux e como conectar a uma instância Linux na AWS a partir de uma máquina cliente Windows.
Nas instâncias BitNami é importante incluir um passo extra no Putty em "Auto-login username" no item "Connection - Data":
Aí você se conectará à instância Linux e poderá trabalhar nela:
Se quiser habilitar todos ou alguns dos frameworks PHP já instalados na instância como o symfony, codeigniter e cakephp entre no diretório "/opt/bitnami/apache2/conf" e edite o arquivo "httpd.conf" tirando os comentários nesses frameworks. Depois entre no diretório "/opt/bitnami" e execute o comando "./ctlscript.sh restart apache" para habilitá-los:
Acesse a página de boas vindas do cakephp ou do codeigniter para vê-las em seu browser:
Outra dica interessante, para finalizar, é que você pode usar o phpmyadmin para acessar a interface Web já pré-configurada do banco de dados MySQL. Esse acesso é protegido e precisa ser habilitado como um túnel. No Windows você pode fazer isso usando o próprio Putty e incluindo no menu "SSH - Tunnels" o "Source Port" número 8888 e "Destination" como 127.0.0.1:8080. Clique em "Add" para obter esse resultado:
Depois é só acessar o phpmyadmin a partir de um browser digitando o endereço "http://localhost:8888/phpmyadmin". O usuário e senha inicial é "root" e "bitnami":
Assim as ferramentas mais importantes de sua instância LAMP (Linux, Apache, MySQL, PHP) estarão facilmente em suas mãos. Não esqueçam de aproveitar a oferta gratuita de uma instância micro da AWS incluindo disco persistente EBS para colocar suas aplicações dinâmicas na Nuvem da Amazon Web Services!
Os artigos estão sendo bem esclarecedores! Parabéns desde já!
Gostaria de ter mais informações em como mensurar a capacidade de cada tipo de instância. Por exemplo, a instância do tipo micro aguentaria um blog simples em wordpress com ate qts visitações/mês?
Pergunto isso pq a Amazon utiliza diversas métricas que ainda não estamos acostumados a serem usadas para cobrança por aqui. Seria muito bacana um artigo sobre isso.
Posted by: Matheus | 01/04/2012 at 08:45 AM
Legal seu artigo , mais tenho um duvida sempre que crio uma instância preciso da chave privada pra acessar ssh ? por que se alguém conseguir roubar a minha chave terá acesso total no meu servidor ( ex. deixei o pen-drive com a chave no shopping , roubaram meu notebook,etc. )
qual a forma de contornar isto ?
Posted by: Piteer | 01/04/2012 at 09:38 AM
O ssh da Amazon a meu ver é até mais seguro do que uma senha, pois o ssh com chave privada não dá chance de um cracker atacar sua instância virtual com um ataque de força bruta de password. Outro ponto é que você pode dar acesso ssh apenas de um endereço IP específico via Security Group. Assim, mesmo com a chave um cracker não conseguirá acessar até que você crie uma nova chave. Lembrando que a sua chave é como se fosse uma senha e, portanto, precisa também de cuidados de segurança. você pode criptografar seu sistema de arquivos, por exemplo, para não ter problema de roubo do notebook ou pen drive. Você pode colocar em diretórios protegidos e etc :) .
Posted by: José Papo | 01/04/2012 at 11:02 AM
Olá Matheus,
Na página do EC2 ( http://aws.amazon.com/pt/ec2/ ) você consegue saber quanta memória e processamento cada instância possui. Assim, com essa informação você mesmo pode testar e realizar um planejamento de capacidade. Além disso a Amazon possui as interfaces de auto-escalabilidade, que permitem a você escalar seu site automaticamente criando novas instancias quando necessário.
Posted by: José Papo | 01/04/2012 at 11:06 AM
Tutorial Fantástico.
Simples e didático. Criei minha instância em questão de minutos seguindo seu tutorial.
Agora vou correr atrás para disponibilizar minha aplicação.
Grande Abç!
Posted by: Fabio Borges | 11/12/2012 at 11:48 AM