FreeBSD: Como instalar o Django com o mod_wsgi?

2

Usando o FreeBSD 8.2-RELEASE. Eu quero mexer com o Django e quero uma configuração de trabalho no meu sistema freebsd. Meu entendimento é que preciso instalar o python, o apache, o mod_wsgi e o django. A seção do manual do Django fala sobre mod_python não mod_wsgi e acredito que mod_wsgi é o método recomendado.

Já tenho o seguinte instalado no meu sistema a partir de pacotes:

apache-2.2.17_1 
python26-2.6.6 

O que eu preciso fazer para que o django funcione com o apache? Qualquer tutorial?

    
por User 23.06.2011 / 23:11

2 respostas

0

Ok, trabalhei principalmente com a ajuda das seguintes instruções: link

Aqui está o que eu fiz (como usuário root):

Reinstale o apache

Eu já tinha o apache22 instalado a partir de um pacote binário, mas aparentemente a versão do pacote é compilada sem suporte a threads e você precisa de threads para o mod_wsgi. Então eu fiz: %código%. Isso se queixou php dependendo do apache, então eu fiz: pkg_delete apache-2.2.17_1 . Então eu fiz pkg_delete php5-5.3.5 novamente, o que funcionou. Então eu fiz pkg_delete apache-2.2.17_1 then cd /usr/ports/www/apache22 , então eu verifiquei a caixa de seleção make config then "[X] THREADS Enable threads support in APR" then make . Iniciar o apache funcionou, mas recebi um erro "[warn] (2) Nenhum arquivo ou diretório desse tipo: Falha ao ativar o filtro Aceitar 'httpready'". Eu procurei on-line e consertei fazendo make install e kldload accf_http , depois adicionei accf_http_load="YES" ao meu /boot/loader.conf para que essa alteração persistisse após a reinicialização.

Instale mod_wsgi

cd /usr/ports/www/mod_wsgi3
make
make install

isto modificou automaticamente o meu arquivo httpd.conf para adicionar uma linha de módulo de carga

Resinstale o php

(não estritamente necessário, mas desde que eu tive que desinstalá-lo acima)

cd /usr/ports/lang/php5
make config (and set any options desired)
make
make install

Teste a instalação do mod_wsgi

Siga as instruções no link . Eu criei um arquivo chamado test.wsgi com o seguinte conteúdo na raiz do meu documento:

def application(environ, start_response):
    status = '200 OK'
    output = 'Hello World!'

    response_headers = [('Content-type', 'text/plain'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]

Eu adicionei a seguinte linha ao final do meu httpd.conf:

WSGIScriptAlias /myapp /usr/home/myusername/www/wsgitest/test.wsgi

(Na minha caixa de teste eu tenho a configuração do apache com uma raiz de documento em / usr / home / myusername / www). Então eu fiz o apachectl reiniciar. Então eu fui para o link no meu navegador e voila! Eu vi "Hello World".

Instalar pip

cd /usr/ports/devel/py-pip
make
make install

Atualizei meu shell para que o caminho fosse atualizado.

Instale o django

pip install django

(isso me fez django versão 1.3 yay!) para confirmar a instalação do django

python
import django

Crie o aplicativo de teste do django

Eu criei uma nova pasta para o meu teste de django apachectl restart . Então

django-admin.py startproject mysite

Crie o arquivo wsgi do django

criou um novo arquivo /usr/home/myusername/www/djangotest/django.wsgi com o seguinte conteúdo:

import os
import sys
path = '/usr/home/myusername/www/djangotest'
if path not in sys.path:
    sys.path.append(path)
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

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

Edite o httpd.conf

WSGIScriptAlias /djangotest /usr/home/myusername/www/djangotest/django.wsgi
apachectl restart

visite link no navegador. Funciona!

Edite o httpd-vhosts.conf (opcional)

Agora, para que funcione como parte do host virtual. Comente a linha WSGIScriptAlias no httpd.conf. Em seguida, adicione algo como:

<VirtualHost *>
 ServerName mytest.whatever
 DocumentRoot /usr/home/myusername/www/djangotest
 WSGIScriptAlias / /usr/home/myusername/www/djangotest/django.wsgi
</VirtualHost> 

apachectl restart

Depois de configurar o arquivo de hosts, visite o link no navegador. Funciona!

    
por 26.06.2011 / 02:04
1

Você não precisa instalar nada especial para mexer com o Django. As únicas coisas que você precisa para um servidor de depuração que funcionem são:

  • Python
  • Django em si
  • Módulos Python para seu banco de dados se você quiser algo diferente de SQLite

Você já tem o Python, então sugiro:

easy_install pip
pip install django

Em seguida, siga os tutoriais do Django .
O mod_wsgi entra em ação quando você implanta seu aplicativo.

    
por 24.06.2011 / 10:14