2017-06-17 63 views
0

我正在使用SSHTunnelForwarder連接遠程數據庫,我在Anaconda環境中運行以下代碼,命令lind python客戶端並且工作正常。SSHTunnelForwarder在python命令行中工作正常,但在Apache WSGI應用程序中引發導入錯誤

with SSHTunnelForwarder(
     ('ip', 22), 
     ssh_password="pass", 
     ssh_username="name", 
     remote_bind_address=('localhost', 3306)) as server: 
    #connect DB 

的問題是,當我部署相同的代碼在與mod_wsgi的Apache2的一個WSGI應用程序,我得到了錯誤:

ImportError: /home/user/anaconda2/lib/python2.7/site-packages/cryptography/hazmat/bindings/_openssl.so: undefined symbol: X509_get_signature_nid 

我認爲這是因爲Apache已出口LD_LIBRARY_PATH,這不是/home/user/anaconda2/lib/。然後我修改了文件/opt/lampp/bin/envvars最後加了一行export LD_LIBRARY_PATH=/home/user/anaconda2/lib。然後我重新啓動了Apache,但仍然出現了相同的錯誤。

是否還有其他我忽略的env變量?

回答

3

你不能在加載了mod_ssl的Apache內部使用Anaconda Python。這是因爲Anaconda Python有自己獨立的SSL庫,但Apache會加載系統的。一旦發生這種情況,使用SSL的Anaconda代碼將會中斷。

+0

我看,沒有辦法走動? – franky

+2

如果不使用它,請不要加載mod_ssl。或者使用mod_wsgi-express替代運行單獨的實例並設置面向Apache的Apache(使用mod_ssl)來代理它。或者不要使用Anaconda Python,而應該使用系統Python,它應該使用與Apache使用的相同的SSL庫。 –

相關問題