使用mod_python在子目录中配置Django项目。管理员不工作

时间:2009-08-26 23:19:57

标签: python django deployment mod-python

嗨,伙计们。我试图在根目录的子目录中配置我的django项目,但没有让事情发生。(其实它完美无缺)。我跟着django官方django documentarion用mod_python部署了一个项目。真正的问题是,每当我尝试访问管理员或我的应用程序的任何视图时,我都会收到“找不到页面”错误。

这是我在Fedora 7中的/etc/httpd/conf.d/中的python.conf文件

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')),

我也尝试使用''django.contrib.admin.urls'更改admin.site.urls,但它没有用。我搜索了很多来解决这个问题并阅读其他开发人员如何配置他们的django项目,但没有找到太多信息来在子目录中部署django。我在INSTALLED_APPS中启用了admin,并且settings.py没问题。

如果你有任何指导或告诉我我做错了什么,我们将不胜感激。

感谢。

2 个答案:

答案 0 :(得分:0)

我正在使用mod_wsgi,所以我不确定它是否完全一样。但在我的urls.py中,我有:

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

在我的Apache配置中,我有这个:

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

您的路径可能会有所不同。

答案 1 :(得分:0)

如果您的settings.py是正确的并且具有正确的INSTALLED_APPS并且它在开发服务器中有效,那么我会说这是您的Apache配置文件。

尝试运行我的python应用程序来为mod_python + Django创建Apache配置文件。来源是github.com上的here。一旦有了工作配置文件,就可以对其进行修改。

像这样跑:

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>