Como criar um blog WordPress na Amazon EC2 de graça por 1 ano!

Você que sempre quis ter seu blog num servidor dedicado próprio, agora vou te dar os passos para isso. Mas antes de tudo, para você fazer isso terá que ter um cartão de crédito internacional, ler alguma coisa em inglês e também alguma experiência com qualquer Linux (acesso SSH, inicializar processos, editor vim etc.). Vamos começar pegando uma instância de graça por 1 ano na Amazon Web Services de 613MB de RAM, 8GB de Storage e até 2GHz de processamento equivalente a um Xeon:

  1. Primeiro, entre em http://aws.amazon.com/ , vá até ‘Create an AWS account’ > ‘I am a new user’ e complete o form de registro da Amazon Web Services. No fim do registro, será necessário registrar um cartão de crédito internacional válido e não utilizado previamente.
  2. Após o cadastro completo, você será direcionado à tela de Console do AWS (AWS Management Console). Clique na aba EC2 e depois em ‘Getting Started’ ou ‘Launch Instance’ (Isso poderá demorar alguns minutos até que sua conta seja verificada).
  3. Na tela de ‘Request Instances Wizard’ , escolha as versões de Linux que tem do seu lado direito uma estrela. Eu escolhi a versão Basic 64-bit Amazon Linux. Este Linux tem um kernel da própria Amazon e é ela própria que o atualiza.
  4. No próximo passo (em ‘Instance Details’), deixe tudo como padrão.
  5. Em Create KeyPair tome cuidado. Você irá criar uma chave para entrar por SSH na sua máquina. Não perca esta chave criada de jeito nenhum, pois senão será bem trabalhoso recuperá-la. Então eu recomendo após criá-la, mande para seu e-mail como forma de backup. Escolha qualquer nome para sua chave e dê continue.
  6. Na tela de Firewall, crie um novo ‘Security Group’. Dê o nome a ele de wordpress e em ‘Inbound Rules’ você irá abrir as portas para os ips que você desejar. Então, você deve abrir a porta (Port Range) 80(HTTP) e 22(SSH) para o Source 0.0.0.0/0 . Nota: se você sabe como pegar o ip da sua máquina/rede, tente limitar a porta 22 para este IP por razões de segurança. Você poderá editar as regras de firewall mais tarde.
  7. Na tela de review veja se tudo está como planejado e dê um Launch. Demorará no máximo 1 minuto para sua nova instância Linux subir. Do lado esquerdo do Console, clique em ‘Instances’ e aguarde ela ficar pronta:
  8. Quando estiver com o Status ‘running’, clique na instância. Em ‘Instance Actions’ clique em ‘Connect’. Ali estará os passos para conectar através do SSH em qualquer Unix na sua nova instância. (Se você utilizar Windows, tente procurar pelo PuTTY para conexão e o PuTTYGen para criação de um .ppk a partir da sua KeyPair .pem)
  9. Após entrar na instância com sucesso, você deverá instalar alguns pacotes (programas) no seu linux para que o WordPress seja instalado. Darei os passos para instalar no webserver Nginx juntamente com o FCGI. Um banco de dados MySQL é requisito do WordPress, além dos seu módulo para php: 
    yum update && yum install nginx mysql-server spawn-fcgi php-mysql php-gd unzip vsftpd vim
    
  10. Instalado os pacotes, vamos configurar o MySQL com os comandos abaixo: (resetará a senha de root para a qual você escolher – Nota: se você está acostumado com configuração do MySQL, recomendo configurar um usuário diferente de root para rodar seu wordpress por questões de segurança)
    sudo /etc/init.d/mysqld stop
    sudo /etc/init.d/mysqld start --skip-grant-tables
    sudo mysql -u root
    mysql> use mysql; update user set password=PASSWORD('coloque_algum_password_aqui') where User='root'; flush privileges;
    mysql> create database wordpress; exit;
    sudo /etc/init.d/mysqld restart
    
  11. Para a configuração do nginx, recomendo entrar neste blog http://elasticdog.com/2008/02/howto-install-wordpress-on-nginx/ onde está muito bem explicado a configuração do webserver e inclusive da onde peguei algumas dicas. Vou só deixar minhas dicas: não é preciso instalar novamente o spawn-fcgi já que fizemos isso no passo 9. Verifique também que no arquivo /etc/nginx/nginx.conf existirá uma cvar chamada user, que é com qual usuário o nginx vai rodar. Eu deixei a minha como:
     user   wordpress wordpress

    Mas preste atenção que quando for descompactar os arquivos do wordpress nos próximos passos, estes arquivos e pastas terão que ter permissão de acesso para este usuário escolhido. (Se quiser deixar como padrão, terá que mudar as permissões como o comando chmod mais tarde)

  12. Agora vamos baixar o WordPress (em pt-br. A versão que fiz esse tutorial era a 3.2, mas veja o link da última versão no site deles e mude aqui embaixo), configurar o usuário para rodá-lo e configurar o que precisamos para ele. Qualquer dúvida, acompanhe o tutorial de instalação do próprio WP: 
    sudo adduser wordpress
    sudo mkdir /home/wordpress/public_html/
    sudo su && cd /home/wordpress/public_html/
    wget http://br.wordpress.org/wordpress-3.2-pt_BR.zip
    unzip wordpress-3.2-pt_BR.zip
    cd wordpress
    cp wp-config-sample.php wp-config.php
    chmod -R 755 /home/wordpress/public_html/
    vim wp-config.php
    
  13. Note que o último comando abre o editor arquivo wp-config.php no editor vim. Utilize o editor que preferir. Coloque neste arquivo os dados do seu banco de dados criado no passo 10 como exemplo abaixo: 
    define('DB_NAME', 'wordpress');
    define('DB_USER', 'root');
    define('DB_PASSWORD', 'senha_que_voce_escolheu_no_passo_10');
    
  14. Após salvar o arquivo, reinicie o nginx:
    sudo /etc/init.d/nginx restart
    
  15. Volte para o Console da Amazon, clique na sua instância e abaixo aparecerá todas as informações dela. Pegue o Public DNS e comece a instalação do WP na url http://PublicDNS/wp-admin/install.php.
  16. Pronto! Agora acesse http://PublicDNS/ que seu blog estará no ar. A URL para administração é http://PublicDNS/wp-admin/
  17. Você vai notar que para que algumas funcionalidades funcionem, como instalar plugins através da interface de administração, será necessário configurar um servidor FTP. Ele foi instalado no passo 9, que é o vsftpd. Para configurar, descomente as linhas do arquivo /etc/vsftpd/vsftpd.conf e depois reinicie o vsftpd (sudo /etc/init.d/vsftpd restart):
    # Uncomment this to enable any form of FTP write command.
    write_enable=YES
    #
    # Default umask for local users is 077. You may wish to change this to 022,
    # if your users expect that (022 is used by most other ftpd's)
    local_umask=022
    
  18. Pronto, agora para acessar seu site por FTP, o usuário é wordpress e a senha é aquela que você escolheu no passo 12 (no comando sudo adduser wordpress). Note que se você desejar acessar o FTP de seu computador ou local externo, você precisará ir no Console da Amazon em ‘Security Groups’ > wordpress > ‘Inbound’ e abrir a porta 21.
