0

mod_pythonを使用してapache2本番サーバーで実行しているdjangoWebアプリケーションがありますが、静的ファイルが見つかりません(css、images ...)

私たちの静的なものはすべて下にあります/var/my.site/example/static

/var/my.site/example/static/
                           |-admin/
                                  |-css/
                                  |-img/     
                           |-css/
                           |-js/
                           |-img/

今、私はすべてのリクエストを次のように静的なものにエイリアスできると思いました:

これはapache2confです:

<VirtualHost  123.123.123:443>
    ... SSL stuff ...
    RewriteEngine On    
    ReWriteOptions Inherit 
    <Location "/example">
        SetHandler python-program
        PythonHandler django.core.handlers.modpython
        SetEnv DJANGO_SETTINGS_MODULE example.settings
        PythonPath "[ \
            '/home/me/Envs/ex/lib/python2.6/site-packages',\
            '/var/my.site',\
            '/home/me/Envs/ex/lib/python2.6/site-packages/django',\
            '/home/me/Envs/ex/lib/python2.6/site-packages/MySQLdb',\
            '/var/my.site/example',\
            '/var/my.site/example/static'] + sys.path"
        PythonDebug Off

    </Location>

    Alias /example/static /var/my.site/example/static    
    <Directory /var/my.site/example/static>
        Order allow,deny
        Allow from all
    </Directory>

</VirtualHost>

これは私のsettings.pyです

...
STATIC_ROOT = '/var/my.site'
STATIC_URL = '/example/static/'
STATICFILES_DIRS = (
    "/var/my.site/example/static",
)
...

apache-errorログにエラーはありません。しかし、ここではapache-secure_access.logからログに記録します

[09/Aug/2012:12:37:55 +0200] "GET /example/admin/ HTTP/1.1" 200 6694
[09/Aug/2012:12:37:55 +0200] "GET /example/static/css/base.css HTTP/1.1" 301 468
[09/Aug/2012:12:37:55 +0200] "GET /example/static/img/logo.png HTTP/1.1" 403 766
[09/Aug/2012:12:37:55 +0200] "GET /example/static/css/base.css/ HTTP/1.1" 500 756
[09/Aug/2012:12:37:55 +0200] "GET /example/static/admin/css/dashboard.css HTTP/1.1" 301 622

しかし、これは機能せず、私が正しい方向に進んでいるかどうかはわかりません。設定すると機能しますが、それはDEBUG = Truedjangoがすべての静的ファイルを提供するからです。

私は何が間違っているのですか?

誰かが良いチュートリアルや例について知っていますか?

4

3 に答える 3

2

問題を段階的に解消してみてください。

静的ファイルのロードは、Djangoとは完全に独立して機能するはずです。構成内のDjangoに関連するすべての行をコメントアウトしてみてくださいVirtualHost。(構成を変更した後、Apacheをリロードすることを忘れないでください)

それが機能する場合は、Djangoが同じ名前空間内のURLを踏みにじるのを避けるために(おそらく?を使用して)より多くの手順を実行する必要があるかもしれませんSetHandler

そうでない場合は、静的ファイルにもっと基本的な問題があります。それを解決できない場合は、おそらくServerFaultが役立ちますか?

于 2012-08-09T16:54:38.003 に答える
2

@supervacuoがdjangoからすべてを削除するよう提案した後、静的ファイルを提供するためにapacheを取得し、何が問題であるかを認識しました。

問題は、それ<Location "/example">が優先されることでしたAlias /example/static。どこに置いてもかまいませんAlias(上または下<Location> - tag)。

それを修正するために、STATIC_URLとを変更しましたが、干渉しないように STATIC_ROOT変更することができましたAlias<Location> - tag

から:

STATIC_ROOT = '/var/my.site'
STATIC_URL = '/example/static/'

Alias /example/static /var/my.site/example/static

に:

STATIC_ROOT = '/var/my.site/example'
STATIC_URL = '/static/'

Alias /static /var/my.site/example/static   
于 2012-08-10T07:31:16.337 に答える
0

私が見ることができる唯一の問題はこれにあります:

"GET /example/static/css/base.css/ HTTP/1.1" 500 756

/base.css/は有効なリンクではないため、djangoに渡されます。また、URLパターンと一致しないため、500が発生します。誤った。を持つテンプレートを修正する必要があります/

于 2012-08-10T07:44:06.187 に答える