簡體   English   中英

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

[英]Trouble serving MEDIA and STATIC files of Django in 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上提供靜態和媒體文件的原因。 在基本配置下,一切似乎都可以正常運行,但是圖像又停止了工作,在嘗試了一些配置后,我的App 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,則Admin和App的CSS和JS重新開始工作,只有圖像(媒體文件)不起作用。

感謝用戶@ 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在projectystem文件夾中,所以我更改了它。

在那之后,我出現了500個錯誤,這是關於/ var / www /的問題,apache無法訪問日志文件,因此我在virtualhost配置中添加了該錯誤:

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權限被拒絕

而且我的“媒體”目錄(即“ archivos”)的地址也不盡人意,我更改了地址,現在一切正常:D。

我真的要感謝@ Nostalg.io,因為他向我發送了我用來解決此問題的所有信息,而且他還花了一些時間閱讀我的所有錯誤日志。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM