我在CentOS 6.5上使用Apache 2.2.15。我正在尝试使用mod_wsgi设置Django应用。我使用的是虚拟环境,并且mod_wsgi已配置为--with-python=/path/to/virtualenv/bin/python3.4
。
我已将此添加到我的httpd.conf
:
WSGIPythonPath /srv/myproject:/path/to/virtualenv/lib/python3.4/site-packages
WSGIPythonHome /path/to/virtualenv
<VirtualHost *:80>
WSGIScriptAlias / /srv/myproject/myproject/wsgi.py
...
</VirtualHost>
在中wsgi.py
,我添加了
sys.path.insert(1, "/path/to/virtualenv/lib/python3.4/site-packages")
问题是,当我尝试在浏览器中打开应用程序时,它将无限期加载。这是Apache错误日志:
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'
[Mon Jun 30 17:37:28 2014] [notice] child pid 19370 exit signal Aborted (6)
[Mon Jun 30 17:37:28 2014] [notice] child pid 19371 exit signal Aborted (6)
...
[Mon Jun 30 17:37:28 2014] [notice] child pid 19377 exit signal Aborted (6)
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'
有趣的是,在Python(2.6)和虚拟环境版本(3.4)的系统安装中,都import encodings
可以正常工作!我尝试使用mod_wsgi CheckingYourInstallation页面中的示例WSGI脚本来确认Apache正在使用哪个版本的Python,但是我得到了相同的ImportError。
有人对下一步有什么建议吗?我已经搜索过文档,但是我不知道从这里去哪里。
因此,在我朋友(IE:SysAdmins)的帮助下,昨晚我们知道了这一点。我通过示例学习得最好,所以假设您正在使用mod_wsgi作为Apache组与用户flipperpa一起运行Apache。假设您使用my_project / wsgi.py中的wsgi.py托管在/ home / my_project中。
在顶层(ls -l /):
drwxr-xr-x. 47 root root 4096 Jul 9 09:43 home
在主目录(ls -l / home)中:
drwxrwsr-x 7 flipper apache 4096 Jul 29 10:22 my_project
这是关键。小写的“ s”表示设置了apache组的setgid位,并设置了execute位。当然,最后的“ x”表示任何人都可以执行。
在树下检查您的权限;这对我们来说成功了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句