一、問題
今天網站出了一個錯誤:
RuntimeError at /index.html
class.__dict__ not accessible in restricted mode
二、原因
用了兩次WSGIScriptAlias,類似於:
WSGIScriptAlias /my_app /home/myuser/myapp/wsgi_scripts/deployment.wsgi
WSGIScriptAlias /my_app_demo /home/myuser/myapp/wsgi_scripts/deployment.wsgi
導致執行時報錯:RuntimeError: class.__dict__ not accessible in restricted mode
有兩個程式都要用相同的資源,先執行的程式佔用了必要資源,導致隨後的程式拿不到資源而報錯。
我的情況是因為給同一個app配置兩個域名,用了兩個<VirtualHost>,同樣就用了兩次WSGIScriptAlias。
三、解決辦法
在apache2的配置里加一個配置項(在虛擬主機配置之前新增)
WSGIApplicationGroup %{GLOBAL}
然後重啟apache服務。
原因是一般情況,一個wsgi app可以執行在單獨的python直譯器裡。所以使用WSGIApplicationGroup直接告訴mod_wsgi不要使用單獨的python直譯器,直接在同一個全域性的直譯器裡互動。
四、參考
http://www.mediacore.com/blog/hosting-multiple-wsgi-applications-with-apache
mod_wsgi 流程簡單分析: 一個嵌入python的例子
https://github.com/nkchenz/ajourneyintopythonsource/blob/master/100.rst
部署django
http://djangobook.py3k.cn/2.0/chapter12/
ps:時隔四個月,今天又遇到了同樣的問題,居然是通過google找到了我的這篇文章解決了問題^_^【2015/8/24】
本文作者starof,因知識本身在變化,作者也在不斷學習成長,文章內容也不定時更新,為避免誤導讀者,方便追根溯源,請諸位轉載註明出處:http://www.cnblogs.com/starof/p/4443342.html有問題歡迎與我討論,共同進步。