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!