簡體   English   中英

Django mod_wsgi的ImportError

[英]ImportError with Django mod_wsgi

我想將Django項目從測試服務器移至Apache(CentOS上的2.2.15版)。 我使用[1]安裝了mod_wsgi,並試圖使用[2]將項目作為wsgi應用程序掛載。

我遵循Hello World示例(有用的SO線程[3]),將測試wsgi.py文件放在與現有Django項目文件(wsgi.py)相同的目錄中。 這有效(例如,我可以通過wget訪問)。

<VirtualHost *:80>
   DocumentRoot <abs_path>/myproject/myproject
   WSGIScriptAlias /wsgi  <abs_path>/myproject/myproject/test_wsgi.wsgi
</VirtualHost>

完成此操作后,我根據mod_wsgi和Django文檔[2,4]對Apache配置文件進行了修改,以指向我的Django項目wsgi文件(如下)。

WSGIPythonPath <abs_path>/myproject/myproject

<VirtualHost *:80>

   DocumentRoot <abs_path>/myproject/myproject
   WSGIScriptAlias /django  <abs_path>/myproject/myproject/wsgi.py

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

</VirtualHost>

這將引發“ 500 Internal Server Error:” “ ImportError:沒有名為django.core.wsgi的模塊”


mod_wsgi是針對安裝了Django的Python 2.7編譯的[5]。

ldd mod_wsgi.so 
linux-vdso.so.1 =>  (0x00007fff3ed30000)
libpython2.7.so.1.0 => /usr/local/lib/libpython2.7.so.1.0 (0x00007f641e11d000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f641dee8000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f641dce4000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007f641dae1000)
libm.so.6 => /lib64/libm.so.6 (0x00007f641d85c000)
libc.so.6 => /lib64/libc.so.6 (0x00007f641d4c9000)
/lib64/ld-linux-x86-64.so.2 (0x0000003c14e00000)

基於[6],我在wsgi.py中為python2.7站點包添加了路徑:

# add the myproject project path into the sys.path
sys.path.append('<PATH_TO_MY_DJANGO_PROJECT>/myproject')
# add the python2.7 site-packages path to the sys.path
sys.path.append('<PATH_TO_python2.7>/Lib/site-packages')

我還在httpd.conf中為python2.7添加了路徑:

WSGIPythonPath <PATH_TO_PROJECT>:<PATH_TO_python2.7>/Lib/site-packages

仍然,我收到“ 500 Internal Server Error:” “ ImportError:沒有名為django.core.wsgi的模塊”

有什么建議嗎?


[1] http://code.google.com/p/modwsgi/wiki/QuickInstallationGuide

[2] http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide

[3] mod_wsgi中的Hello World

[4] https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/

[5] mod_wsgi不尊重WSGIPythonHome

[6] ImportError:沒有名為django.core.wsgi的模塊Apache + VirtualEnv + AWS + WSGI

去閱讀實際的Django文檔。 這樣您將看到設置Python模塊搜索路徑的要求。 您應該沒有這樣做的證據。

另外,請勿將DocumentRoot設置為Django項目的父目錄。 您正在面對安全問題。 更重要的是,因為您要在子URL上安裝Django應用程序,這意味着遠程用戶現在可以從站點的根目錄下載項目源代碼,包括帶有數據庫密碼的設置文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM