Passenger 3 no CentOS 5.5 com RVM

É pessoal… Depois de zilhões de anos sem postar nada no blog, vou agora falar um pouco da instalação do Passenger 3 e RVM no CentOS, rodando com e sem proxy reverso no Apache2 (httpd).

Usei o CentOS 5.5 (Pois é… tive que usar) e não tinha interface gráfica (uma comodidade pra mim, já que se trata de servidor), então todos os comandos serão executados no terminal.

Caso estejam por trás de um proxy (que foi meu caso), execute os comandos
$ export http_proxy=seu_endereco_do_proxy
$ export https_proxy=seu_endereco_do_proxy_https

Segui os seguintes passos de instalação

  1. RVM
  2. Apache2 (No CentOS o nome do desgraçado é httpd…)
  3. Passenger (Instalei-o via gem e não usei o pacote que tem disponível pra CentOS, pois ele dependia do EPEL, que eu não tinha como baixar…

Instalação do RVM

Instalar as seguintes dependências :

$ yum install -y git curl curl-devel gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel

A rede do meu trabalho não tem acesso direto ao protocolo git, então tive que baixar via https assim:

$ mkdir -p ~/.rvm/src/ && cd ~/.rvm/src/ && rm -rf ./rvm/ && git clone https://github.com/wayneeseguin/rvm.git && cd rvm && ./install

Depois disso, temos que colocar no .bashrc a linha abaixo

[[ -s "$HOME/rvm/scripts/rvm" ]] && . "$HOME/rvm/scripts/rvm"

Feito isso, teste o rvm com o seguinte comando, sendo que ele tem que retornar rvm is a function

$ type rvm | head l

Instale agora as dependências para a instalação do ruby (1.9.2-p136, no caso)

$ rvm package install zlib
$ rvm package install openssl

E agora, instale o ruby 1.9.2

$  rvm install ruby-1.9.2-p136

Instalação do Apache2 (httpd)

Essa é a parte mais simples, pois o CentOS facilita isso pra você (pelo menos alguma coisa…)

$ yum install -y httpd

Depois para reiniciar o servidor é somente

Instalação do Passenger

O Passenger precisa de alguns pacotes .devel para compilar os fontes, então instale-os com o comando abaixo

$ yum install -y httpd-devel apr-devel apr-util-devel

Eu preferi instalar a gem do passenger no gemset global do meu ruby-1.9.2, para ficar disponível pra todos os gemsets e configuro isso lá no global.gems do rvm. Então depois de setado meu gemset para global, instalo o passenger e executo a instalação.

$ gem install passenger
$ passenger-install-apache2-module

Siga rigosoramente as instruções do instalador do Passenger, ele é bem auto-explicativo e te diz o que você tem que configurar no /etc/httpd/conf/httpd.conf. O próprio instalador te dirá as 3 linhas, com o LoadModule, PassengerRuby e PassengerRoot.

Ele também dirá como você configura seu VirtualHost para que a aplicação Rails funcione corretamente.

Eu adicionei dentro do VirtualHost, os caminhos do GEM_HOME e GEM_PATH com SetEnv, pois não consegui carregar o .rvmrc de dentro do projeto.

<VirtualHost *:80>

DocumentRoot caminho_do_public_do_seu_projeto

RailsEnv production

SetEnv GEM_HOME caminho_do_gemset_do_seu_projeto

SetEnv GEM_PATH caminho_do_gemset_do_seu_projeto:caminho_do_gemset_global

<Directory caminho_do_public_do_seu_projeto>

AllowOverride all

Options -MultiViews

</Directory>

</VirtualHost>

Configuração do Passenger em modo proxy

A configuração acima é para a mesma versão do ruby que o passenger foi instalado, no nosso caso, ruby 1.9.2. Caso você queira usar outra versão do ruby, você terá que usar Proxy Reverso, que a configuração do VirtualHost é diferente, pois você terá que iniciar a sua aplicação usando o passenger standalone, com o comando abaixo, dentro do diretório do projeto.

$ passenger start -a 127.0.0.1 -p 3000 -d

O Parâmetro -p é para  indicar a porta, sendo a de sua escolha, o -d é pra iniciar o passenger standalone em modo deamonize, ou seja, em backgroud. Para parar o servidor, digite o comando abaixo no diretório do projeto.

$ passenger stop

Para maiores informações, use passenger start –help

Depois do servidor iniciado, falta só a configuração do Apache em modo de Proxy Reverso, que ele irá responder as requisições no endereço escolhido e redirecionar para a instância do passenger standalone.

A configuração do VirtualHost para proxy reverso é essa abaixo:

Essas configurações fiz em um servidor do Linode (Ubuntu 10.04) e um servidor do trabalho numa VM (CentOS 5.5), mudando somente que no Ubuntu, o Apache 2 é realmente Apache 2, não httpd.

NameVirtualHost seu_endereco.com:80

<VirtualHost seu_endereco.com:80>

DocumentRoot caminho_do_public_do_seu_projeto

PassengerEnabled off

ProxyPass / http://127.0.0.1:3000/

ProxyPassReverse / http://127.0.0.1:3000/

</VirtualHost>

É isso.

Leave a comment

7 Comments.

  1. Pedro, seguindo essas configurações eu posso ter várias aplicações rails em um único servidor?

    • Essa configuração é somente para uma aplicação, já que ele responderá qualquer requisição na porta 80, conforme está no VirtualHost.
      Para usar mais de uma aplicação, use dentro do VirtualHost a tag ServerName, colocando nela, o endereço configurado no seu DNS.

  2. Parabéns era isso que eu precisava ;)
    principalmente a parte do GIT e o proxy maldito
    tinha exportado somente http e não https
    valeu

  3. Cara show de bola, vou depois ver se existe alg para quem utiliza o Nginx. :razz: Mai já vale com o Apache!!!

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*


Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>