web-dev-qa-db-ja.com

Django Apacheをホストする静的ファイル

私が取り組んでいるDjangoサイトを、開発サーバーの段階から実際のホスティング環境に移動しようとしています。当面は、個人のマシンでホストしているだけです。 。すでにApacheとmod-wsgiをインストールしていますが、静的ファイルの取得に問題があります。Apacheに関係していると確信しています。サイトの構成ファイルは次のとおりです。

<VirtualHost *:80>

    ServerName localhost
    ServerAlias daifotis.dyndns.org
    ServerAdmin [email protected]

    DocumentRoot /home/daifotis/code/

    Alias /media/ /home/daifotis/code/feris/sitestatic
    Alias /static/ /home/daifotis/code/feris/sitestatic
    #AliasMatch ^/([^/]*\.css) /home/daifotis/code/feris/sitestatic/$1

    <Directory /home/daifotis/code/feris/sitestatic>
        Order allow,deny
        Allow from all
    </Directory>

    <Directory /home/daifotis/code/feris>
        Order allow,deny
        Allow from all
    </Directory>

    <Directory /home/daifotis/code/feris/jobsite>
        Order allow,deny
        Allow from all
    </Directory>

    WSGIDaemonProcess feris processes=2 threads=15 display-name=%{GROUP}
    WSGIProcessGroup feris

    WSGIScriptAlias / /home/daifotis/code/feris/Apache/Django.wsgi

    <Directory /home/daifotis/code/feris/Apache>
        Order allow,deny
        Allow from all
    </Directory>

</VirtualHost>

Staticでエイリアスしたディレクトリからファイルをホストしようとしています。サイトを読み込もうとすると、すべてのコンテンツが表示されますが、CSSは表示されません。また、URL www.server.com/static/にアクセスすると、ディレクトリの適切なコンテンツを含むページが表示されます。しかし、私が理解していないのは、リンクをクリックしてファイルを表示すると、URLが存在しないと表示される理由です。私はしばらくこれに固執しているので、どんな助けでも大歓迎です。

21
themaestro

理解した。この行でApache構成エラーが発生しました:

Alias /static/ /home/daifotis/code/feris/sitestatic

末尾にスラッシュを付けずにstaticと書くべきでした。末尾にスラッシュがあると、ApacheはURLパスを展開しません。

Alias /static /home/daifotis/code/feris/sitestatic
45
themaestro

Django 1.3、および静的ファイルを提供する「新しい」方法を使用していると想定しています。MEDIAおよびに関連するsettings.pyファイルの設定を教えてください。 STATIC?ROOTバージョンとURLバージョンの両方。STATICFILES_DIRSも表示します。

最も可能性の高い原因は、Djangoがcontrib.staticfilesの静的ファイルのみを提供するように構成されていることです。すべてを収集するには管理コマンドpython manage.py collectstaticを実行する必要がある可能性がありますアプリケーションの静的ファイルを、Apacheが提供できるディレクトリに配置します。

Django.contrib.staticfilesを使用するための設定については、 ここでの私の答え を参照してください。

Alias /static/ /home/daifotis/code/feris/sitestaticが指すディレクトリに静的ファイルが100%存在する場合は、Apacheのアクセス許可が正しく構成されていない可能性があります。静的コンテンツを提供しようとしたときにIOPermissionsエラーがあるかどうかを確認するために、/var/log/httpd/error_logファイルをチェックしましたか?

3
Josh Smeaton