2017-04-08 5 views
0

mod_wsgi 4.5.15とPython 3.5.3を仮想環境として使用してApache 2.4.7にDjango 1.8.17アプリケーションを提供するように奮闘しています。これは私がマシン上に持っている唯一の仮想環境です(Linux Mint 17.3)。Apache、Django、およびmod_wsgiでレンダリングされないCSS CSS

すべての動的コンテンツが送信されますが、静的コンテンツのすべてではありません。

  • 私のプロジェクトにはいくつかのアプリケーションがあります。私はcollectstaticを実行すると、想定されているように1つの正しい場所にそれらをすべて配置しているようです。私はそれらすべてをチェックし、彼らはすべてそこにいる。

  • "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は静的コンテンツを見ることはできません。

答えて

0

Doing chown -R www-data:www-dataは実際にあなたが望むものではありません。それは以前どんなユーザーであってもかまいません。重要なのは、静的ファイルのアクセス権がo+rxで、ファイル自体がo+rのディレクトリまでのすべてのディレクトリです。間違った権限を持つ階層まで階層内のどこかにディレクトリがある場合、Apacheユーザーはディレクトリから何も読み取ることができません。しかし間違って見えます

事がある:

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

これらは、Apacheの設定にあるものと一致しません。

のいずれかにそれらを変更します。Aliasディレクティブの最初の引数はMEDIA_URLSTATIC_URLと一致している必要があり

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> 

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

かにApacheの設定を変更します。

+0

パーフェクト。ありがとう、グラハム。私は今起きている。 – Pat

関連する問題