Post's com a tag "rails"

18
Jul

Django no Passenger

O Passenger ou mod_rails, é uma maneira de fazer deploy de aplicações Ruby/Rails de maneira simples e fácil no Apache. Nesse post não vou explicar detalhes sobre ele, mas, há esse post do Akita sobre o Passenger que é bem interessante. O Passenger suporta o padrão WSGI, e com isso é possível fazer o deploy de uma aplicação feita em Django utilizando o Passenger.



Antes de explicar sobre como fazer isso, que é algo extremamente simples e fácil. Tem um fato interessante nisso tudo. Porque uma ferramenta para deploy de aplicações Rails suportaria Django?



A resposta (segundo o Akita) é Leah Culver. Acho que se a moda pegar, veremos vários 'easy deployers' aparecendo.



Antes de voltar ao tema principal deste post, outra feliz coincidência é , no qual ele explica mais detalhadamente sobre o WSGI, que tem tudo haver com o assunto.



E agora vamos lá:



Primeiramente é necessário instalar o Passenger. Isso está bem documentado no site do próprio passenger: http://www.modrails.com/install.html por isso não vou descrever esse passo.



Para fazer o Django funcionar é necessário apenas criar um script que 'execute' o Django com o seu handler wsgi e configurar o diretório onde fica esse script, nos arquivos de configuração do Apache.



Vamos começar criando nosso arquivo que executará o WSGI. Vamos chamar ele de passenger_wsgi.py




#!/usr/bin/env python

import os, sys

sys.path.insert(0, '/home/seunome/projetos/') #diretorio onde fica seus projetos

os.environ['DJANGO_SETTINGS_MODULE'] = 'meuprojeto.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()


Feito isso vamos configurar o apache. Setando a variável DocumentRoot com o diretório onde está o seu script wsgi + 'public'. Devido a uma convenção (Rails) a pasta tem que ter esse diretório 'public'



Para exemplificar, se o seu projeto tiver o diretorio '/var/www/meuprojeto/' o DocumentRoot tem que ser '/var/www/meuprojeto/public'




<VirtualHost *>

DocumentRoot /var/www/meuprojeto/public

</VirtualHost>


Na minha conclusão, se sua hospedagem suportar o mod_wsgi use ele. Senão suportar mod_wsgi e suportar passenger, use o passenger!



Em breve falarei mais sobre o Django no passenger.