2017-06-17 2 views
0

Ich verwende SSHTunnelForwarder, um Remote-Datenbank zu verbinden, ich führe den folgenden Code in Befehl Lind Python-Client innerhalb Anaconda Umgebung und es funktioniert gut.SSHTunnelForwarder funktioniert gut in der Befehlszeile Python aber ausgelöst Importfehler in Apache WSGI-Anwendung

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

Das Problem war, wenn ich das gleiche Stück Code in einer WSGI Anwendung in apache2 mit mod_wsgi eingesetzt, bekam ich den Fehler:

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

ich dachte, es war, weil Apache LD_LIBRARY_PATH exportiert hat, die ist nicht /home/user/anaconda2/lib/. Dann änderte ich die Datei /opt/lampp/bin/envvars und fügte am Ende eine Zeile export LD_LIBRARY_PATH=/home/user/anaconda2/lib hinzu. Ich habe dann Apache neu gestartet, aber immer noch den gleichen Fehler.

Gibt es eine andere env Variable, die ich ignoriert habe?

Antwort

3

Sie können Anaconda Python nicht innerhalb eines Apache verwenden, der mod_ssl geladen hat. Dies liegt daran, dass Anaconda Python über eigene SSL-Bibliotheken verfügt, Apache jedoch die System-Bibliotheken lädt. Sobald dies passiert, wird Anaconda-Code mit SSL brechen.

+0

ich sehe, keine Möglichkeit, herumzulaufen? – franky

+2

Laden Sie mod_ssl nicht, wenn Sie es nicht verwenden. Oder verwenden Sie stattdessen mod_wsgi-express, um eine separate Instanz zu starten und das Front-Interface von Apache (das mod_ssl verwendet) für die Proxy-Authentifizierung zu verwenden. Oder verwenden Sie nicht Anaconda Python, verwenden Sie stattdessen das System Python, das die gleichen SSL-Bibliotheken verwenden sollte wie Apache. –

Verwandte Themen