Ruby on Rails na Dreamhost

Certamente você já conhece ou ouvir falar da Dreamhost. Este é um dos melhores lugares para hospedar seu site, sem sombra de dúvidas.

Em termos de números, você tem aproximadamente 200 GB de espaço em disco, aproximadamente 2 TB de transferência mensal, tudo isso em servidores de alta disponibilidade. Suporte a PHP, mySQL, mod_rewrite do Apache e muito mais!

Encerrando a propaganda, o mais importante de tudo é que é possível rodar aplicações feitas em Ruby on Rails! Se depois de ler este post, você resolver fazer sua assinatura, use o código promocional "KLAUSPAIVA" e obtenha um desconto de $50! Veja mais sobre os planos de hospedagem aqui.

Antes de começar

Antes de continuar, quero salientar que este post é baseado na página sobre Rails do Wiki da Dreamhost.

Não se trata de uma tradução direta. Basicamente é um resumo funcional e comentado. =)

Nota: todos os comandos devem ser digitados sem as aspas...

Desenvolvendo sua aplicação

Você pode desenvolver sua aplicação naturalmente na sua máquina, usando o tradicional WEBrick ou o que achar melhor. Com a aplicação pronta (pelo menos para testes) é hora de fazer a criação do domínio e o upload de seus arquivos.

Criando seu (sub)domínio

Para esta explicação, estou supondo que você está criando sua aplicação para funcionar diretamente abaixo de um domínio (ou subdomínio) qualquer.

Vá até a tela de criação de domínios e faça as seguintes configurações:

  • Marque a opção FastCGI Support? (marcada em vermelho na imagem abaixo --clique para ampliar);
  • Em Web Directory adicione um /public ao final do caminho. Exemplo:
    /home/seuusuario/seudominio.com/public

As demais opções você pode configurar como achar melhor. Veja uma imagem de exemplo:



Exemplo de configuração de um domínio para trabalhar com Rails na Dreamhost

Login via SSH

Para criar sua aplicação você precisará fazer login via SSH na Dreamhost.

Se você usa um sistema operacional Unix-like, ótimo! Basta executar o seguinte comando em uma janela do terminal:

ssh seuusuario@seudominio.com

Em seguida, você receberá o pedido da sua senha. Basta fornecê-la e pronto, você está dentro! =)

Estou no Windows, e agora?

Se você está no Windows, pode ficar tranquilo, você não está perdido. Pelo menos não no quesito login via SSH. ;P

Basta fazer o download do PuTTy. Baixe o primeiro arquivo da lista, o executável.

Quando terminar de baixar e abrir ele, você vai ver uma tela onde você pode inserir alguns dados. Basta preencher da seguinte forma:

  • Em Host Name, preencha com o nome do seu domínio;
  • Selecione SSH dentre as opções de Protocol;
  • A porta é 22, ela já deve estar configurada assim.

Agora é só clicar em Open. Preencha seu usuário e senha quando for pedido e pronto. Agora você também tem um terminal para ser usado no Windows. =)

Não consigo fazer o login

Mesmo você digitando seus dados corretamente, pode ser que você ainda assim não consiga fazer o login.

Se isto acontecer com você, seu usuário provavelmente não está configurado para fazer conexões via SSH. Ajustar isso é bem simples.

Vá até a área de gerenciamento de usuários do painel administrativo da Dreamhost e selecione seu usuário para editá-lo.

Agora é só deixar marcada a opção Enable ssh/telnet? e salvar as alterações. A alteração pode levar alguns minutos para ser efetivada.

Criando sua aplicação

Se você seguiu as instruções até aqui, seu domínio estará configurado no seguinte caminho:

/home/seuusuario/seudominio.com/public

Vamos acessá-lo e criar nossa aplicação Rails. Na tela do terminal, execute o seguinte comando:

cd

Não se esqueça de pressionar Enter após digitar o comando. Só a título didático, o comando anterior acessa a pasta particular (sua home) do seu usuário.

Agora vamos criar a aplicação tradicional de Rails:

rails seudominio.com

O nome da aplicação tem de ser exatamente o mesmo nome do domínio que você criou anteriormente.

Pronto, a aplicação está criada. Agora vamos fazer algumas configurações necessárias para o correto funcionamento na Dreamhost.

Configurando o .htaccess

Atenção: as instruções a seguir requerem um conhecimento mínimo sobre edição de arquivos remotamente. Se esta é a sua primeira vez (hehe), leia todas as instruções antes de começar.

Vamos acessar a pasta public da sua aplicação. Use os seguintes comandos:

cd
cd seudominio.com/public

Agora vamos editar um arquivo diretamente pela linha de comando. É simples, basta prestar atenção.

Nota: meu objetivo aqui está longe de explicar como o VIM trabalha e/ou funciona. Apenas vou passar a sequência mínima necessária para você concluir a tarefa.

Vamos editar o arquivo ".htaccess" no VIM:

vim .htaccess

