2014-02-26 13 views
1

創建一個新的Django項目與/tmp$ django startproject testsite爲什麼apache2(2.2)沒有加載django(1.6.1)?

配置的Apache2運行在/tmp/testsite/testsite/wsgi.py

有一個簡單的線條import django的wsgi.py中的應用程序(這是一切的時刻,因爲我試圖調試)。

我做配置httpd.conf中運行WSGI文件,(我認爲)的作品,因爲日誌100克這樣的:

Wed Feb 26 16:55:07 2014] [error] [client 127.0.0.1] mod_wsgi (pid=12621): Target WSGI script '/tmp/testsite/testsite/wsgi.py' cannot be loaded as Python module. 
[Wed Feb 26 16:55:07 2014] [error] [client 127.0.0.1] mod_wsgi (pid=12621): Exception occurred processing WSGI script '/tmp/testsite/testsite/wsgi.py'. 
[Wed Feb 26 16:55:07 2014] [error] [client 127.0.0.1] Traceback (most recent call last): 
[Wed Feb 26 16:55:07 2014] [error] [client 127.0.0.1] File "/tmp/testsite/testsite/wsgi.py", line 26, in <module> 
[Wed Feb 26 16:55:07 2014] [error] [client 127.0.0.1]  import django 
[Wed Feb 26 16:55:07 2014] [error] [client 127.0.0.1] ImportError: No module named django 

然後我檢查,如果我對SYS所需要的庫。路徑,具有打印 - 這表明,在運行import聲明來看,sys.path中是確定的(更詳細地說,我在sys.path中有/...../sistem-packages

而且看着this鏈接,並嘗試了chmod a+x wsgi.py ,但仍然出現同樣的錯誤。

僅供參考,這裏有我的文件:

的httpd.conf

WSGIScriptAlias /vwh /tmp/testsite/testsite/wsgi.py 
WSGIPythonPath /tmp/testsite:/home/local/smth/user/ve/tmp1/lib/python2.7/site-packages 

<Directory /tmp/testsite/testsite> 
<Files wsgi.py> 
Order deny,allow 
#Require all granted 
Allow from all 
</Files> 
</Directory> 

wsgi.py

import os 
import sys 
from subprocess import call 

#print call(["which", "python"])  #also this gives a VERY weird result... prints `0` 

import django 

此外,試圖打印subprocess.call的輸出([ '它' ,'python'])但是那有最奇怪的結果 - 返回0,我不知道如何解釋它

[編輯]我什麼是安裝在路徑的virtualenv /home/local/smth/user/ve/tmp1

[編輯]是 - 我可以從一個解釋器,進口Django的時候指定的路徑是在sys.path,並django.__file__回報/home/local/smth/user/ve/tmp1/local/lib/python2.7/site-packages/django/__init__.pyc

+1

在'subprocess.call'上 - 這就是它返回的結果。你的進程的返回代碼(如果進程成功返回,通常爲0)。如果您希望它從該進程輸出stdout,則必須執行其他步驟。 無論如何,顯而易見的問題,但實際安裝在'/ home/local/smth/user/ve/tmp1/lib/python2.7/site-packages'中的完整'django'包?此外你的mod_wsgi版本可能是相關的。 – Iguananaut

+0

在您的虛擬環境中,「導入django」是否在Python shell中工作?如果是這樣,'django .__ file__'中有什麼? – lanzz

+0

@Iguananaut編輯了答案。導入django在控制檯中工作。 –

回答

0

這樣做的事情是設置適當的訪問位。 基本上,即使sys.path中正確的站點包已打開,但用於Apache的www-data用戶也沒有讀取或執行這些文件的權限。

此外,由於這些文件位於我的用戶的家中,因此我給了其他用戶讀取和執行我的個人文件夾的能力。

現在,這很可能是一個壞主意,你通常想要做的是創建一組用戶,將apache用戶添加到該組,並允許該組中的用戶讀取和執行文件那是需要的。

相關問題