この問題は数日間私を苦しめてきました。私は Raspberry Pi で Apache、WSGI、および django を使用しています。オペレーティング システムは Raspbian です。
Apache からのこのエラー以外はすべて正常です。
[error] [client 127.0.0.1] Target WSGI script not found or unable to stat: /home/pi/EZ_Green/apache/ems_gateway_django.wsgi
私の設定ファイルはこんな感じで、とても簡単です
WSGIDaemonProcess ems.ezgreenbuildings.com processes=1 maximum-requests=100 threads=10
WSGIScriptAlias / /home/pi/EZ_Green/apache/ems_gateway_django.wsgi
ファイル パスは確かにフル パスです。つまり、ファイルは存在します。次に、Apache サーバー プロセスにファイルへのアクセス許可がないと考え、wsgi ファイルのモードを 777 に変更しました。しかし、それでも同じエラーが報告されます。
しばらく検索して、いくつかの方法を試しました。
- wsgi ファイルを別のフォルダ (たとえば '/var/www') に移動しましたが、それでも見つかりません。
- Apache を再インストールしようとしましたが、機能しません。
- 末尾のスラッシュを削除
奇妙なことに、wsgi 構成ファイルを削除すると、Apache は正常に動作します。また、django が提供するテスト サーバーを実行すると、django 自体も正常に動作します。
どなたか助けていただけるととても嬉しいです。ありがとうございます!
答え1
SELinux 拡張機能が有効になっていて、Apache がファイルが存在するディレクトリにアクセスできないようになっていますか?
ホーム ディレクトリの権限は Apache アクセスを許可しますか? ファイルが読み取り可能であるだけでは不十分で、その下のすべてのディレクトリにもアクセスできる必要があります。
関係ありませんが、リクエストが実際にデーモン プロセスで実行されるように委任されるように、WSGIDaemonProcess に対応する WSGIProcessGroup ディレクティブはありますか?
最後に、「processes=1」はデフォルトで単一のプロセスになるため、省略できます。また、「processes」を任意の数に設定すると、WSGI 環境でマルチプロセス構成であることがフラグ付けされるため、他の影響があります。