O VIM será carregado com o arquivo pronto para edição. Vamos editá-lo! Siga as instruções abaixo com atenção:

  • Desça até a linha 32 do arquivo (a indicação da linha atual aparece no canto inferior direito do editor);
  • Perto do final da linha mencionada você vai ver o texto "dispatch.cgi". Posicione o cursor exatamente sobre a segunda letra "c";
  • Pressione a tecla "i" do seu teclado. Isso ativa o modo de inserção de textos no VIM;
  • Agora pressione a tecla "f" e veja que o caracter "f" aparecerá antes do "c". O texto ficará assim: "dispatch.fcgi";
  • Estando tudo certo, pressione Esc duas vezes (a segunda é só pra garantir) e digite: " :x " e confirme com Enter;
  • O arquivo será salvo, fechado e você voltará à linha de comando.

Se algo sair fora do esperado durante a edição de algum arquivo, faça o seguinte:

  • Pressione Esc ao menos uma três vezes;
  • Digite ":q!" e pressione Enter;
  • Você sairá da edição do arquivo sem salvar qualquer alteração.

Configurando o dispatch.fcgi

Agora vamos configurar o arquivo "dispatch.fcgi". Desta vez vou facilitar sua vida. =)

Execute os seguintes comandos, na ordem, e pronto:

cd
cd seudominio.com/public
mv dispatch.fcgi dispatch.fcgi.default
wget http://downloads.klaus.pro.br/dispatch.fcgi

O que foi feito acima, de forma resumida: movemos o arquivo original "dispatch.fcgi" para "dispatch.fcgi.original" e em seguida baixamos uma nova versão, com o nome do arquivo original, para seu lugar.

Update @ 11/07/2007 : Agora que você baixou o arquivo e moveu o original, você precisa acertar as permissões de execução deste novo arquivo. É simples:

chmod 0755 dispatch.fcgi

Configurando o environment.rb

Abrindo o arquivo para edição:

cd
cd seudominio.com/config
vim environment.rb

Com o arquivo aberto, execute os seguintes passos:

  • Desça até a linha 5;
  • Deixe o cursor sobre o primeiro caracter, "#", e pressione a tecla "x";
  • Pressione Esc duas vezes (a segunda é só pra garantir) e digite: " :x " e confirme com Enter;

Pronto, configuramos o Rails para trabalhar no ambiente de produção. (algo deu errado?)

Ajustando permissões para os arquivos de log

Uma sequência de comandos resolve:

cd
cd seudominio.com
chmod -R u+rwX,go-w public log

Configurando o banco de dados

Estamos quase lá! =) Vamos agora configurar o nosso arquivo com as informações sobre o banco de dados. Primeiro vamos abrí-lo:

cd
cd seudominio.com/config
vim database.yml

Com o arquivo aberto, pressione "i" para entrar no modo de edição. Os comandos, agora, são praticamente os mesmos de um editor de textos comum. Modifique os valores que precisar e quando terminar, pressione Esc duas vezes (a segunda é só pra garantir) e digite: " :x " e confirme com Enter. (algo deu errado?)

Sua aplicação em Rails já deve estar funcional neste momento! Acesse seu domínio e veja a tela de boas-vindas do Rails.

Subindo os arquivos

Finalmente é a hora de fazer o upload de seus arquivos. Você provavelmente irá querer subir os seguintes arquivos:

  • A pasta app inteira;
  • As pastas images, javascripts e stylesheets;
  • O arquivo config/routes.rb.

O mais importante é você não sobreescrever os arquivos que editamos há pouco.

Talvez você queira remover o (ou subir a sua versão do) arquivo public/index.html.

Mantendo sua aplicação viva e ativa

Se sua aplicação não possui acessos constantes, o gerenciador de recursos da Dreamhost pode derrubar sua aplicação por inatividade. Uma forma simples de contornar isso é adicionar uma tarefa que fica sendo executada de tempos em tempos e mantém sua aplicação ativa.

Uma cron job resolve nosso problema. Vamos adicionar uma! Siga os passos:

  • Faça o login via SSH na Dreamhost, caso ainda não tenha feito;
  • Execute o comando: "crontab -e" para abrir o arquivo de tarefas do seu usuário para edição;
  • Vá até a última e pressione "o";
  • Adicione a seguinte linha (eu quebrei em duas linhas para facilitar a visualização, digite tudo direto, sem forçar uma quebra de linha):

0,5,10,15,20,25,30,35,40,45,50,55 * * * *
curl -s "http://seudominio.com/?`date +%s`"

Preste atenção e use o comando exatamente como mostrado acima. (algo deu errado?)

O segredo do truque acima está no final, aonde usamos a data atual para gerar um número diferente a cada requisição.

Como a URL é sempre diferente não há cache, o que vai manter sua aplicação sempre ativa.

Se você quiser, você poderá usar uma URL especial ali. Uma página simples que se mostre a data e hora, por exemplo.

A solução original.

Resumindo

A Dreamhost é uma excelente empresa de hospedagem. Com uma série de vantagens agressivas, é certamente uma excelente opção para muitos desenvolvedores.

Configurar o Rails é uma tarefa que exige alguns truques. Eu levei algum tempo para entender e aplicar a dica final, de forma a manter a minha aplicação viva.

Agora, com a adição deste pequeno truque, tudo fica muito bom, simples e funcional! =)

Referências
Dreamhost - Use o código "KLAUSPAIVA" e obtenha um desconto de $50
Ruby on Rails
mod_rewrite do Apache
Instalando o Rails segundo o wiki da Dreamhost
SSH
PuTTY (SSH pelo Windows)
Cron jobs
Cron job para manter viva a aplicação
Conheça melhor o VIM

comentários (1)