運用環境で,Apacheによる静的ファイルの提供

764 views
Skip to first unread message

Hironori

unread,
Sep 19, 2012, 7:46:16 PM9/19/12
to djan...@googlegroups.com
hironoriと申します.
運用環境で質問です.
運用環境で静的ファイルを扱うのはDjangoよりApacheの方が高速
であるのは調べて分かったのですが,

具体的にApacheのどのファイルを編集すれば
静的ファイルを表示できるのかがわかりません.

昨日,実行したのは以下のプロセスです.
【環境】
Django ver 1.4.1
Apache ver 2.2.15
mod_python 3.3.1

【プロセス】
1.collectstaticで静的ファイルをSTATIC_ROOTで指定したディレクトリにまとめる

2.Apache設定ファイルに以下を追記
$sudo nano /etc/httpd/conf/httpd.conf
Alias /static/ /var/www/django/ticket/ticket/static/
<Directory /var/www/django/ticket/ticket/static>
    Order deny,allow
    Allow from all
</Directory>

3.Apache設定読み込み
sudo /etc/init.d/httpd restart

なのですが/static/layout.cssが反映されませんでした.
どなたかご教授お願いします.

参考
[Django]staticfilesの使い方




INADA Naoki

unread,
Sep 20, 2012, 8:30:05 PM9/20/12
to djan...@googlegroups.com
ぱっと見た目では問題無さそうに見えます。

CSSが反映されない場合、ブラウザのデバッグ機能か Apache のアクセスログで、
CSSへのアクセスがどのURLに行っていて、どのエラーになっているのか確認してください。

あとは、 WSGIScriptAlias の設定を削除して CSS を単体でダウンロードしようとしたら
ダウンロードできるかどうか、 WSGIScriptAlias と Alias の前後を入れ替えたらどうなるかも
試してみてください。


2012/9/20 Hironori <gc.vil...@gmail.com>:
> --
> ----------------- http://djangoproject.jp/ -----------------
> You received this message because you are subscribed to the Google Groups
> "django-ja" group.
> To post to this group, send email to djan...@googlegroups.com
> To unsubscribe from this group, send email to
> django-ja-...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/django-ja



--
INADA Naoki <songof...@gmail.com>

Hironori

unread,
Sep 21, 2012, 2:44:16 AM9/21/12
to djan...@googlegroups.com
Daigo SAKAMOTOさん
INADA Naokiさん
ご返信ありがとうございます.

どうやらApacheの設定の中でDjangoについての記述が間違っていました.

-----------------------------------------------------------------------
修正前→<Location "/">
修正後→<Location "/top/"> 

$sudo nano /etc/httpd/conf.d/python.conf
<略>

<Location "/top/">  #←間違い
        SetHandler python-program
        PythonHandler django.core.handlers.modpython
        PythonOption django.root /ticket
        SetEnv PYTHON_EGG_CACHE /var/www/django/ticket/.python-eggs
        PythonPath "['/var/www/django/ticket'] + sys.path"    #ここのpath重要
        SetEnv DJANGO_SETTINGS_MODULE ticket.settings
        PythonDebug On
</Location>
--------------------------------------------------------------------------------------------
【<Location "/top/">  の意味】
#"/top/"以下の全ての URL は mod_python で処理し、 
#処理には Django mod_python ハンドラを使うように」命令します。
#また、 DJANGO_SETTINGS_MODULE を渡して、 
#mod_python にどこに設定ファイルがあるのか教えます。

<Location "/"> 
であると,URL /static/ もmod_pythonで処理されてしまい
ApacheでURL /static/ で静的ファイルにアクセスできない.

かなり初歩的なミスで本当に申し訳ありませんでした.
インストール後の設定をいろいろなサイトを意味を考えず,
そのまま使った結果のミスです.

Kosei Kitahara

unread,
Sep 21, 2012, 3:42:12 AM9/21/12
to djan...@googlegroups.com
北原と申します。

もう解決しているかもしれませんが、
apache の Location, Files, Directory 等のセクションの優先順位, 注意事項が以下にまとめられています。

http://httpd.apache.org/docs/current/sections.html#mergin

* Directory, Files, Location の順
* Files, Location は設定ファイル記載順
* Directory はディレクトリ名が短い順、設定ファイル記載順、正規表現順

に評価されます。

ご参考まで。

Kosei Kitahara... 〆(..


2012/9/21 Hironori <gc.vil...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages