Сконфигурируйте проект Django в подкаталоге, используя mod_python. Админ не работает - PullRequest
1 голос
/ 27 августа 2009

Привет, ребята. Я пытался настроить свой проект django в подкаталоге root, но ничего не получилось (локально он работает отлично). Я использовал официальный документальный документ django для развертывания проекта с mod_python. Реальная проблема заключается в том, что я получаю сообщение об ошибке «Страница не найдена» всякий раз, когда я пытаюсь перейти к администратору или просмотреть мои приложения.

Вот мой файл python.conf, расположенный в /etc/httpd/conf.d/ в Fedora 7

LoadModule python_module modules / mod_python.so

SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE mysite.settings
PythonOption django.root /mysite
PythonDebug On
PythonPath "['/var/www/vhosts/mysite.com/httpdocs','/var/www/vhosts/mysite.com/httpdocs/mysite'] + sys.path"

Я знаю, что / var / www / - не лучшее место для размещения моего проекта django, но я просто хочу отправить демонстрацию моей работы моему заказчику, позже я поменяю местоположение.

Например. Если я захожу на www.domain.com/mysite/, я получаю индексное представление, настроенное в mysite.urls. Но я не могу получить доступ к своему app.urls (www.domain.com/mysite/app/) и любому из admin.urls. (Www.domain.com/mysite/admin/)

Вот mysite.urls:

urlpatterns = Patterns ('',

url(r'^admin/password_reset/$', 'django.contrib.auth.views.password_reset', name='password_reset'),
(r'^password_reset/done/$', 'django.contrib.auth.views.password_reset_done'),
(r'^reset/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$', 'django.contrib.auth.views.password_reset_confirm'),
(r'^reset/done/$', 'django.contrib.auth.views.password_reset_complete'),
(r'^$', 'app.views.index'),
(r'^admin/', include(admin.site.urls)),
(r'^app/', include('mysite.app.urls')),
(r'^photologue/', include('photologue.urls')),

) * * тысяча двадцать-один

Я также пытался изменить admin.site.urls с помощью '' django.contrib.admin.urls ', но это не сработало. Я много гуглил, чтобы решить эту проблему, и прочитал, как другие разработчики настраивают свой проект django, но не нашел слишком много информации для развертывания django в подкаталоге. У меня включен админ в INSTALLED_APPS и settings.py в порядке.

Пожалуйста, если у вас есть какой-нибудь гид или если вы говорите мне, что я делаю неправильно, это будет высоко ценится.

спасибо.

Ответы [ 2 ]

0 голосов
/ 27 августа 2009

Если ваш файл settings.py правильный и у вас правильный INSTALLED_APPS, и он работает на сервере разработки, то я бы сказал, что это ваш файл конфигурации Apache.

Попробуйте запустить приложение python для создания файлов конфигурации Apache для mod_python + Django. Источник здесь на github.com. Если у вас есть рабочий файл конфигурации, вы можете его изменить.

Беги так:

C:\Users\hughdbrown\Documents\django\Apache-conf>python http_conf_gen.py --flavor=mod_python --source_dir=. --server_name=foo.com --project_name=foo
Writing 'foo.vhost.python.conf'

Результат выглядит так:

# apache_template.txt
NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin webmaster@foo.com
    ServerName foo.com

    DocumentRoot "./foo/"

    <Location "/">
        # without this, you'll get 403 permission errors
        # Apache - "Client denied by server configuration" 
        allow from all

        SetHandler python-program
        PythonHandler django.core.handlers.modpython
        PythonOption django.root /foo

        PythonDebug On
        PythonPath "[os.path.normpath(s) for s in (r'.', r'C:\Python26\lib\site-packages\django') ] + sys.path"
        SetEnv DJANGO_SETTINGS_MODULE foo.settings
        PythonAutoReload Off
    </Location>

    <Location "/media" >
        SetHandler None
        allow from all
    </Location>

    <Location "/site-media" >
        SetHandler None
        allow from all
    </Location>

    <LocationMatch "\.(jpg|gif|png)$">
        SetHandler None
        allow from all
    </LocationMatch>
</VirtualHost>
0 голосов
/ 27 августа 2009

Я использую mod_wsgi, так что я не уверен, что все так же. Но в моем urls.py у меня есть:

(r'^admin/(.*)', admin.site.root),

В моем конфиге Apache у меня есть это:

Alias /admin/media/ /usr/lib/python2.5/site-packages/django/contrib/admin/media

Ваш путь может отличаться.

...