2016-06-26 66 views
0

我花了整整一天的時間。我無法獲取我的靜態文件。我的Django應用程序工作正常。我正在使用:Python 3.4,Django 1.8.13,mod_wsgi 4.5.2。我已經使用SO中的其他問題解決了我的httpd.conf中的大部分錯誤。做這項工作還需要什麼。沒有通過Apache爲Django應用程序提供靜態文件

的httpd.conf

ServerRoot "/home/rajkumar2014/webapps/allure/apache2" 

LoadModule authz_core_module modules/mod_authz_core.so 
LoadModule dir_module  modules/mod_dir.so 
LoadModule env_module  modules/mod_env.so 
LoadModule log_config_module modules/mod_log_config.so 
LoadModule mime_module  modules/mod_mime.so 
LoadModule rewrite_module modules/mod_rewrite.so 
LoadModule setenvif_module modules/mod_setenvif.so 
LoadModule wsgi_module  modules/mod_wsgi.so 
LoadModule unixd_module  modules/mod_unixd.so 
LoadModule alias_module  modules/mod_alias.so 

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 
CustomLog /home/rajkumar2014/logs/user/access_allure.log combined 
ErrorLog /home/rajkumar2014/logs/user/error_allure.log 

Listen 21188 
KeepAlive Off 
SetEnvIf X-Forwarded-SSL on HTTPS=1 
ServerLimit 1 
StartServers 1 
MaxRequestWorkers 5 
MinSpareThreads 1 
MaxSpareThreads 3 
ThreadsPerChild 5 

WSGIRestrictEmbedded On 
WSGILazyInitialization On 

<VirtualHost *:21188> 

    Alias /media "/home/webapps/allure_media" 
    Alias /static "/home/webapps/allure_static" 

    <Directory /home/rajkumar2014/webapps/allure_media> 
    Require all granted 
    </Directory> 

    <Directory /home/rajkumar2014/webapps/allure_static> 
    Require all granted 
    </Directory> 

    WSGIDaemonProcess allure processes=2 threads=12 python-path=/home/rajkumar2014/webapps/allure/allure:/home/rajkumar2014/webapps/allure/lib/python3.4/site-packages:/home/rajkumar2014/webapps/allure/lib/python3.4 
    WSGIProcessGroup allure 

    WSGIScriptAlias//home/rajkumar2014/webapps/allure/allure/allure/wsgi.py 
    <Directory /home/rajkumar2014/webapps/allure/apache2> 
    Require all granted 
    </Directory> 

</VirtualHost> 

settings.py

STATIC_URL = '/static/' 

STATIC_ROOT = '/home/rajkumar2014/webapps/allure_static/' 

STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),) 

# Media files (All user uploaded content) 

MEDIA_ROOT = '/home/rajkumar2014/webapps/allure_media/' 

MEDIA_URL = '/media/' 

請幫助。

回答

1

我是djano/python自己的新手,上個月爲我的第一個django應用進行了這場戰鬥......我不是服務器管理員,所以我不能說你到底在做什麼錯誤,但看起來你的語法是不是我做了什麼有點不同,我有它喜歡

Alias /static/ /home/ksjdsd3/public_html/mysite/static/ 
<Directory /home/ksjdsd3/public_html/mysite/static> 
    Require all granted 
</Directory> 

最引人注目的是有/後,靜態和目錄的路徑是不是在

0

我曾經有提供靜態文件,Webfaction麻煩報價,這取決於我安裝Django的方式(使用webfaction安裝程序,你可以設置一個完整的django應用程序或只是一個Apache/mod_wsgi應用程序,您可以在其中部署您的django版本)。

Webfaction有一個額外的nginx進程運行在根級服務靜態文件。所以你應該檢查訪問控制列表 - ACLs

對我來說這個ACL曾經是問題,nginx用戶沒有讀取權限到靜態文件夾。

因此,也許你可以登錄到UNIX終端上webfaction和運行getfacl(你應該得到類似這樣的輸出的東西):

[[email protected] ~]$getfacl /home/rajkumar2014/webapps/allure_static/ 

# file: home/rajkumar2014/webapps/allure_static/ 
# owner: rajkumar2014 
# group: rajkumar2014 
user::rwx 
user:apache:r-x 
user:nginx:r-x 
group::rwx 
mask::rwx 
other::r-x 

[[email protected] ~]$ getfacl /home/rajkumar2014/webapps/allure/allure/allure/wsgi.py 
getfacl: Removing leading '/' from absolute path names 
# file: home/rajkumar2014/webapps/allure/allure/allure/wsgi.py 
# owner: rajkumar2014 
# group: rajkumar2014 
user:apache:r-x 
user:nginx:r-x 
group::rw- 
mask::rwx 
other::-- 

的IDEEA是,apache用戶和nginx的用戶應該已經讀訪問到您的靜態文件夾以及wsgi.py(如果它是從外部來源 - 您的筆記本電腦上傳)。

而且在日誌中檢查錯誤,並引用您的靜態文件夾:

  • 前端日誌,提供靜態Nginx的過程;位置:

    /home/rajkumar2014/logs/frontend/

  • 用戶登錄時,用戶安裝的應用程序(如Django的

    /home/rajkumar2014/logs/user/

我很想知道:

  • 你使用Webfaction Django安裝程序嗎?
  • 您是否創建了webfaction app to serve static assets
  • 您可以在frontend日誌中找到對您的靜態文件夾的引用嗎?
  • 你有一箇舊的(Centos 6.5,Apache 2.2)或新的(Centos 7,Apache 2.4)Webfaction計劃?

更多關於這在Webfaction Docs

相關問題