Qualquer dúvida ou problema encontrado é só comentar aqui que eu tento te ajudar. Também recomendo o programa monit para ajudar a monitorar seu servidor e não deixar morrer os processos do Linux (tive alguns problemas com o spawn-fcgi e consegui resolver com ele).
Também recomendo instalar o Google Analytics para acompanhar um relatório bem completo de visitantes do seu site :)
Pra quem sacou também, você não necessariamente pode usar essa instância para instalar apenas o WordPress. Use como bem entender :)
This entry was posted in Tutorial and tagged , , , , . Bookmark the permalink.

21 Responses to Como criar um blog WordPress na Amazon EC2 de graça por 1 ano!

  1. Gabriel says:

    Ótimo!
    Mas e quando acaba o primeiro ano gratuito, paga quanto para manter?
    Procurei na pagina da Amazon, mas é muito confuso.

    • Gabriel Pugliese says:

      Tabela de preços completa: http://aws.amazon.com/ec2/pricing/
      Aqui tem uma calculadora mensal: http://calculator.s3.amazonaws.com/calc5.html
      Tipo de máquinas que eles oferecem: http://aws.amazon.com/ec2/instance-types/

      Esta máquina micro (como eles chamam) custa 0.02 doláres por hora, fora transferência de dados e storage.
      Como os serviços de cloud computing são “modularizados” devido à estrutura de Cloud Computing, eles são cobrados separadamente.
      O que chamo de serviços: storage, transferência de dados(ter um IPv4 é cobrado tb) e processamento.
      E o conceito de elasticidade se aplica pra praticamente tudo, ou seja, você pode colocar e tirar da instância quantos HDs eu quiser e a hora que vc quiser. Eu posso parar uma instância (por exemplo, não estou usando ela e não quero ser cobrado.) e ligar ela de novo depois, sem perder nada.

      • Thomás says:

        Fala Gabriel! Legal o post. Na calculadora de preço, o que significa o “Usage” em horas? Seria o tempo que meu servidor ficaria disponível? Neste caso, um blog que fica 24/7 no ar devo calcular: 24 * 31 ? 744 horas disponível em um mês de 30 dias?

        • Gabriel Pugliese says:

          Fala Thomás,

          O Usage significa quantas horas sua instância está no status ‘rodando’. Então, vamos supor que temos 30 dias no mês, fazemos 30×24=720 horas, assim como você falou!
          Abraço

  2. Gustavo says:

    Muito bom post…E quanto a manutanção do Banco de dados, como é feita ?

  3. Calebe Aires says:

    Mas ter um blog em um cloud da amazon equivale a um VPS ou a um DEDICADO!?

  4. Carlos says:

    Primeiro, parabéns pelo tutorial!

    Segundo: Você poderia ser um pouco mais específico ao configurar o nginx? Fiquei perdido nessa parte!

  5. Rodolfo says:

    Fiz toda a configuração quebrando a cabeça e a url não é encontrada – http://ec2-54-232-122-10.sa-east-1.compute.amazonaws.com/wp-admin/install.php

    Onde eu faço essas configurações? https://gist.github.com/3210236

  6. Olá Gabriel! Muito bom o post, super detalhado!

    Uma dúvida que tenho sobre a configuração de um servidor deste tipo é como fazer as atualizações do SO e pacotes instalados? Uma vez que eu criei um servidor destes, se eu simplesmente deixar sem atualizar, o risco de sofrer ataques deve aumentar. Como você está fazendo para atualizar os aplicativos instalados?

    Valeu!

    • Gabriel Pugliese says:

      Olá Rafael,

      Muito obrigado :)
      Como diz neste FAQ, sempre aparecerá no seu login quando tiver updates disponíveis da Amazon. Então você pode rodar o comando yum update ou yum upgrade para atualizar os pacotes obsoletos.
      Abraços

  7. Alan says:

    Bom dia, segui seu tutorial, está rodando tudo perfeito, mas estou sendo cobrando alguns centavos por dia, nao estorei cota nada, deixei tudo padrão , só instalou o linux, nem configurei nada , saberia me dizer o porque da cobrança ?

    nao deveria ser free o serviço por 1 ano ?

  8. Luiz GUstavo says:

    Oi Gabriel, preciso de uma ajuda com as minhas instalações… Pode me mandar seu e-mail ou telefone para que possa contratá-lo para resolver meu problema?

    Muito obrigado,
    Abraços
    Luiz
    luizgustavo.sales@gmail.com
    skype: luizgustavo.sales

    • Gabriel Pugliese says:

      Olá Luiz,

      Esse post provavelmente deve estar desatualizado. A Amazon já mudou bastante a AWS e a imagem do Linux que eu postei aqui. Vou fazer um re-post sobre isto, atualizado.
      Se quiser, talvez seja melhor você perguntar por aqui mesmo que aí nós compartilhamos as suas dúvidas com outras pessoas que também podem ter elas :)

      Abraços

  9. Christian says:

    Muito bom o post, o Elastic IP também é pago?

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>