組織内で使用するための django サイトを作成しています。このチュートリアルで説明するサイトの開発には、テスト駆動型のアプローチを使用しています。それが良い方法だと思うからです。私はUbuntu 12.04を使用しており、リポジトリからapacheサーバーとmod_wsgiを使用しています。私の開発は、virtualenvwrapper を使用して作成された virtualenv で行われています。
できるだけ本番サーバーに近い条件でサイトをテストしたいので、mod_wsgi を使用してラップトップでローカルの Apache サーバーを構成しようとしていますが、これまでに行ったことはありません。mod_wsgiとdjangoのドキュメントの関連する部分を読み、このビデオを見て、ファイルのアクセス許可で発生していた問題を解決しました。しかし、私はプレゼンテーションが対処していない最後のハードルで立ち往生しているようです.django 1.4を使用していて、それが以前のバージョンに関連しているためだと思いますが、よくわかりません. サイトには検索が必要なため、django 開発サーバーではなくローカルの apache サーバーを使用することに専念しています。これは、haystack と apache solr を介して取得したいためであり、展開する前にテストして問題を解決したいと考えています。
私の wsgi.py ファイルは、標準の django ファイルです。docstring をトリミングすると、次のようになります。
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "fugit.settings")
# This application object is used by any WSGI server configured to use this
# file. This includes Django's development server, if the WSGI_APPLICATION
# setting points here.
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
# Apply WSGI middleware here.
# from helloworld.wsgi import HelloWorldApplication
# application = HelloWorldApplication(application)
私の httpd.conf は次のようになります。
WSGIScriptAlias / /var/www/djcode/fugit/fugit/fugit/apache/wsgi.py
WSGIPythonPath /var/www/djcode/fugit/fugit/fugit:/home/garry/.virtualenvs/fugit/lib/python2.7/site-packages
<Directory /var/www/djcode/fugit/fugit/fugit>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
localhost にアクセスすると、次のエラーが表示されます。PYTHONPATH の問題のように見えますが、django のドキュメントに関する私の理解では、上記の httpd.conf の 2 行目で解決するはずでした。
[Fri Dec 28 10:22:03 2012] [warn] mod_wsgi: Compiled for Python/2.7.2+.
[Fri Dec 28 10:22:03 2012] [warn] mod_wsgi: Runtime using Python/2.7.3.
[Fri Dec 28 10:22:03 2012] [notice] Apache/2.2.22 (Ubuntu) mod_wsgi/3.3 Python/2.7.3 configured -- resuming normal operations
[Fri Dec 28 10:22:05 2012] [error] [client 127.0.0.1] mod_wsgi (pid=3280): Target WSGI script '/var/www/djcode/fugit/fugit/fugit/apache/wsgi.py' cannot be loaded as Python module.
[Fri Dec 28 10:22:05 2012] [error] [client 127.0.0.1] mod_wsgi (pid=3280): Exception occurred processing WSGI script '/var/www/djcode/fugit/fugit/fugit/apache/wsgi.py'.
[Fri Dec 28 10:22:05 2012] [error] [client 127.0.0.1] Traceback (most recent call last):
[Fri Dec 28 10:22:05 2012] [error] [client 127.0.0.1] File "/var/www/djcode/fugit/fugit/fugit/apache/wsgi.py", line 23, in <module>
[Fri Dec 28 10:22:05 2012] [error] [client 127.0.0.1] from django.core.wsgi import get_wsgi_application
[Fri Dec 28 10:22:05 2012] [error] [client 127.0.0.1] ImportError: No module named django.core.wsgi
[Fri Dec 28 10:22:08 2012] [error] [client 127.0.0.1] mod_wsgi (pid=3279): Target WSGI script '/var/www/djcode/fugit/fugit/fugit/apache/wsgi.py' cannot be loaded as Python module.
[Fri Dec 28 10:22:08 2012] [error] [client 127.0.0.1] mod_wsgi (pid=3279): Exception occurred processing WSGI script '/var/www/djcode/fugit/fugit/fugit/apache/wsgi.py'.
[Fri Dec 28 10:22:08 2012] [error] [client 127.0.0.1] Traceback (most recent call last):
[Fri Dec 28 10:22:08 2012] [error] [client 127.0.0.1] File "/var/www/djcode/fugit/fugit/fugit/apache/wsgi.py", line 23, in <module>
[Fri Dec 28 10:22:08 2012] [error] [client 127.0.0.1] from django.core.wsgi import get_wsgi_application
[Fri Dec 28 10:22:08 2012] [error] [client 127.0.0.1] ImportError: No module named django.core.wsgi
ここで何が欠けているのか誰か教えてもらえますか?
編集:
virtualenvwrapper のパーミッションに問題があるようです。この回答で提案されているように、virtualenvs を移動しようとしましたが、virtualenvwrapper が見つからないようです。初期化フックをロードしようとすると、「[Errno 13] Permission denied」というメッセージが表示されます。新しいディレクトリをchmod 755しましたが、サイコロはありません。
さらに編集: Apache でデプロイする代わりに、gunicorn のリバース プロキシとして nginx を使用することで、この問題を回避しました。約 30 分でセットアップされ、スムーズに実行されました。