Instalando o mod_rails (Phusion Passenger) no Mac OS X Leopard

20 de Maio de 2008

Recentemente foi lançado o Phusion Passenger, módulo do Apache para deployment de aplicações Ruby on Rails[bb] e que, apesar de novo, já está sendo usado por grandes provedores de hospedagem como Dreamhost e, nacionalmente, pela Locaweb, como anunciado no blog. Mas não é só o ambiente de produção que pode se beneficiar do mod_rails.

Se configurado no ambiente de desenvolvimento, você não precisará mais iniciar um servidor específico para cada uma das aplicações que você tiver. Basta criar um arquivo de configuração VHost, definindo qual é o nome do servidor que irá responder para uma determinada aplicação e você já pode acessá-la.

Antes de começar, certifique-se de que tem o XCode instalado, pois o instalador irá usá-lo para compilar o Phusion Passenger. Você também precisa ter Apache 2 instalado. Se você possui uma versão mais antiga, lembre-se de atualizá-lo antes de continuar a instalação.

Instalando o Phusion Passenger

Para instalar o Phusion Passenger, você deve instalar a gem chamada passenger.

sudo gem install passenger

Depois, execute o comando abaixo para iniciar a instalação automática.

sudo passenger-install-apache2-module

Se tudo correr bem, você verá uma mensagem com algumas linhas que devem ser adicionadas ao seu arquivo de configuração do Apache.

Mensagem de instalação do Phusion passenger

Configurando o Apache

Agora, você precisa configurar o Apache para que suas aplicações Ruby on Rails sejam iniciadas. Abra o arquivo "/etc/apache2/httpd.conf" e adicione as seguintes configurações ao final do arquivo:

LoadModule passenger_module /Library/Ruby/Gems/1.8/gems/passenger-1.0.5/ext/apache2/mod_passenger.so
RailsSpawnServer /Library/Ruby/Gems/1.8/gems/passenger-1.0.5/bin/passenger-spawn-server
RailsRuby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
 
NameVirtualHost *
Include /private/etc/apache2/vhosts/*.conf

As três primeiras linhas devem ser substituídas pela sua própria configuração, aquela que apareceu quando você terminou de instalar o Phusion Passenger.

Crie o diretório onde serão adicionados os arquivos de configuração do VHost com o comando abaixo.

sudo mkdir /private/etc/apache2/vhosts

Agora, basta criar a configuração que irá identificar sua aplicação. Supondo que você tenha um projeto chamado 'spesa' —e você não tem!— no diretório '/Users/fnando/Sites', você adicionará as configurações abaixo ao arquivo "/private/etc/apache2/vhosts/spesa.conf":

<VirtualHost *>
  ServerName dev.spesa
  DocumentRoot /Users/fnando/Sites/spesa/public 
  RailsEnv development
</VirtualHost>
 
<Directory "/Users/fnando/spesa">
    AllowOverride FileInfo AuthConfig Limit Indexes
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    <Limit GET POST OPTIONS>
      Order allow,deny
      Allow from all
    </Limit>
    <LimitExcept GET POST OPTIONS>
      Order deny,allow
      Deny from all
    </LimitExcept>
</Directory>

Para que você possa acessar seu projeto digitando o nome do servidor, você precisa adicioná-lo ao seu arquivo de hosts. Abra o arquivo "/etc/hosts" e adicione a linha abaixo.

127.0.0.1	dev.spesa

Você pode adicionar diversos servidores para responderem em um mesmo IP; Basta separá-los por espaço, como no exemplo abaixo.

127.0.0.1	dev.spesa dev.soundslike

Remova o arquivo ".htaccess" presente no seu diretório "public" com o comando "rm ~/Sites/spesa/public/.htaccess".

Pronto! Seu ambiente já está configurado. Basta reiniciar o Apache com o comando "sudo apachectl restart" e acessar o projeto com o nome do servidor escolhido. Se, por algum motivo, sua aplicação não puder ser iniciada, uma mensagem do Phusion Passenger irá aparecer.

Tela de erro do Phusion Passenger

Existe uma documentação bastante completa, com diversas configurações adicionais que podem ser feitas, além de soluções para problemas comuns. Vale a pena dar uma olhada!

Comentários #

#1 Aguinelo Pedroso disse:
20 Maio 08, 09:29AM

Muito bom Nando, as coisas estão andando rápido em Rails, fico feliz.
Parabéns, muito explicativo.

Abraços

#2 Leonardo Faria disse:
23 Maio 08, 07:32PM

hoje só não usa rails no leopard quem não quer :D

só lembrando, ele já vem pré-instalado no felino [http://developer.apple.com/tools/developonrailsleopard.html]

#3 leonardofaria.net → Rails, Git, MySQL e mod_rails no Leopar... disse:
24 Maio 08, 01:53PM

[...] Nando mostra em seu artigo outra forma de carregar as informações das [...]

#4 Tiago disse:
01 Jun 08, 11:38PM

Muito bom! Parabéns

#5 Deploy Rails com: Apache + mod_proxy_balancer + mongrel - ArthurG... disse:
04 Set 08, 01:16AM

[...] também conhecido como mod_rails. Para aprender como fazer um deploy com o mod_rails, leia este excelente artigo do Nando Vieira. [...]

#6 Lucas Vasconcelos disse:
05 Jan 09, 03:21PM

Nando, ótimo artigo. Depois de dois dias tentando habilitar o apache para funcionar com o FastCGI encontrei o seu blog \o

Agora minhas aplicações estão funcionando normalmente na máquina local... Porém, gostaria de poder acessa-las através de outras máquinas na rede. Você pode me indicar como fazer isto?

#7 Jean Orlando disse:
19 Maio 09, 04:44PM

Ótimo artigo... estou começando agora com td d uma vez, passenger, apache, mac, rails, e to meio perdido ainda hehehe, mas funcionou perfeito!!

Só fiquei embananado em como acessar os arquivos private, mas aí descobri em outro site como fazia hehehe...

Muito obrigado!

Deixe um comentário




Este blog usa o Gravatar.


Não é aceito código HTML: adicione-o no pastie.org ou paste.milk-it.net e poste apenas o link.

Se este é seu primeiro comentário, ele terá que ser aprovado antes de ser exibido.