2016-08-11 75 views
0

我正在使用Django 1.8,python 3.4.3和Apache 2.4.7,我嘗試了很多配置,我看不到我做錯了什麼。當我使用調試模式下的一切,但圖像正在運行完美,我用這對urls.py解決圖像問題:服務Django的媒體和靜態文件在Apache中的問題

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 [email protected] 
    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> 

如果我把調試=真,CSS和管理的JS和App再次開始工作時,只有圖像(媒體文件)不。

+0

此問題通常是由靜態文件目錄上的文件夾/文件權限引起的。例如,如果以root身份運行collectstatic,Apache將無法訪問這些文件。檢查Apache日誌中的權限錯誤。你在使用什麼操作系統? –

+0

@ Nostalg.io我在'/ var/log/apache2'上檢查了訪問和錯誤日​​志,每個文件都有5個文件,但我認爲沒有任何相關性。在訪問中有兩行重複,一個是關於'dummy connection'的說法,另一個是關於'fav.ico'的說法,而在錯誤中我只看到這個重複的每個文件'無法可靠地確定服務器的完全限定域名字'。我正在使用Ubuntu 14.04。謝謝,這可能永遠不會超出我的想法。 – elG

+0

@ Nostalg.io我忘了檢查其中一個錯誤文件,在'/ usr/lib/python3'中有很多'AssertionError:斷言tlock不是None',還有''模塊'線程'中被忽略的異常。 4/threading.py'>' – elG

回答

0

感謝用戶@ Nostalg.io(在問題的評論中找到他)的幫助,我找到了一個解決方案(嗯,他發現了它),有很多錯誤的配置和權限錯誤。

首先,我使用127.0.0.1:8000來訪問我的應用程序,這是一個DJango的URL,這就是爲什麼文件沒有服務,我不得不使用Apache的。另外,在同一個文件上有兩個虛擬主機,我刪除了第一個虛擬主機。而當我使用Ubuntu 14.04時,必須添加一個/etc/hosts這樣的主機:127.0.0.1 django.myproject請注意,這是我在虛擬主機上的服務器名稱。後來試圖進入到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 /,腳本阿帕奇無法查看在日誌文件,所以我加了這個我的虛擬主機配置中:

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

而且我的「媒體」目錄是「archivos」沒有得到很好的滿足,我改變了它的地址,現在一切正常:D。

我真的要感謝@ Nostalg.io,因爲他向我發送了我用來解決這個問題的一切,並且他花時間閱讀我所有的錯誤日誌。

相關問題