Django 如何在CentOS 6上导入cx_Oracle?
我很难让Django使用我的Apache/mod_wsgi安装来访问Oracle。我在CentOS 6主机上运行了此设置,我在Apache日志中发现此错误:Django 如何在CentOS 6上导入cx_Oracle?,django,centos,mod-wsgi,cx-oracle,centos6,Django,Centos,Mod Wsgi,Cx Oracle,Centos6,我很难让Django使用我的Apache/mod_wsgi安装来访问Oracle。我在CentOS 6主机上运行了此设置,我在Apache日志中发现此错误: Error loading cx_Oracle module: libclntsh.so.10.1: cannot open shared object file: No such file or directory 如果我尝试从Python命令行导入cx\u Oracle,它在root和apache用户中都可以正常工作。我正确地设置了O
Error loading cx_Oracle module: libclntsh.so.10.1: cannot open shared object file: No such file or directory
如果我尝试从Python命令行导入cx\u Oracle
,它在root和apache用户中都可以正常工作。我正确地设置了ORACLE\u HOME
和LD\u LIBRARY\u PATH
($ORACLE\u HOME/lib
)在~/.bashrc
,/etc/LD.so.conf.d/ORACLE.conf
,~/.bash\u profile
,任何我可以设置环境变量的地方
我还尝试在/usr/lib
中创建一个指向$ORACLE\u HOME/lib/libclntsh.so.10.1
的硬链接或符号链接,但我得到了一个权限错误,无论我从/usr
到/usr/lib
和该文件发布了多少个chmod 777
我在/etc/sysconfig/httpd
中添加了ORACLE\u HOME
和LD\u LIBRARY\u路径
,没有任何更改
显然,只有当Apache用户运行import cx_Oracle命令时,才会发生此错误,尽管使用此用户登录时,我可以从Python解释器运行该命令。当您从源代码构建cx_Oracle时,将LD_RUN_PATH环境变量设置为包含Oracle.so文件的lib目录的路径,它将在cx_Oracle.so中嵌入该位置,并知道在运行时从何处获取libclntsh.so,而无需设置LD_LIBRARY_PATH。有更好的解决方案,无需重新安装。。 “将/app/oracle/oracle/product/10.2.0/db_1/lib追加到/etc/ld.so.conf并运行ldconfig。”
我已经构建了没有该选项的cx\U Oracle。所以,我可以设置该var并重建它,它应该工作,还是应该在重建之前先删除它?您需要从干净的cx_Oracle源代码开始,以确保不使用已生成的版本。变量需要在用户环境中设置和导出。在构建/安装cx_Oracle之后,将变量设置为不需要。仍然不起作用。我收到了相同的错误消息。我如何知道Apache使用哪些Python来运行WSGI?无论如何,我可以作为apache运行命令
import cx_Oracle
,这对我来说是最奇怪的。我如何解决这个问题:我还尝试在/usr/lib中创建一个到$Oracle_HOME/lib/libclntsh.so.10.1的硬链接或符号链接,但是我得到了一个权限错误,不管我从/usr下发多少个chmod 777到/usr/lib和该文件。我在另一篇博文中看到了这个解决方案,它在那里起了作用。解决了!!!是该死的SELINUX阻止了libs的执行!我已将/usr/sbin/setEnforce0
和/etc/selinux/config
设置为禁用。很好!谢谢