2016-12-06 9 views
1

エラーという名前のモジュールジャンゴApacheとVIRTUALENVはImportError:504ページの後にApacheからサイト

[info] mod_wsgi (pid=): Python home /var/venv/mybox. 
[info] mod_wsgi (pid=): Initializing Python. 
ImportError: No module named site 

これはかろうじてに構成アプリです。

<IfModule mod_wsgi.c> 
WSGIDaemonProcess myapp python-home=/var/venv/mybox 
WSGIProcessGroup myapp 
WSGIScriptAlias//var/www/html/web/myapp/wsgi.py 
WSGISocketPrefix /var/run/wsgi 

<Directory /var/www/html/web> 
<Files wsgi.py> 
Order deny,allow 
Allow from all 
</Files> 
</Directory> 
</IfModule> 

すべての投稿とチュートリアルに続きます。私はCENTOS6にいる。 WSGIScriptAlias//:VirutalのENVパイソン2.7デフォルトのシステムのenvを使用すると、2.6

$ ldd /etc/httpd/modules/mod_wsgi.so 
    linux-vdso.so.1 => (0x00007ffc06174000) 

mywsgi.py

import os,sys  
from django.core.wsgi import get_wsgi_application  
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings") 
sys.path.insert(0,'/var/www/html/web') 
activate_this = '/var/venv/mybox/bin/activate_this.py' 
execfile(activate_this, dict(__file__=activate_this)) 
application = get_wsgi_application() 

PYHTONHOMEは、これは、このDocumentation 書き込みフロン取られ

答えて

3

mod_wsgiを使用して仮想環境を使用するためのドキュメントはで見つけることができます:

あなたのケースで最も重要な

セクションです:

このセクションでは、

When using a Python virtual environment with mod_wsgi, it is very important that it has been created using the same Python installation that mod_wsgi was originally compiled for. It is not possible to use a Python virtual environment to force mod_wsgi to use a different Python version, or even a different Python installation.

You cannot for example force mod_wsgi to use a Python virtual environment created using Python 3.5 when mod_wsgi was originally compiled for Python 2.7. This is because the Python library for the Python installation it was originally compiled against is linked directly into the mod_wsgi module.

おそらく起こっていることは、mod_wsgiがPython 2.6用にコンパイルされていることでしょう。この場合、Python 2.7から作成されたPython仮想環境を使用することはできません。これを行うと、siteモジュールが見つからないというエラーが表示されます。

システムパッケージからmod_wsgiをアンインストールし、ソースコードからmod_wsgiをインストールし、Python 2.7に対してコンパイルする必要があります。仮想環境にインストールし、次にApacheのインストールに接続する」のセクションの指示に従って

ランpip install:で説明したように、これを行うための最も簡単な方法は、pip installメソッドを使用するのが良いかもしれません'それを使用するためにApacheを設定することについて。

+0

/var/venv/mybox/lib/python2.7/site-packages/mod_wsgi/server/mod_wsgi-py27.soをサーバに読み込めない:共有オブジェクトファイルを開くことができない: アクセス拒否。私はアクセス許可を変更しようとしました – Jabda

+0

あなたのSELinuxプロファイルは、Apacheがその場所にあるものを使うことを許可していない可能性が非常に高いです。 ''/var/www''の下に仮想環境を置いてみてください。 –

+0

pipを使ってmod_wsgiをインストールし、/ var/wwwにvirtualenvを動かせました。これは内部のサイトなので、その妥協を図ることができます – Jabda

1

を設定していないですパス/ to/mysite.com/mysite/wsgi.py WSGIPythonPath /path/to/mysite.com

<Directory /path/to/mysite.com/mysite> 
<Files wsgi.py> 
Require all granted 
</Files> 
</Directory> 

、これは、仮想ENVのために特別にあなたのpython仮想ENVのサイトpackegesへのパスを記述する必要がです:問題はまたであってもよい

WSGIPythonPath /path/to/mysite.com:/path/to/your/venv/lib/python3.X/site-packages 

- PYTHONHOME

Change the location of the standard Python libraries. By default, the libraries are searched in prefix/lib/pythonversion and exec_prefix/lib/pythonversion, where prefix and exec_prefix are installation-dependent directories, both defaulting to /usr/local.

When PYTHONHOME is set to a single directory, its value replaces both prefix and exec_prefix. To specify different values for these, set PYTHONHOME to prefix:exec_prefix.

はあなたPYTHONHOMEをクリーンアップするようにしてください:

user$ export PYTHONHOME= 
+0

私は最初、そのドキュメントをTに従いました。次に、Graham Dumpletonのブログとチュートリアルを試しました。私はいつも同じエラーが発生する – Jabda

+0

pythonhomeの場所を変更しようとする –

関連する問題