1up4developers logo

1up4developers

Nadando contra o Waterfall. tail -f /mind/realworld >> /blog

Deploy De Várias Aplicações No Nginx + Passenger Usando Subdomain Ou Suburi

| | Comments


Se você está pensando em fazer o deploy da sua aplicação Rails em um server Nginx com Phusion Passenger, você está no caminho certo! Não apenas pela segurança e performance do Nginx, mas também pela facilidade de instalação e configuração quando comparado à outros web servers populares.

A instalação do Nginx bem como configuração do módulo do Passenger são relativamente simples. A documentação de ambos é bem completa. Você provavelmente não terá muita dificuldade. Eu recomendo seguir o passo-a-passo da instalação do Passenger:

  passenger-install-nginx-module

Uma vez que tudo esteja instalado, é hora de configurar o Nginx editando o arquivo nginx.conf (provavelmente localizado em /usr/local/nginx/conf/nginx.conf)

Usando sub URI

O deploy como sub URI torna sua aplicação acessível com o endereço http://dominio.com/app1, sendo app1 o nome da sua aplicação. Supondo que diretório público do Nginx esteja em /var/www e sua aplicação Rails em /var/rails/app1, configure-o assim:

http {
    ...
    server {
        listen 80;
        server_name dominio.com www.dominio.com;
        root /var/www;
        passenger_enabled on;
        passenger_base_uri /app1;
    }
    ...
}

Ainda é preciso criar um link simbólico para que o contexto da aplicação Rails seja visível pelo document root em /var/www:

ln -s /var/rails/app1/public /var/www/app1

Reiniciando o Nginx, sua aplicação já estará rodando. Para adicionar outras aplicações, basta adicionar:

        passenger_base_uri /app1;
        passenger_base_uri /app2;
        passenger_base_uri /app3;

E em seguida criar os links simbólicos como descrito acima. Nota importante: em alguns casos, será necessário informar a URL relativa correta nas configurações do Rails:

   config.action_controller.relative_url_root = "/app1"

Usando subdomain

O deploy como subdomain torna sua aplicação acessível com o endereço http://app1.dominio.com. Basta configurar o Nginx como segue:

http {
    ...
    server {
        listen 80;
        server_name app1.dominio.com;
        root /var/rails/app1/public;
        passenger_enabled on;
    }
    ...
}

Note que o root aponta diretamente para o diretório “public” da aplicação Rails. Para fazer o deploy de outras aplicações como subdomínio, basta configurar outro “server”, alterando root e o server_name:

http {
    ...
    server {
        listen 80;
        server_name app1.dominio.com;
        root /var/rails/app1/public;
        passenger_enabled on;
    }
    ...
    server {
        listen 80;
        server_name app2.dominio.com;
        root /var/rails/app2/public;
        passenger_enabled on;
    }
    ...
}

Uma vez que o DNS do host esteja corretamente configurado, suas aplicações estarão acessíveis em http://app1.dominio.com, http://app2.dominio.com, etc.

Dúvidas ou sugestões, utilizem os comentários. Sucesso!

Comments