2007 20/01
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:
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: "
" 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: "
" 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: "
" 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.
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