簡體   English   中英

CSS不使用Apache,Django和mod_wsgi渲染

[英]CSS Not Rendering with Apache, Django, and mod_wsgi

我正在努力使Apache 2.4.7使用mod_wsgi 4.5.15和Python 3.5.3作為虛擬環境來為Django 1.8.17應用程序提供服務。 這是我在計算機上擁有的唯一虛擬環境(Linux Mint 17.3)。

所有動態內容都通過,但並非所有靜態內容都通過。

  • 我的項目中有幾個應用程序,當我運行collectstatic時,似乎將它們全部都放置在了一個應有的正確位置。 我檢查了所有的,他們都在那里。

  • 我已使用“ sudo chown -R www-data:www-data ...”授予該位置的所有文件權限。

  • 我已經修改了我的Apache虛擬主機文件,以使用絕對路徑添加指向我的“媒體”和“靜態”目錄的別名。

  • 當那行不通時,我修改了settings.py並嘗試將確定STATIC_ROOT和STATICFILES_DIRS的動態代碼更改為絕對路徑(這也不起作用,我將它們改回了)

 home/magic-rat/ | |_____+virtualenvs | | | |+ektropy_project | | | |+lib | | | |+python3.5 | | | |+site_packages | |_____+ektropy_project | |-manage.py |+static (for pinax) | | | |+dist | |+src | |+ektropy_project | |-wsgi.py | |+site_media | |+media STATIC HERE=> |+static | |+admin |+bootstrap |+css |+fonts |+js |+pinax 

Apache虛擬主機:

Alias /media /home/magic-rat/ektropy_project/ektropy_project/site_media/media
<Directory /home/magic-rat/ektropy_project/ektropy_project/site_media/media>
    Require all granted
</Directory>

Alias /static /home/magic-rat/ektropy_project/ektropy_project/site_media/static
<Directory /home/magic-rat/ektropy_project/ektropy_project/site_media/static>
    Require all granted
</Directory>

WSGIDaemonProcess ektropy_project python-home=/home/magic-rat/virtualenvs/ektropy_project python-path=/home/magic-rat/ektropy_project
WSGIProcessGroup ektropy_project
WSGIApplicationGroup %{GLOBAL}
WSGIScriptAlias / /home/magic-rat/ektropy_project/ektropy_project/wsgi.py

<Directory /home/magic-rat/ektropy_project/ektropy_project>
    <Files wsgi.py>
       Require all granted
    </Files>
 </Directory>

Settings.py的相關部分:

    import os

PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir))
PACKAGE_ROOT = os.path.abspath(os.path.dirname(__file__))
BASE_DIR = PACKAGE_ROOT

MEDIA_ROOT = os.path.join(PACKAGE_ROOT, "site_media", "media")

MEDIA_URL = "/site_media/media/"

STATIC_ROOT = os.path.join(PACKAGE_ROOT, "site_media", "static")

STATIC_URL = "/site_media/static/"

# Additional locations of static files
STATICFILES_DIRS = [
    os.path.join(PROJECT_ROOT, "static", "dist"),
]

# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = [
    "django.contrib.staticfiles.finders.FileSystemFinder",
    "django.contrib.staticfiles.finders.AppDirectoriesFinder",
]

ROOT_URLCONF = "ektropy_project.urls"

WSGI_APPLICATION = "ektropy_project.wsgi.application"

我真的很茫然。

“ django.contrib.staticfiles”位於“ INSTALLED_APPS”中

沒有拋出任何錯誤。 Apache錯誤日志是干凈的。 Apache只是看不到靜態內容。

chown -R www-data:www-data並不是您真正想要的。 它仍然可以是以前的任何用戶。 關鍵是直到靜態文件所在目錄的所有目錄都具有o+rx權限,而文件本身是o+r 如果層次結構中的任何位置的目錄都具有錯誤的權限,則Apache用戶將無法從目錄中讀取任何內容。

看起來不對的地方是:

MEDIA_URL = "/site_media/media/"
STATIC_URL = "/site_media/static/"

這些與Apache配置中的不匹配。

可以將它們更改為:

MEDIA_URL = "/media/"
STATIC_URL = "/static/"

或將Apache配置更改為:

Alias /site_media/media /home/magic-rat/ektropy_project/ektropy_project/site_media/media
<Directory /home/magic-rat/ektropy_project/ektropy_project/site_media/media>
    Require all granted
</Directory>

Alias /site_media/static /home/magic-rat/ektropy_project/ektropy_project/site_media/static
<Directory /home/magic-rat/ektropy_project/ektropy_project/site_media/static>
    Require all granted
</Directory>

Alias指令的第一個參數應匹配MEDIA_URLSTATIC_URL

暫無
暫無

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

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