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

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

我遇到了一个问题:在 Apache/mod_wsgi/Django 部署的服务器上找不到 MySQL 库,尽管 Python 本身可以正确导入该库。

这是我的 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 ...需要数据库支持的操作是否有效:好的
  • 检查LD_LIBRARY_PATH指向 libmysqlclient_r.so.16 可用的目录:好的
  • httpd流程附加到,gdb然后执行show envLD_LIBRARY_PATH指向libmysqlclient_r.so.16
  • 修改envvarsbin/http 目录中的文件,添加export LD_LIBRARY_PATH=...(以防万一):好的
  • 检查ldd libmysqlclient_r.so.16库本身是否包含未解决的依赖项
  • 检查httpd可执行文件是否未设置 setuid 位;这是忽略以下内容的有据可查的原因LD_LIBRARY_PATH好的

这些措施似乎都无法解决我的问题。我是不是忘记考虑了什么显而易见的事情?

答案1

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

我最初有一个LD_LIBRARY_PATH没有好目录的,所以修复了它,但是......在更改之后LD_LIBRARY_PATH,我发布了一个apachectl restart,正如 Apache 所记录的那样,它只会杀死子进程,并从现有父进程中产生新的子进程。

因此,新生儿仍保留着旧版本的LD_LIBRARY_PATH

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

相关内容