<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Klaus Paiva &#187; dispatch.fcgi</title>
	<atom:link href="http://blog.klaus.pro.br/tags/dispatchfcgi/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.klaus.pro.br</link>
	<description>Idéias e desventuras de Klaus Paiva</description>
	<lastBuildDate>Wed, 08 Sep 2010 19:15:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Ruby on Rails na Dreamhost</title>
		<link>http://blog.klaus.pro.br/2007/ler/ruby-on-rails-na-dreamhost/index.html</link>
		<comments>http://blog.klaus.pro.br/2007/ler/ruby-on-rails-na-dreamhost/index.html#comments</comments>
		<pubDate>Sat, 20 Jan 2007 17:04:02 +0000</pubDate>
		<dc:creator>Klaus Paiva</dc:creator>
				<category><![CDATA[Textos]]></category>
		<category><![CDATA[dispatch.fcgi]]></category>
		<category><![CDATA[Dreamhost]]></category>
		<category><![CDATA[Hospedagem]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[WEBrick]]></category>

		<guid isPermaLink="false">http://wp.blog.klaus.pro.br/2007/ler/ruby-on-rails-na-dreamhost/index.html</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>Certamente você já conhece ou ouvir falar da <a href="http://www.dreamhost.com/r.cgi?178238">Dreamhost</a>. Este é um dos melhores lugares para hospedar seu site, sem sombra de dúvidas.</p>
