3

私はdjango開発サーバーを使用しているテストdjangoプロジェクトを持っています。実稼働環境を適切にシミュレートするために、実際の apache サーバーの使用を開始したいと考えています。Mac OS X を使用しています。

このチュートリアル hereを使用してきましたが、最初の一連の手順で、localhost から 403 を取得しています。サーバーにアクセスする権限がないとブラウザに表示/されます。

チュートリアルの apache config 行をコメントアウトすると、WSGIScriptAlias / /Users/username/Projects/django_books/django_books/django.wsgilocalhost にアクセスできます。

これは私の django.wsgi ファイルの内容です:

import os
import sys

os.environ['DJANGO_SETTINGS_MODULE'] = 'django_books.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

path = '/Users/username/Projects/django_books/django_books'
if path not in sys.path:
    sys.path.append(path)

403 の原因は何ですか? また、django アプリケーションが表示されないのはなぜですか?

編集

ディレクトリ構造:

django_books
    apache (empty directory right now)
    random_book
        __init__.py
        models.py
        views.py
    django_books
        __init__.py
        django.wsgi
        settings.py
        urls.py
        views.py
        wsgi.py
    media
    static
        css
            style.css
    manage.py

2回目の編集

すべてのディレクトリに対する権限:

/Users/username/Projects/django_books/django_books/django.wsgi

-rw-r--r--

/Users/username/Projects/django_books/django_books

drwxr-xr-x

/Users/username/Projects/django_books/

drwxr-xr-x

/ユーザー/ユーザー名/プロジェクト/

drwxr-xr-x

/ユーザー/ユーザー名/

drwxr-xr-x+

/ユーザー/

drwxr-xr-x
4

3 に答える 3

1

Apache のインストール、Python ライブラリ、またはファイル システムのアクセス許可に関連する問題である可能性があります。

アパッチのテスト

あなたはあなたの質問ではそれを言いませんが、あなたのリンクから、あなたは Apache2 とmod_wsgiで作業していると思います。

django.wsgi の代わりにダミーの wsgi スクリプトを配置することで、Apache と mod_wsgi (または wsgi モジュール) が適切に機能しているかどうかをテストできます。このスクリプト ( mod_wsgi の docsから盗んだもの) は Django に依存せず、Apache が wsgi スクリプトを読み取って実行できるようにするのに役立ちます。

# test version of django.wsgi
def application(environ, start_response):
    status = '200 OK'
    output = 'Hello World!'

    response_headers = [('Content-type', 'text/plain'),
                    ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]

そしてApacheを再起動します

sudo service apache2 restart

ページをテストします。うまくいきましたか?偉大な。django.wsgi スクリプトへの変更を元に戻し、Apache を再起動して、もう一度テストします。Django サイトがまだ機能しない場合は、引き続き調査する必要があります。テスト スクリプトが機能しない場合は、Apache のインストールに問題がある可能性があります。何が起こったのかについての詳細は、apache のエラー ログを確認してください。Linux では、一般的に/var/log/apache2/error.log. mod_wsgiスクリプトのデーモンが wsgi ファイルに対する適切な権限を持っていない可能性があります。

権限エラーの修正

Apache が wsgi ファイルを読み取って実行できない場合があります。ls -l他の回答に示されているように wsgi ファイルのディレクトリで実行すると、ファイルが属するユーザーとグループがわかります (そのユーザーとグループが特定のファイルを読み取り、書き込み、または実行できるかどうか)。デフォルトのインストールでは、次のような wsgi パーミッションを持つのが一般的です。

-rw------- 1 www-data www-data 1470 Aug 29 16:00 django.wsgi

デーモン プロセスに別のユーザーを使用する場合は、apache conf ファイルで次のように定義されていることを確認する必要があります。WSGIDaemonProccess

WSGIScriptAlias / /Users/username/Projects/django_books/django_books/django.wsgi
WSGIDaemonProcess wsgi_user processes=2 threads=15 display-name=%{GROUP}
WSGIProcessGroup wsgi_group

これらのファイルへの変更をテストし、Apache を再起動すると、問題を絞り込むことができます。Apache ログ ファイルを確認し続けます。

アパッチ構成

mod_wsgi のセットアップに関する Django のチュートリアルは優れていますが、mod_wsgi の wiki も読んでください。Apache conf ファイルには、WSGIScriptAlias. wsgi ファイルのあるフォルダーを指すタグがあることを確認してください。そのディレクトリに非公開ファイル (django プロジェクト ファイルなど) がある場合は、apache ディレクトリを使用する (apache conf ファイルを更新する) か、ノードの下にタグを追加して、それらの他のファイルを非公開にします。そこにいる間、不適切に構成されたサーバー名、複数の仮想ホスト、またはその他のエラーなど、他の問題に気付く場合があります。

Python のテスト

virtualenv を使用している場合 ( do it )、次のことを確認してください。 1.WSGIDaemonProcess変数は、適切なサイト パッケージと、変数の python-path 属性内の wsgi スクリプトの場所を定義します。 2. デーモンは、virtualenv 内のサイト パッケージを読み取る権限を持っています。 . 3. wsgi スクリプトが django とサイトの設定を適切にインポートします。

ロギング アパッチ

Apache conf ファイルに数行を追加することで、Apache によって報告されるログのレベルを上げることができます。この設定により、展開中に必要になる可能性のある非常に詳細なログが得られます (必ずログ フォルダーを作成してください)。

LogLevel info
ErrorLog /Users/username/Projects/django_books/logs/apache_error.log
CustomLog /Users/username/Projects/django_books/logs/apache_access.log combined
于 2013-08-29T22:18:07.513 に答える
0

www-data (または apache を実行しているユーザー) が/Users/username/Projects/django_books/django_books.

suそのユーザーに、そのディレクトリとその中の wsgi ファイルにアクセスしてみてください。

関連するすべての権限を出力するには:

ls -ld /Users /Users/username /Users/username/Projects /Users/username/Projects/django_books /Users/username/Projects/django_books/django_books /Users/username/Projects/django_books/django_books/django.wsgi

また、apache エラー ログを確認する必要があります。何が問題なのかがわかる場合があります。

于 2013-08-29T14:53:06.773 に答える