django
  • django-templates
  • 2011-12-03 12 views 0 likes 
    0

    私のCSSファイルはProduction serverで動作しません。私はWSGIを使って配備しました。私の問題を解決してください。ありがとう css linkCSSファイルが本番サーバに表示されない

    <link href="{{ MEDIA_URL}}css/style.css" rel="stylesheet" type="text/css" /> 
    

    settings.py

    CURRENT_PATH = '/home/nibbler/code/project/ 
    MEDIA_ROOT = os.path.join(CURRENT_PATH, 'templates/media') 
    
    MEDIA_URL = '/media/' 
    TEMPLATE_DIRS = (
        os.path.join(CURRENT_PATH, 'templates/temp_name'), 
    ) 
    

    site-available\default

    <VirtualHost *:80> 
        ServerAdmin [email protected] 
        ServerName project.org 
        DocumentRoot "/home/nibbler/code/project/" 
        ServerName localhost 
        ErrorLog "/home/nibbler/code/project/logs/apache-error.log" 
        CustomLog "/home/nibbler/code/project/logs/apache-access.log" common 
    
        Options ExecCGI FollowSymLinks MultiViews 
    
        AddHandler wsgi-script .wsgi 
        WSGIDaemonProcess nibbler 
        WSGIProcessGroup nibbler 
    
        Alias /media /home/nibbler/code/project/templates/media/ 
        WSGIScriptAlias//home/nibbler/code/project/apache/django.wsgi 
    
        DirectoryIndex index.html index.cgi 
    
        AddHandler cgi-script .cgi .pl 
    </VirtualHost> 
    

    urls.py

    if settings.DEBUG: 
        # static files (images, css, javascript, etc.) 
        urlpatterns += patterns('', 
         (r'^media/(?P<path>.*)$', 'django.views.static.serve', { 
         'document_root': settings.MEDIA_ROOT})) 
    

    答えて

    1

    あなたが持っている:開始のための

    Alias /media /home/nibbler/code/project/templates/media/ 
    

    間違っています。試してみてください:

    Alias /media/ /home/nibbler/code/project/templates/media/ 
    

    彼らは両方とも最後のスラッシュないか、どちらもそれを持っている必要があります。あなたはそれを持っていることはできませんし、他の人はそれを持っていないことができます。

    ところで、持つ:

    DocumentRoot "/home/nibbler/code/project/" 
    

    は悪い考えです。 DocumentRootをコードの場所に設定しないでください。何らかの理由でWSGISriptAliasを削除する場合は、すべてのコードを外部の人がダウンロードできます。

    また、WSGIスクリプトファイルと静的ファイルが存在する場所でAllowディレクティブが含まれているディレクトリブロックもありません。これは、このバーチャルホストの外にApache設定が変更されたことを意味します。これはApacheがあなたのボックスの任意のディレクトリからファイルを提供することができるということを意味します。

    +0

    MEDIA_ROOTと同じ扱いです。 settings.pyにはスラッシュはありません。 –

    +0

    @Graham Dumpleton Iveが変更されました。しかし、働いていない。 – Kulbir

    +0

    あなたは静的なメディアファイルにアクセスしようとしましたが、あなたはあなたが得るHTTPエラーを解決するために期待しているURLですか?あなたのページのHTMLソースコードを見て、返されるものが正しいことを確認しましたか?どのようにDIrectory/Allowが行方不明ですか? –

    0

    CSSファイルまたはすべてのメディアファイルにのみ問題がありますか?

    MEDIA_ROOT - システム上のファイルへのフルパスである必要があります。 MEDIA_URL - メディアファイルに完全なURLを入力してください。完全なURLを使用して手作業でそれらにアクセスし、Webサーバーがそれらを正しく提供しているかどうかを確認してください。はいの場合は、完全なURLをMEDIA_URLに入れます。

    if settings.DEBUGで最後に示したことは、本番環境では必要ありません。プロダクションサーバーでDEBUG = Falseを設定することが本当に必要です。

    ちなみに、Djangoは、Djangoアプリケーション自体のためのものと、メディアのためのもう1つの仮想ホスト(ここでは、httpサーバで直接静的コンテンツを提供します。少し助け

    希望...

    関連する問題