<p>Em termos de números, você tem aproximadamente <strong>200 GB de espaço em disco</strong>, aproximadamente <strong>2 TB de transferência mensal</strong>, tudo isso em servidores de alta disponibilidade. Suporte a <a href="http://www.php.net/">PHP</a>, <a href="http://www.mysql.com/">mySQL</a>, <a href="http://wiki.dreamhost.com/index.php/Mod_rewrite">mod_rewrite</a> do <a href="http://httpd.apache.org">Apache</a> e muito mais!</p>
<p>Encerrando a propaganda, o mais importante de tudo é que é possível rodar aplicações feitas em <a href="http://www.rubyonrails.org/">Ruby on Rails</a>! Se depois de ler este post, você resolver fazer sua assinatura, use o código promocional &#8220;<strong>KLAUSPAIVA</strong>&#8221; e obtenha um <strong>desconto de $50</strong>! <a href="http://www.dreamhost.com/r.cgi?178238/hosting.html|KLAUSPAIVA">Veja mais sobre os planos de hospedagem aqui</a>.</p>
<h3 id="consideracoes" class="subtitles">Antes de começar</h3>
<p>Antes de continuar, quero salientar que este post é baseado na <a href="http://wiki.dreamhost.com/index.php/Ruby_on_Rails">página sobre Rails</a> do <a href="http://wiki.dreamhost.com">Wiki da Dreamhost</a>.</p>
<p>Não se trata de uma tradução direta. Basicamente é um resumo funcional e comentado. =)</p>
<p><strong>Nota:</strong> todos os comandos devem ser digitados sem as aspas&#8230;</p>
<h3 id="sua-aplicacao" class="subtitles">Desenvolvendo sua aplicação</h3>
<p>Você pode desenvolver sua aplicação naturalmente na sua máquina, usando o tradicional <a href="http://www.webrick.org/">WEBrick</a> 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 <em>upload</em> de seus arquivos.</p>
<h3 id="dominio" class="subtitles">Criando seu (sub)domínio</h3>
<p>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.</p>
<p>Vá até a tela de criação de domínios e faça as seguintes configurações:</p>
<ul class="lists">
<li> Marque a opção <strong><em>FastCGI Support?</em></strong> (marcada em vermelho na imagem abaixo &#8211;clique para ampliar);</li>
<li> Em <strong><em>Web Directory</em></strong> adicione um <var>/public</var> ao final do caminho. Exemplo:<br />
/home/seuusuario/seudominio.com<strong>/public</strong></li>
</ul>
<p>As demais opções você pode configurar como achar melhor. Veja uma imagem de exemplo:</p>
<dl class="images">
<dt> <a href="http://blog.i.klaus.pro.br/configure-domain-new.png"><br />
<img src="http://blog.i.klaus.pro.br/configure-domain-new-thumb.jpg" alt="" /><br />
</a> </dt>
<dd> Exemplo de configuração de um domínio para trabalhar com Rails na Dreamhost </dd>
</dl>
<h3 id="login-via-ssh" class="subtitles">Login via SSH</h3>
<p>Para criar sua aplicação você precisará fazer login via <a href="http://en.wikipedia.org/wiki/SSH">SSH</a> na Dreamhost.</p>
<p>Se você usa um sistema operacional <a href="http://en.wikipedia.org/wiki/Unix-like">Unix-like</a>, ótimo! Basta executar o seguinte comando em uma janela do terminal:</p>
<p><code>ssh seuusuario@seudominio.com</code></p>
<p>Em seguida, você receberá o pedido da sua senha. Basta fornecê-la e pronto, você está dentro! =)</p>
<h3 id="ssh-no-windows" class="subtitles">Estou no Windows, e agora?</h3>
<p>Se você está no Windows, pode ficar tranquilo, você não está perdido. Pelo menos não no quesito <em>login via SSH</em>. ;P</p>
<p>Basta fazer o <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html">download do PuTTy</a>. Baixe o primeiro arquivo da lista, o executável.</p>
<p>Quando terminar de baixar e abrir ele, você vai ver uma tela onde você pode inserir alguns dados. Basta preencher da seguinte forma:</p>
<ul class="lists">
<li> Em <strong><em>Host Name</em></strong>, preencha com o nome do seu domínio;</li>
<li> Selecione <strong>SSH</strong> dentre as opções de <strong><em>Protocol</em></strong>;</li>
<li> A porta é 22, ela já deve estar configurada assim.</li>
</ul>
<p>Agora é só clicar em <strong><em>Open</em></strong>. Preencha seu usuário e senha quando for pedido e pronto. Agora você também tem um terminal para ser usado no Windows. =)</p>
<h3 id="usuario-ssh" class="subtitles">Não consigo fazer o login</h3>
<p>Mesmo você digitando seus dados corretamente, pode ser que você ainda assim não consiga fazer o <em>login</em>.</p>
<p>Se isto acontecer com você, seu usuário provavelmente não está configurado para fazer conexões via SSH. Ajustar isso é bem simples.</p>
<p>Vá até a área de gerenciamento de usuários do <a href="https://panel.dreamhost.com/">painel administrativo da Dreamhost</a> e selecione seu usuário para editá-lo.</p>
<p>Agora é só deixar marcada a opção <strong><em>Enable ssh/telnet?</em></strong> e salvar as alterações. A alteração pode levar alguns minutos para ser efetivada.</p>
<h3 id="criar-aplicacao" class="subtitles">Criando sua aplicação</h3>
<p>Se você seguiu as instruções até aqui, seu domínio estará configurado no seguinte caminho:</p>
<p><code>/home/seuusuario/seudominio.com/public</code></p>
<p>Vamos acessá-lo e criar nossa aplicação Rails. Na tela do terminal, execute o seguinte comando:</p>
<p><code>cd</code></p>
<p>Não se esqueça de pressionar <em>Enter</em> após digitar o comando. Só a título didático, o comando anterior acessa a pasta particular (sua <em>home</em>) do seu usuário.</p>
<p>Agora vamos criar a aplicação tradicional de Rails:</p>
<p><code>rails seudominio.com</code></p>
<p>O nome da aplicação tem de ser <strong>exatamente</strong> o mesmo nome do domínio que você criou anteriormente.</p>
<p>Pronto, a aplicação está criada. Agora vamos fazer algumas configurações necessárias para o correto funcionamento na Dreamhost.</p>
<h3 id="htaccess" class="subtitles">Configurando o .htaccess</h3>
<p><strong>Atenção:</strong> as instruções a seguir requerem um conhecimento mínimo sobre edição de arquivos remotamente. Se esta é a sua primeira vez (hehe), leia <strong>todas</strong> as instruções antes de começar.</p>
<p>Vamos acessar a pasta <em>public</em> da sua aplicação. Use os seguintes comandos:</p>
<p><code>cd<br />
cd seudominio.com/public</code></p>
<p>Agora vamos editar um arquivo diretamente pela linha de comando. É simples, basta prestar atenção.</p>
<p><strong>Nota:</strong> meu objetivo aqui está longe de explicar como o <a href="http://www.vim.org/">VIM</a> trabalha e/ou funciona. Apenas vou passar a sequência mínima necessária para você concluir a tarefa.</p>
<p>Vamos editar o arquivo &#8220;<em>.htaccess</em>&#8221; no VIM:</p>
<p><code>vim .htaccess</code></p>
<p>O VIM será carregado com o arquivo pronto para edição. Vamos editá-lo! Siga as instruções abaixo com atenção:</p>
<ul class="lists">
<li> Desça até a linha 32 do arquivo (a indicação da linha atual aparece no canto inferior direito do editor);</li>
<li> Perto do final da linha mencionada você vai ver o texto &#8220;<strong>dispatch.cgi</strong>&#8220;. Posicione o cursor exatamente sobre a segunda letra &#8220;<strong>c</strong>&#8220;;</li>
<li> Pressione a tecla &#8220;<strong>i</strong>&#8221; do seu teclado. Isso ativa o modo de inserção de textos no VIM;</li>
<li> Agora pressione a tecla &#8220;<strong>f</strong>&#8221; e veja que o caracter &#8220;f&#8221; aparecerá antes do &#8220;c&#8221;. O texto ficará assim: &#8220;dispatch.<strong>f</strong>cgi&#8221;;</li>
<li> Estando tudo certo, pressione <em>Esc</em> duas vezes (a segunda é só pra garantir) e digite: &#8220;<strong> <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_mad.gif' alt=':x' class='wp-smiley' /> </strong>&#8221; e confirme com <em>Enter</em>;</li>
<li> O arquivo será salvo, fechado e você voltará à linha de comando.</li>
</ul>
<p id="saindo-do-vim-sem-salvar">Se algo sair fora do esperado durante a edição de algum arquivo, faça o seguinte:</p>
<ul class="lists">
<li> Pressione <em>Esc</em> ao menos uma três vezes;</li>
<li> Digite &#8220;<strong>:q!</strong>&#8221; e pressione <em>Enter</em>;</li>
<li> Você sairá da edição do arquivo sem salvar qualquer alteração.</li>
</ul>
<h3 id="dispatch" class="subtitles">Configurando o dispatch.fcgi</h3>
<p>Agora vamos configurar o arquivo &#8220;<em>dispatch.fcgi</em>&#8220;. Desta vez vou facilitar sua vida. =)</p>
<p>Execute os seguintes comandos, na ordem, e pronto:</p>
<p><code>cd<br />
cd seudominio.com/public<br />
mv dispatch.fcgi dispatch.fcgi.default<br />
wget http://downloads.klaus.pro.br/dispatch.fcgi</code></p>
<p>O que foi feito acima, de forma resumida: movemos o arquivo original &#8220;<em>dispatch.fcgi</em>&#8221; para &#8220;<em>dispatch.fcgi.original</em>&#8221; e em seguida baixamos uma nova versão, com o nome do arquivo original, para seu lugar.</p>
<p><strong id="update-20070711">Update @ 11/07/2007</strong> : Agora que você baixou o arquivo e moveu o original, você precisa acertar as permissões de execução deste novo arquivo. É simples:</p>
<p><code>chmod 0755 dispatch.fcgi</code></p>
<h3 id="environment" class="subtitles">Configurando o environment.rb</h3>
<p>Abrindo o arquivo para edição:</p>
<p><code>cd<br />
cd seudominio.com/config<br />
vim environment.rb</code></p>
<p>Com o arquivo aberto, execute os seguintes passos:</p>
<ul class="lists">
<li> Desça até a linha 5;</li>
<li> Deixe o cursor sobre o primeiro caracter, &#8220;#&#8221;, e pressione a tecla &#8220;<strong>x</strong>&#8220;;</li>
<li> Pressione <em>Esc</em> duas vezes (a segunda é só pra garantir) e digite: &#8220;<strong> <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_mad.gif' alt=':x' class='wp-smiley' /> </strong>&#8221; e confirme com <em>Enter</em>;</li>
</ul>
<p>Pronto, configuramos o Rails para trabalhar no ambiente de produção. (<a href="#saindo-do-vim-sem-salvar">algo deu errado?</a>)</p>
<h3 id="permissoes" class="subtitles">Ajustando permissões para os arquivos de log</h3>
<p>Uma sequência de comandos resolve:</p>
<p><code>cd<br />
cd seudominio.com<br />
chmod -R u+rwX,go-w public log</code></p>
<h3 id="banco-de-dados" class="subtitles">Configurando o banco de dados</h3>
<p>Estamos quase lá! =) Vamos agora configurar o nosso arquivo com as informações sobre o banco de dados. Primeiro vamos abrí-lo:</p>
<p><code>cd<br />
cd seudominio.com/config<br />
vim database.yml</code></p>
<p>Com o arquivo aberto, pressione &#8220;<strong>i</strong>&#8221; 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 <em>Esc</em> duas vezes (a segunda é só pra garantir) e digite: &#8220;<strong> <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_mad.gif' alt=':x' class='wp-smiley' /> </strong>&#8221; e confirme com <em>Enter</em>. (<a href="#saindo-do-vim-sem-salvar">algo deu errado?</a>)</p>
<p>Sua aplicação em Rails já deve estar funcional neste momento! Acesse seu domínio e veja a tela de boas-vindas do Rails.</p>
<h3 id="upload" class="subtitles">Subindo os arquivos</h3>
<p>Finalmente é a hora de fazer o <em>upload</em> de seus arquivos. Você provavelmente irá querer subir os seguintes arquivos:</p>
<ul class="lists">
<li> A pasta <em>app</em> inteira;</li>
<li> As pastas <em>images</em>, <em>javascripts</em> e <em>stylesheets</em>;</li>
<li> O arquivo <em>config/routes.rb</em>.</li>
</ul>
<p>O mais importante é você não sobreescrever os arquivos que editamos há pouco.</p>
<p>Talvez você queira remover o (ou subir a sua versão do) arquivo <em>public/index.html</em>.</p>
<h3 id="rails-application-error" class="subtitles">Mantendo sua aplicação viva e ativa</h3>
<p>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.</p>
<p>Uma <a href="http://en.wikipedia.org/wiki/Cron"><em>cron job</em></a> resolve nosso problema. Vamos adicionar uma! Siga os passos:</p>
<ul class="lists">
<li> Faça o <a href="#login-via-ssh">login via SSH</a> na Dreamhost, caso ainda não tenha feito;</li>
<li> Execute o comando: &#8220;crontab -e&#8221; para abrir o arquivo de tarefas do seu usuário para edição;</li>
<li> Vá até a última e pressione &#8220;<strong>o</strong>&#8220;;</li>
<li> Adicione a seguinte linha (eu quebrei em duas linhas para facilitar a visualização, digite tudo direto, sem forçar uma quebra de linha):</li>
</ul>
<p><code>0,5,10,15,20,25,30,35,40,45,50,55 * * * *<br />
curl -s "http://seudominio.com/?`date +%s`"</code></p>
<p>Preste atenção e use o comando <strong>exatamente</strong> como mostrado acima. (<a href="#saindo-do-vim-sem-salvar">algo deu errado?</a>)</p>
<p>O segredo do truque acima está no final, aonde usamos a data atual para gerar um número diferente a cada requisição.</p>
<p>Como a URL é sempre diferente não há <em>cache</em>, o que vai manter sua aplicação sempre ativa.</p>
<p>Se você quiser, você poderá usar uma URL especial ali. Uma página simples que se mostre a data e hora, por exemplo.</p>
<p>A <a href="http://wiki.dreamhost.com/index.php/Ruby_on_Rails#cron-keep-alive">solução original</a>.</p>
<h3 id="resumindo" class="subtitles">Resumindo</h3>
<p>A Dreamhost é uma excelente empresa de hospedagem. Com uma série de vantagens agressivas, é certamente uma excelente opção para muitos desenvolvedores.</p>
<p>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.</p>
<p>Agora, com a adição deste pequeno truque, tudo fica muito bom, simples e funcional! =)</p>
<dl id="refencias" class="references">
<dt>Referências</dt>
<dd> <a href="http://www.dreamhost.com/r.cgi?178238/hosting.html|KLAUSPAIVA">Dreamhost</a> &#8211; Use o código &#8220;<strong>KLAUSPAIVA</strong>&#8221; e obtenha um <strong>desconto de $50</strong> </dd>
<dd> <a href="http://www.rubyonrails.org/">Ruby on Rails</a> </dd>
<dd> <a href="http://wiki.dreamhost.com/index.php/Mod_rewrite">mod_rewrite do Apache</a> </dd>
<dd> <a href="http://wiki.dreamhost.com/index.php/Ruby_on_Rails">Instalando o Rails segundo o wiki da Dreamhost</a> </dd>
<dd> <a href="http://en.wikipedia.org/wiki/SSH">SSH</a> </dd>
<dd> <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html">PuTTY (SSH pelo Windows)</a> </dd>
<dd> <a href="http://en.wikipedia.org/wiki/Cron">Cron jobs</a> </dd>
<dd> <a href="http://wiki.dreamhost.com/index.php/Ruby_on_Rails#cron-keep-alive">Cron job para manter viva a aplicação</a> </dd>
<dd> <a href="http://www.apmaths.uwo.ca/~xli/vim/quickstart.html">Conheça melhor o VIM</a> </dd>
</dl>
]]></content:encoded>
			<wfw:commentRss>http://blog.klaus.pro.br/2007/ler/ruby-on-rails-na-dreamhost/index.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
