私は、次のApacheの設定で少しDjangoプロジェクトにサービスを提供しようとしている:Apacheの 'ジャンゴ' という名前のモジュール
ApacheのVirtualHostの設定:
<VirtualHost *>
ServerName servername
[...]
<Directory "/path/to/project/project">
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess project python-path=/path/to/project:/path/to/Envs/venv/lib/python3.5/site-packages
WSGIScriptAlias//path/to/project/project/wsgi.py
</VirtualHost>
私は静的ファイルやメディアファイルを提供するために何の問題もない
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "example.settings")
application = get_wsgi_application()
:私はまた、次のwsgi.pyを持っています。
私もパーミッションをチェックし、再帰的に755を使用してから、777をvirtualenvのサイトパッケージディレクトリに使用しようとしました。それはうまくいかなかった。
しかし、私のサイトのルートに到達しようとしたとき、私は、次を得る:
from django.core.wsgi import get_wsgi_application
ImportError: No module named 'django'
私はジャンゴが、私はvirtualenvにインストールされているので、それは関連の問題Pythonパスであったことを推測しました。しかし、関連するpythonパスをWSGIDaemonProcess
のpython-path
属性に追加しました。なぜそれが機能しないのか分かりません。
私もadd the relevant directory to my Python path in my wsgi.py by using the site
moduleと思うかもしれませんが、なぜ私が試したApacheの設定では十分ではないのか理解したいと思います。私は何か見落としてますか?
Python 3.4または2.7を使用している場合は、依然として '' python-home''を使用するべきです。私は '' python-path''を設定する以外の方法を使用することに問題はないことを知っていますが、単にあなたがしなければならないことではありません。 '' python-home''オプションは、長い間、仮想環境の場所を設定する最良の方法でした。古いmod_wsgiバージョンのLinuxディストリビューションでさえ、まだまだ機能するはずです。これは、ドキュメントがまだ更新されていない場合でもそうです。 :-) –
@ graham-dumpletonご助言ありがとうございます。しかし、私の場合、私はpython 3.4を使用しています。設定はあなたが言及したように "python-home"の方法でした。しかし、Apacheは「Import Error:No site named 'site'」というエラーを送信し続けるため、私のサイトにアクセスすることはできません。私が「好きではない方法」に設定している限り、質問者のように「:」を使用すると、この問題は解決されました。そして、はい、Python 3.5の場合は、 "python-home"を使用するか、[ImportError: 'django'という名前のモジュールはありません]という問題が発生します。 – Valorad
これは、あなたのmod_wsgiがそのバージョンのPython用に実際にはコンパイルされていないことを意味します。 mod_wsgiにコンパイルされたバージョンとは異なるPythonバージョンを使用させることはできません。 '' python-path''を使用する際の問題の1つは、間違ったことをして、mod_wsgiがコンパイルされたものとは異なるPythonバージョンのために仮想環境を使用するようmod_wsgiに強制しようとしたときにも表示されないことです。 '' python-home''を使うと、代わりに正しく失敗し、あなたが何か間違っていることを伝えます。 –