Pesquisar este blog

sexta-feira, 15 de fevereiro de 2008

Fazendo deploy do Django no Ubuntu

Rrsrsrs, nada como levar um chute nos rins enquanto se está pegando fogo, não é mesmo? Nada! rsrsrs tenta fazer um deploy dos novos frameworks web, NA MÃO, aquela coisa toda New Age, aí sim vocês vão saber o que é dor! Rsrrsrs, sim, eu odiei meu deploy aqui, e é por isso que eu me sinto na obrigação (i)moral de compartilhar um pouco da sapiência que me foi compenetrada goela abaixo.

Seguinte, essa postagem vai cobrir como se faz um deploy em uma distribuição ubuntu Gutsy recém instalada. É provável que os mesmos passos funcionem para o Feisty, mas como eu não estou a fim de pôr minha mão hoje, fica como foi dito.

Ok, você, cidadão de bem, com seu ubuntu server ou ubuntu normal instalado na máquina. Agora, o que fazer? Instale o django. Para instalar o django do trunk(versão mais atual) faça:

svn co http://code.djangoproject.com/svn/django/trunk/

Note que você deve ter o pacote subversion instalado
Abra um console, vá até a pasta do do trunk que foi criada na sua máquina e digite:

sudo python setup.py install

Pronto. Doeu? Ainda não.

Próximo passo, caso não tenha o apache2 instalado, digite o seguinte comando no terminal:

sugo apt-get install apache2

O apt-get se encarregará de instalar e configurar(na medida do possível) seu apache.
Cheque pelo seu navegador se o apache2 está de pé acessando a url: http://localhost/
Abriu alguma coisa diferente de uma tela de erro? Enão está tudo certo.

Próximo passo! Intalando o mod-python. A configuração recomendada pelo site do django para fazer um deploy é através do mod_python. Existem outras formas, mas como eu fiz com essa, vcs tb vão fazer >:D Comando básico, no console:

sudo apt-get install libapache2-mod-python

Sim sim, dá trabalho, é a vida. rsrsrs, se conforme ou corte os pulsos.

PRÓXIMO PASSO!!! Agora vamos fazer um esqueminha que eu tive que fazer aqui, com relação às permissões dos arquivos.
O problema é o seguinte, você quer que o apache sirva seu site, só que o apache não tem permissão para "servir" conteúdo que não esteja em algum canto que ele mande(possa ver, executar, etc). Eu, particularmente, gosto de manter meus projetos em uma pasta no meu usuário, talvez tenha sido isso que me deu mais trabalho, MAS, como coisa fácil não tem graça, fiz do jeito que eu gostava e talz.
De qualquer forma, para a configuração que eu acabei de falar, você vai precisar fazer um pouco de malabarismo com as permissões. Primeiro, crie um grupo django_prj:

groupadd django_prj
agora vamos adicionar o usuário www-data(que é o usuário que roda o apache para você) ao nosso grupo:

adduser www-data django_prj
Pronto, agora tudo que alguém do grupo django_prj pode fazer, nosso usuário www-data também pode. Vamos dar permissões de gente grande ao grupo. Primeiro vamos adicionar a pasta onde ficam os nossos projetos django ao grupo:

chgrp -R django_prj pasta_dos_projetos
Note o comando -R. Esse comando faz com que a pasta_dos_projetos e as sub-pastas dentro dela, e arquivos, pertençam ao grupo django_prj

Por fim, adicionando as permissões necessárias(leitura e execução)ao grupo:

chmod g+r pasta -R
Rsrrsrs. Acabou? Nada!Vamos agora configurar o apache.

Pelo console, vá até a pasta onde ficam os arquivos de configuração do apache:

cd /etc/apache

Agora, em sites-avaiable criem um arquivo com o nome do seu projeto. Comando sugerido:

sudo touch nome_do_projeto

Editem este novo arquivo com as seguintes configurações (ref:pyman):



SetHandler python-program
PythonPath "['/home/seuusuario/projetos/'] + sys.path"
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE meuprojeto.settings
PythonDebug On



Acima, está a configuração de referência que eu peguei lá do blog do Andrews(link acima), só que eu gostaria de fazer uma pequena sugestão. Caso você faça referências em seu projeto a aplicativos sem especificar o caminho todo, algo como:
from forum import models
ao invés de
from projeto.forum import models
seu python path deve ficar assim:

PythonPath "['/home/seuusuario/projetos/','/home/seuusuario/projetos/projeto/'] + sys.path"

Dessa forma, seu site não quebra por problema de referência e talz. Algo como seu projeto não achar os aplicativos instalados.

Pronto, ufa...acabou? NADA! Rsrsrsrs, deixa de moleza rapaz(moça). Mostre que vc é cabra macho(rsrsr, não conheço equivalente feminino) e continue!

Agora, na linha de comando, vamos habilitar a configuração que acabamos de fazer:

sudo a2ensite nome_do_projeto

Assim, próxima vez que o apache carregar as configurações, seu projeto vai subir junto. Agora, basta fazer o apache recarregar os projetos. Comando:

sudo /etc/init.d/apache2 reload

Rsrsrs, se não aparecer nenhuma tela de erro, falta só configurar o servidor de email, o servidor de javascript/css/images e mais uma ou outra coisinha. Para tais configurações, sinto muito, mas, google negada! Meus dedos aqui já estão pedindo arrego. rsrsrs

Espero ter sido, no mínimo útil. Abraço a todos, e, lembrem-se: essa luta toda é só no começo :D! Depois fica mais fácil de fazer deploy.

Nenhum comentário:

Postar um comentário