Apache django和静态和媒体文件服务

时间:2014-05-19 14:19:12

标签: python django apache django-staticfiles django-media

我有一个django项目,我最终设法使用apache服务。我想要非常简单,所以虽然我的测试服务器是服务/媒体和静态,但我没有将它们包含在我的site.conf文件中。我想首先检查部署是否有效,然后让apache提供静态文件。但是,说实话,Apache正在从媒体文件夹中提供文件,而我无需做任何事情。我的apache conf是

<VirtualHost *:80>
    ServerAdmin webmast@rhombus.com
    ServerName myrhombus.com
    ServerAlias www.myrhombus.com
    WSGIScriptAlias / /srv/www/rhombus2/rhombus/wsgi.py
    <Directory /srv/www/rhombus2/rhombus>
    <Files wsgi.py>
            Require all granted
    </Files>
    </Directory>

    Alias /static/ /srv/www/rhombus2/static/
    Alias /media/ /srv/www/rhombus2/media/

    <Directory /srv/www/rhombus2/static>
        Require all granted
    </Directory>

    <Directory /srv/www/rhombus2/media>
        Require all granted
    </Directory>


</VirtualHost>

您可以看到没有媒体或静态别名。

我的urls.py

urlpatterns = patterns('',
    # Examples:
    #differnet  urls here etc...
    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    url(r'^admin/', include(admin.site.urls)),
)

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)

这怎么可能?

编辑:我做了你描述的变化,但现在我得到了一个奇怪的态度:)我没有得到任何媒体或静态服务(403错误)并在任何链接或地址栏中的第一次点击给我一个400错误,第二个正常打开网页。

error.log中

[Tue May 20 10:12:56.049081 2014] [authz_core:error] [pid 1360:tid 140612925908736] [client 127.0.0.1:48360] AH01630: client denied by server configuration: /serv, referer: http://www.myrhombus.com/accounts/login/

访问该网站时收到错误请求(400)。如果我再次点击它会正常打开网站,但我仍然在error.log上收到相同的错误。

1 个答案:

答案 0 :(得分:1)

这是因为您已经专门添加了一些django媒体服务URL模式。你是对的关注!

+static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)

您正在MEDIA_ROOT通过python服务MEDIA_URL;除了在开发过程中,不推荐使用。

您应该在if settings.DEBUG = True语句中包含该添加内容。

if settings.DEBUG:
   urlpatterns += static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)