Instalando o mod wsgi Python e Configurando o Django em máquinas com Cpanel

De Wiki Integrator do Brasil
Ir para: navegação, pesquisa
Banner-wiki-promocoes.gif






Antes de começar, saiba que trabalhar com aplicativos fora do painel, podem ocorrer falhas. Algumas situações podem danificar a máquina, impedindo sua recuperação. Não nos responsabilizamos e nem disponibilizamos suporte para tais eventuais situações sem custo. O suporte da hospedagem, sem custo, é para os painéis de controle somente.

Como instalar o WSGI

Baixe e compile o wsgi no SSH, como usuário root:

cd /usr/local/src/
wget http://modwsgi.googlecode.com/files/mod_wsgi-2.3.tar.gz
gzip -dc mod_wsgi-2.3.tar.gz | tar xf -
cd mod_wsgi-2.3
./configure
make && make install

Após compilado, terá o módulo no seguinte caminho /usr/local/apache/modules/mod_wsgi.so.

Entre no como usuário root, vá em WHM>>Service Configuration »Apache Configuration>>Include Editor.

Alt text

Adicione as linhas abaixo em Pre Main Include:

LoadModule wsgi_module /usr/local/apache/modules/mod_wsgi.so
AddHandler wsgi-script .wsgi
Alt text

Confirme no botão Update e depois no Restart para reiniciar o Apache.


Instalando o Django

Baixando e instalando a versão 1.4.2

cd /usr/local/src
wget https://www.djangoproject.com/download/1.4.2/tarball/
tar xzvf Django-1.4.2.tar.gz
cd Django-1.4.2
python setup.py install

Se ocorreu tudo OK, verá isto como última linha:

Writing /usr/lib/python2.6/site-packages/Django-1.4.2-py2.6.egg-info

Por fim, teste assim no terminal SSH:

python -c "import django; print(django.get_version())"

Se aparecer a versão, está tudo certo, você conseguiu.


Como integrar ao domínio

Você precisa executá-lo em um domínio/usuário. Primeiro, precisa criar seu wsgi app que irá chamar a aplicação Django.

No exemplo, temos um usuário chamado jvworld, com um domínio javaworld.com.br. Veja como nós o configuramos:

Dentro do diretório /home/jvworld/public_html, onde colocaremos nosso aplicativo, criamos o arquivo django.wsgi com o seguinte código python:

import os, sys
sys.path.append('/home/jvworld/public_html')
sys.path.append('/home/jvworld/public_html/jworld')
os.environ['DJANGO_SETTINGS_MODULE'] = 'jworldcombr.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Por fim, a integração com o domínio, usando o usuário root para criar o arquivo, via SSH:

Cria os diretórios

mkdir -p /usr/local/apache/conf/userdata/std/2/jvworld/javaworld.com.br/

Cria o arquivo de configuração do WSGI

vi /usr/local/apache/conf/userdata/std/2/jvworld/javaworld.com.br/wsgi.conf

Adicione o seguinte conteúdo (mude para seu usuário e aplicativo):

<IfModule mod_alias.c>
 Alias /robots.txt /home/jvworld/public_html/jworld/media/robots.txt
 Alias /favicon.ico /home/jvworld/public_html/jworld/media/favicon.ico
 Alias /media /home/jvworld/public_html/jworld/media
 Alias /adminmedia /home/jvworld/public_html/jworld/media/adminmedia
</IfModule>

<IfModule mod_wsgi.c>
 WSGIScriptAlias / /home/jvworld/public_html/django.wsgi
 WSGIDaemonProcess javaworld.com.br threads=15 display-name=%{GROUP}
 WSGIProcessGroup javaworld.com.br
 WSGIApplicationGroup %{GLOBAL}
</IfModule>


As instruções acima fará com que, ao digitar o domínio, apareça o aplicativo Django.

Reinicie o Apache com estes dois comandos abaixo:

/scripts/rebuildhttpdconf
/etc/init.d/httpd restart

Se ao fazer o comando /scripts/rebuildhttpdconf, aparecer um erro, significa que configurou algo errado no wsgi.conf.


Logs de erros (caso apareça o erro 500 no browser ao abrir o domínio configurado)

Leia os erros do Apache no seguinte endereço abaixo, como usuário root, com o comando:

tail -100 /usr/local/apache/logs/error_log


NOTA: Para remover o mapeamento, basta retirar o "wsgi.conf" do diretório criado ou modificar o final ".conf" por outro nome e refazer os dois comandos dados para reiniciar o Apache acima.

IMPORTANTE: É necessário conhecimentos básicos de terminal Linux para inserir dados. Suporte de hospedagem não ensina ou ajuda com problemas relacionados a aplicativos Django. Eventuais erros que vier a ter, pedimos que pesquise a respeito em sites e fóruns especializados. Esperamos que compreenda.