Instalando e configurando: Passenger + Apache2 + Rails 3.2.8 + Ubuntu 11.10

Após desenvolver muitas aplicações (testes, rsrs) e rodar em ambiente de development, alcancei um ponto crucial em todo o processo de desenvolvimento de software: Como é que eu vou colocar isso em produção??

Bom, pesquisei um pouco, lí vários posts, algumas documentações, recomendações (aqui), e, finalmente encontrei algo sobre o Phusion Passenger.

Não entrarei no mérito comparativo entre o Passenger e o Mongrel ou de qualquer outro tipo. A questão aqui, é: apenas documentar o procedimento que realizei para configurar o Passenger com o Apache2 no Ubuntu 11.10 e mandar bala na aplicação em modo de produção.

Neste pequeno e modesto tutorial, é necessário a utilização do RVM

Sem mais "delongas", seguem os passos:

  • Abra o arquivo "Gemfile" e coloque a gem do Passenger

gem 'passenger'

Não se esqueça de rodar "bundle install" para instalar a gem configurada

  • Abra o terminal do ubuntu e instale o Passenger Apache2 Module. Siga os passo conforme são mostrados no terminal.

rvmsudo passenger-install-apache2-module

  • Localize o arquivo: "apache2.conf", no meu caso, está em: "/etc/apache2/apache2.conf"; inclua as linhas abaixo (Recomendação obtida a partir das informações da instalação realizada no passo acima).

LoadModule passenger_module /{user_home}/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.17/ext/apache2/mod_passenger.so
PassengerRoot /{user_home}/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.17
PassengerRuby /{user_home}/.rvm/wrappers/ruby-1.9.3-p194/ruby

  • Crie um novo VirtualHost no arquivo de configuração do Apache2: "default", no meu caso, localizado em: "/etc/apache2/sites-available/default".

<VirtualHost *:80>
ServerName www.yourhost.com # Utilize o nome do seu domínio
# !!! Be sure to point DocumentRoot to 'public'!
DocumentRoot /somewhere/public  # Aqui precisa ser /{RAILS_APP}/public
<Directory /somewhere/public> # Aqui precisa ser /{RAILS_APP}/public
# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options -MultiViews
</Directory>
</VirtualHost>

  • Após configurações, rode o seguinte comando, para reiniciar o Apache2:

sudo service apache2 restart

  • Se o Apache2 foi reiniciado com sucesso, acesse a URL configurada no VirtualHost. Obs: não informe a porta, pois, o Apache2 está utilizando a porta 80 para redirecionar para o VirtualHost.
  • Caso ocorra algum erro, você pode verificar o log localizado em "/{RAILS_APP}/logs/production.log". No meu caso, tive problemas com a seguinte linha no arquivo: "/{RAILS_APP}/config/environments/production.rb"

mude de:

config.assets.compile = false

para

config.assets.compile = true

  • Caso tenha problemas, como mencionado no passo anterior, reinicie o Apache2, conforme o passo 5.

Bom... foi somente isso que fiz para ter a aplicação rodando em modo de produção. Gostaria de ressaltar que não realizei nenhuma configuração para otimização de performance, não utilizei nenhuma configuração para configurar cache de arquivos estáticos no Apache2. Como disse anteriormente, o intuito é somente documentar a integração do Passenger com o Apache2 para rodar aplicações Rails em modo de produção.

Obrigado!

Publicado: October 06 2012

  • tags: