我有一个Django应用程序,它具有以下代码init:
import importlib
def get_class(m):
module_name, class_name = m.rsplit('.', 1)
module = importlib.import_module(module_name)
return getattr(module, class_name)
每当我发出需要调用此函数的请求时,在error.log中我看到child pid 27228 exit signal Segmentation fault (11), possible coredump in /etc/apache
,请求失败,错误代码为500。
奇怪的是,如果我从命令行调用该函数,一切都运行良好。似乎mod_wsgi不允许动态加载python模块。
我尝试使用所有组合执行以下操作:
使用虚拟环境
下载了python 3.6的源代码,编译并安装了它,
为默认的python 3.4.3和新的python重新编译了mod_wsgi 3.6。
错误始终相同:
操作系统:Ubuntu Server 14.04 Apache:2.4.7 Python:3.4.3,3.6.0
在我的Ubuntu桌面14.04上一切正常。
Apache由sudo apt-get install apache2
/etc/apache2/sites-enabled/000-default.conf
中的
<Directory /my/django/app/appp>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess myapp python-path=/my/django/app
WSGIProcessGroup myapp
WSGIScriptAlias / /my/django/app/app/wsgi.py
WSGIApplicationGroup %{GLOBAL}
更新:
我已经下载并编译了apache2并重新编译了mod_wsgi。仍然是同样的问题。
更新2: 不确定这是否有帮助,但操作系统位于使用Ubuntu Server 14.04的Azure VM上