2

WSGIデプロイを使用してApacheにDjango(virtualenvにあります)をデプロイしようとしています。https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/のデフォルトのチュートリアルに従っています

wsgi.py(Djangoが生成したデフォルトのもので、コメントは削除されています):

import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "server.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

apache2.conf(Debianだけで同じhttpd.conf)。これを最後に追加しました:

WSGIScriptAlias / /home/user/Desktop/expofit/expofit_hg/py/server/server/wsgi.py
WSGIDaemonProcess example.com python-path=/home/user/Desktop/expofit/expofit_hg/py/server:/home/user/Desktop/expofit/expofit_env/lib/python2.7/site-packages
WSGIProcessGroup example.com

<Directory /home/user/Desktop/expofit/expofit_hg/py/server/server>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>

Alias /static/ /home/user/Desktop/expofit/expofit_hg/py/server/server/static

<Directory /home/user/Desktop/expofit/expofit_hg/py/server/server/static>
Order deny,allow
Allow from all
</Directory>

ただし、これはエラーで終了します。

[Thu Dec 06 17:08:40 2012] [error] [client 192.168.56.1] ImportError: No module named django.core.wsgi

以来、標準のPythonにアクセスできるようです。

import os

エラーは発生しません。したがって、virtualenvからインポートされたモジュールはインポートできないようです。チュートリアルによると:

デーモンモードを使用する場合に上記の構成に必要なさらなる変更は、WSGIPythonPathを使用できないことです。代わりに、WSGIDaemonProcessへのpython-pathオプションを使用する必要があります。次に例を示します。

WSGIDaemonProcess example.com python-path=/path/to/mysite.com:/path/to/venv/lib/python2.7/site-packages
WSGIProcessGroup example.com

私は何が欠けていますか?

4

3 に答える 3

2

問題は権限にありました。誰がユーザーで、最初はパーミッションが何であるかを確認しませんでしたが、パーミッション777をDjangoコードファイルを含むすべてのディレクトリに変更すると、機能し始めました。

人は許可にできるだけ注意する必要があり、すべてに777を与えることが最善の方法ではないことを認識していますが、最小限の許可の変更でそれを機能させる方法を確認する必要があります。しかし、それは問題の問題を解決します。

于 2013-03-14T16:56:20.980 に答える
1

単一のアプリの場合、これは箱から出すのが最も簡単です。http://code.google.com/p/modwsgi/wiki/VirtualEnvironments#Baseline_Environmentを参照してください。 これもWSGIPythonPathの使用も、仮想ホストだけでは実行できませんが、実行する必要があります。グローバル。

WSGIPythonHome [path to virtualenv folder]

複数のアプリがある場合-sys.pathを使用して仮想環境のsite-packagesフォルダーをwsgi.pyの上部に追加するのが最も簡単な方法のようです。http://code.google.com/p/modwsgi/wiki/VirtualEnvironmentsを参照してください。 #Application_Environments

于 2012-12-06T21:49:17.287 に答える
1

あなたの環境のpythonpathは、私が思うapacheのものとは異なります。
easy_installまたはpipを使用してdjango"globaly"をインストールします

または、.virtualenvpythonpathをmod_wsgi構成に追加します

WSGIPythonPathディレクトリ|ディレクトリ-1:ディレクトリ-2:

MOD_wsgi設定

于 2012-12-06T21:52:08.630 に答える