2011-04-15 125 views
15

我想移動一個Django站點,我一直在開發出dev服務器階段並進入真正的託管環境。目前,我只是在我的個人電腦上託管。我已經安裝了Apache和mod-wsgi,但是我遇到了獲取靜態文件的問題。我很確定它與Apache有關。這裏是我的網站的配置文件:Django靜態文件託管一個Apache

<VirtualHost *:80> 

    ServerName localhost 
    ServerAlias daifotis.dyndns.org 
    ServerAdmin [email protected] 

    DocumentRoot /home/daifotis/code/ 

    Alias /media/ /home/daifotis/code/feris/sitestatic 
    Alias /static/ /home/daifotis/code/feris/sitestatic 
    #AliasMatch ^/([^/]*\.css) /home/daifotis/code/feris/sitestatic/$1 

    <Directory /home/daifotis/code/feris/sitestatic> 
     Order allow,deny 
     Allow from all 
    </Directory> 

    <Directory /home/daifotis/code/feris> 
     Order allow,deny 
     Allow from all 
    </Directory> 

    <Directory /home/daifotis/code/feris/jobsite> 
     Order allow,deny 
     Allow from all 
    </Directory> 

    WSGIDaemonProcess feris processes=2 threads=15 display-name=%{GROUP} 
    WSGIProcessGroup feris 

    WSGIScriptAlias//home/daifotis/code/feris/apache/django.wsgi 

    <Directory /home/daifotis/code/feris/apache> 
     Order allow,deny 
     Allow from all 
    </Directory> 

</VirtualHost> 

我想從我用靜態目錄我別名主機的文件。當我嘗試加載網站時,所有內容都出現了,但沒有CSS。另外,當我打開我的網址www.server.com/static/時,頁面會顯示目錄的正確內容。我不明白的是,爲什麼如果我點擊一個鏈接來查看一個文件,它說URL不存在。我一直堅持這一段時間,所以任何幫助將不勝感激。

+0

你使用的是什麼版本的Django?你在使用contrib.staticfiles嗎? – 2011-04-16 00:25:21

+0

那麼愚蠢,我有靜態目錄別名後,一個額外的斜槓在我的Apache的配置! *搖頭* – themaestro 2011-04-16 02:47:58

回答

37

想通了。我在這一行有一個Apache配置錯誤:

Alias /static/ /home/daifotis/code/feris/sitestatic 

我應該寫靜態沒有結尾的斜槓。使用尾部的斜線Apache不會擴展URL路徑。

Alias /static /home/daifotis/code/feris/sitestatic 
+8

善良,感謝張貼!我只是花了幾個小時跟蹤並放棄。 – aterrel 2013-04-24 21:41:06

+2

和我一樣..他們真的應該改變官方文檔中的東西 – 2014-03-12 12:43:24

3

我假設你正在使用Django 1.3,以及提供靜態文件的'新'方式。您能否向我們展示您的settings.py文件中有關MEDIA和STATIC的設置? ROOT和URL版本。同時顯示您的STATICFILES_DIRS。

最有可能的原因是Django僅配置爲使用contrib.staticfiles來提供靜態文件。可能需要運行管理命令python manage.py collectstatic將所有應用程序靜態文件收集到準備由apache提供服務的目錄中。

有關使用django.contrib.staticfiles的設置,請參閱my answer here

如果存在的靜態文件,100%,在指向的目錄Alias /static/ /home/daifotis/code/feris/sitestatic,那麼你的Apache權限可能配置不正確。您是否在檢查/var/log/httpd/error_log文件以查看嘗試提供靜態內容時是否存在IOPermissions錯誤?