Назад | Перейти на главную страницу

Развертывание сайта Django с использованием apache2 и mod_wsgi

Я пытался научиться создавать и развертывать приложения Django. Я создал тестовый проект и могу просматривать его с помощью тестового сервера Django. Теперь я хочу развернуть его с помощью apache и mod_wsgi.

Я выполнил инструкции по установке на Руководство по быстрой установке и установил mod_wsgi. Затем я просмотрел пример в Руководство по быстрой настройке и смог успешно подключиться к выходным данным примера в моем браузере.

Теперь я перешел к интеграции с Django (http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango), и я не могу продвинуться с этим. Каждый раз, когда я пытаюсь перейти к URL-адресу, который я установил для своего проекта, мне вместо этого предоставляется результат из примера, который я создал с помощью руководства по настройке. Я просмотрел журнал ошибок apache, и в нем нет сообщений (у меня было несколько, когда я отлаживал первый пример, поэтому я знаю, что смотрю правильный журнал). Я даже установил «LogLevel info», чтобы попытаться получить больше деталей в журналах, но их не было.

У кого-нибудь есть предложения?

Вот мой apach2.conf:

LockFile ${APACHE_LOCK_DIR}/accept.lock
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>
<IfModule mpm_worker_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75 
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>
<IfModule mpm_event_module>
    StartServers          2
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75 
    ThreadLimit          64
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
AccessFileName .htaccess
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy all
</Files>
DefaultType text/plain
HostnameLookups Off  [3]: 

ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
Include mods-enabled/*.load
Include mods-enabled/*.conf
Include httpd.conf
Include ports.conf
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
Include conf.d/
Include sites-enabled/

Вот мой httpd.conf:

ServerName HomeServer
LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so

Вот VitualHost:

<VirtualHost *:80>
    ServerName ppbase.homeserver
    ServerAdmin admin@example.com

    DocumentRoot /var/projects/ppbase/ppbase
    <Directory /var/projects/ppbase/ppbase>
        Order allow,deny
        Allow from all
    </Directory>

    LogLevel info

    WSGIScriptAlias / /var/projects/ppbase/django.wsgi
    <Directory /var/projects/ppbase>
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

А вот и django.wsgi:

import os
import sys


projectpath = '/var/projects/ppbase'
projectapppath = '/var/projects/ppbase/ppbase'
if projectpath not in sys.path:
    sys.path.append(projectpath)
if projectapppath not in sys.path:
    sys.path.append(projectapppath)
os.environ['DJANGO_SETTINGS_MODULE'] = 'ppbase.settings'

import django.core.handlers.wsgi

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

Убедитесь, что ваш файл vhost включен в apache.