无法在Apache中提供Django的MEDIA和STATIC文件

时间:2016-08-11 20:55:58

标签: python django apache

我正在使用Django 1.8,python 3.4.3和Apache 2.4.7,我尝试了很多配置,但我看不出我做错了什么。当我使用调试模式时,除了图像运行完美之外,我在urls.py上使用它解决了图像问题:

url(r'^media/(?P<path>.*)$', 'django.views.static.serve',
                        {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),

后来我转向DEBUG=False并且图像停止工作,这就是为什么开始阅读有关在Apache上提供静态和媒体文件的原因。并且基本配置一切似乎都正常,但是图像再次停止工作,在尝试了一些配置后,我的应用程序CSS和JS刚停止工作,所以我使用了collectstatic,之后,管理员也失去了它CSS和Js,但是当我再次转换它True时,CSS和JS又开始在App和Admin上工作。

现在在DEBUG = False没有任何工作,管理员静态,我的应用程序静态文件和媒体文件,没有。

这些是我的设置:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
PROJECT_ROOT = os.path.realpath(os.path.dirname(__file__))

MEDIA_ROOT = PROJECT_ROOT + '/archivos/'
MEDIA_URL = '/archivos/'  #put whatever you want that when url is rendered it will be /archivos/imagename.jpg

DEBUG =  True #False

ALLOWED_HOSTS = ['localhost','127.0.0.1'] 

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

这是我的/etc/apache2/sites-enabled/000-default.conf文件:

<VirtualHost *:80>

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>



<VirtualHost *:80>
    ServerName django.myproject
    Alias /static /home/developer/myproject/static

    <Directory /home/developer/myproject/static>
        Require all granted
    </Directory>

    Alias /archivos/ /home/developer/myproject/archivos/

    <Directory /home/developer/myproject/archivos>
        Require all granted
    </Directory>

    <Directory /home/developer/myproject/myapp>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    WSGIDaemonProcess myproject python-path=/home/developer/myproject:/home/developer/myproject/projectvenv/lib/python3.4/site-packages
    WSGIProcessGroup myproject
    WSGIScriptAlias / /home/developer/myproject/projectsystem/wsgi.py


</VirtualHost>

如果我打开Debug = True,管理员和应用程序的CSS和JS再次开始工作,只有图像(媒体文件)没有。

1 个答案:

答案 0 :(得分:0)

感谢用户@ Nostalg.io的帮助(在问题的评论中找到他)我找到了一个解决方案(好吧,他找到了),有很多错误的配置和权限错误。

首先,我使用127.0.0.1:8000访问我的应用程序,这是一个DJango URL,这就是为什么文件没有服务的原因,我不得不使用apache。此外,在同一个文件上有两个虚拟主机,我删除了第一个。当我使用Ubuntu 14.04时,必须像/etc/hosts这样添加一个主机:127.0.0.1 django.myproject注意这是我在Virtualhost上的服务器名称。后来尝试进入django.myproject,但我有权限错误,因为我使用了这个:chown -R www-data:www-data /home/developer/myproject

之后,我仍然有权限错误,那是因为这个wsgi地址:

 <Directory /home/developer/myproject/myapp>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

与此匹配:

 WSGIScriptAlias / /home/developer/myproject/projectsystem/wsgi.py

wsgi.py在项目系统文件夹中,所以我改变了。

之后,我有500个错误,这是关于/ var / www /,apache无法访问日志文件,所以我在虚拟主机配置中添加了这个:

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

只是为了尝试,我按照此处给出的说明更改了/var/www所有者:errno 13 permission denied

还有我的媒体&#34;目录是&#34; archivos&#34;没有得到很好的解决,我改变了它的地址,现在一切正常:D。

我真的要感谢@ Nostalg.io,因为他向我发送了我用来解决这个问题的所有内容,并且还花时间阅读了我的所有错误日志。