Apache / mod_wsgi / Django找不到MySQL共享库

我一直坚持在Apache / mod_wsgi / Django部署的服务器上找不到MySQL库的情况,尽pipePython本身可以正确导入库。

这是我的Apache日志错误:

[Tue Jul 10 12:52:02 2012] [error] [client 127.0.0.1] File "/remote/projects1/pdrtke/python/lib/python2.6/site-packages/Django-1.3-py2.6.egg/django/utils/importlib.py", line 35, in import_module [Tue Jul 10 12:52:02 2012] [error] [client 127.0.0.1] __import__(name) [Tue Jul 10 12:52:02 2012] [error] [client 127.0.0.1] File "/remote/projects1/pdrtke/python/lib/python2.6/site-packages/Django-1.3-py2.6.egg/django/db/backends/mysql/base.py", line 14, in <module> [Tue Jul 10 12:52:02 2012] [error] [client 127.0.0.1] raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e) [Tue Jul 10 12:52:02 2012] [error] [client 127.0.0.1] ImproperlyConfigured: Error loading MySQLdb module: libmysqlclient_r.so.16: cannot open shared object file: No such file or directory 

我已经尝试了以下内容:

  • 检查Python解释器是否可以import MySQLdb好的
  • 检查python manage.py ...需要数据库支持的操作: Ok
  • 检查LD_LIBRARY_PATH指向libmysqlclient_r.so.16可用的目录: 确定
  • gdb连接httpd进程,并执行show envLD_LIBRARY_PATH指向libmysqlclient_r.so.16
  • 修改bin / http目录中的envvars文件以添加一个export LD_LIBRARY_PATH=... (以防万一): Ok
  • 通过ldd libmysqlclient_r.so.16检查库本身是否包含未parsing的依赖关系
  • 检查httpd可执行文件是否没有设置setuid位; 这是一个logging的理由忽略LD_LIBRARY_PATH好的

这些行为似乎都不能解决我的问题。 有没有一件明显的事情我忘了考虑?

现在已经修好了 这是我的一个愚蠢的错误。

我最初有一个LD_LIBRARY_PATH没有良好的目录,所以修复它,但是…更改LD_LIBRARY_PATH ,我发出了apachectl restart ,Apachelogging,只杀死subprocess,并从现有的父母派生新的孩子。

所以新的孩子不断拥有旧版本的LD_LIBRARY_PATH

现在我不太清楚为什么我用gdbshow environment看到了“好”的LD_LIBRARY_PATH。 但这是一个不同的故事。 我将结束我最初的问题,现在已经解决了。