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


Leia em 2 minutos

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!