web-dev-qa-db-de.com

Python wsgi: ssl-error Verbindung zu HTTPS-URL kann nicht hergestellt werden, da das SSL-Modul nicht verfügbar ist

Ich bin gerade von einer Amazon-ec2-Instanz zu einem DigitalOcean-Droplet gewechselt. Alles scheint gut zu funktionieren, bis ich bei der Konfiguration meiner Python-App, WSGI und Apache2 auf das SSL-Problem stieß.

Droplet: Ubuntu 16.04 Python-Version: 2.7.12

VirtualHost-Datei

WSGISocketPrefix /var/run/wsgi                                                           
<VirtualHost *:80>                                                                       
ServerName c123456.com                                                               
#translatr.varunmalhotra.xyz                                                         

#DocumentRoot /var/www/html                                                          
#ErrorDocument 404 /notFound404.html                                                 
ErrorLog /var/log/translatr.error.log                                                
CustomLog /var/log/translatr.access.log combined                                     

WSGIDaemonProcess translatrapp python-path=/var/www/html/translatr:/var/www/html/translatr/ENV/lib/python2.7/site-packages                                                    
WSGIScriptAlias / /var/www/html/translatr/translatrapp.wsgi                          

<Directory /var/www/html/translatr>                                                  
    WSGIProcessGroup translatrapp                                                    
    WSGIApplicationGroup %{GLOBAL}                                                   
    Order deny,allow                                                                 
    Allow from all                                                                   
</Directory>                                                                         


`` `

Meine App verwendet das Modul python requests, um eine GET-Anforderung zu erstellen. Die Anforderungen geben 500 zurück, und wenn ich meine Protokolle überprüfe, konnte ich sehen

[Sat Jan 28 10:46:23.754636 2017] [wsgi:error] [pid 6627:tid 139754554279680]     request
 = requests.get(link, headers=agents, verify=False)                                      
[Sat Jan 28 10:46:23.754641 2017] [wsgi:error] [pid 6627:tid 139754554279680]   File "/va
r/www/html/translatr/ENV/lib/python2.7/site-packages/requests/api.py", line 69, in get   
[Sat Jan 28 10:46:23.754645 2017] [wsgi:error] [pid 6627:tid 139754554279680]     return 
request('get', url, params=params, **kwargs)                                             
[Sat Jan 28 10:46:23.754650 2017] [wsgi:error] [pid 6627:tid 139754554279680]   File "/va
r/www/html/translatr/ENV/lib/python2.7/site-packages/requests/api.py", line 50, in reques
t                                                                                        
[Sat Jan 28 10:46:23.754655 2017] [wsgi:error] [pid 6627:tid 139754554279680]     respons
e = session.request(method=method, url=url, **kwargs)                                    
[Sat Jan 28 10:46:23.754659 2017] [wsgi:error] [pid 6627:tid 139754554279680]   File "/va
r/www/html/translatr/ENV/lib/python2.7/site-packages/requests/sessions.py", line 468, in 
request                                                                                  
[Sat Jan 28 10:46:23.754664 2017] [wsgi:error] [pid 6627:tid 139754554279680]     resp = 
self.send(prep, **send_kwargs)                                                           
[Sat Jan 28 10:46:23.754669 2017] [wsgi:error] [pid 6627:tid 139754554279680]   File "/va
r/www/html/translatr/ENV/lib/python2.7/site-packages/requests/sessions.py", line 597, in 
send                                                                                     
[Sat Jan 28 10:46:23.754673 2017] [wsgi:error] [pid 6627:tid 139754554279680]     history
 = [resp for resp in gen] if allow_redirects else []                                     
[Sat Jan 28 10:46:23.754678 2017] [wsgi:error] [pid 6627:tid 139754554279680]   File "/va
r/www/html/translatr/ENV/lib/python2.7/site-packages/requests/sessions.py", line 195, in 
resolve_redirects                                                                        
[Sat Jan 28 10:46:23.754683 2017] [wsgi:error] [pid 6627:tid 139754554279680]     **adapt
er_kwargs                                                                                
[Sat Jan 28 10:46:23.754687 2017] [wsgi:error] [pid 6627:tid 139754554279680]   File "/va
r/www/html/translatr/ENV/lib/python2.7/site-packages/requests/sessions.py", line 576, in 
send                                                                                     
[Sat Jan 28 10:46:23.754692 2017] [wsgi:error] [pid 6627:tid 139754554279680]     r = ada
pter.send(request, **kwargs)                                                             
[Sat Jan 28 10:46:23.754697 2017] [wsgi:error] [pid 6627:tid 139754554279680]   File "/va
r/www/html/translatr/ENV/lib/python2.7/site-packages/requests/adapters.py", line 433, in 
send                                                                                     
[Sat Jan 28 10:46:23.754702 2017] [wsgi:error] [pid 6627:tid 139754554279680]     raise S
SLError(e, request=request)                                                              │
[Sat Jan 28 10:46:23.754706 2017] [wsgi:error] [pid 6627:tid 139754554279680] SSLError: C│
an't connect to HTTPS URL because the SSL module is not available.

Ich habe viel gesucht..__ Ich habe versucht, openssl, andere conf, zu installieren, aber wirklich frustriert ..__ Ich weiß nicht, wie es in Amazon ec2 reibungslos funktioniert, aber nicht in Droplet.

Jede Hilfe in eine gute Richtung wäre dankbar. Vielen Dank

6
softvar

Ich denke, es war ein Fehler mit meiner installierten Python-Version. Entweder wurden mehrere Python-Versionen installiert oder der Build wurde nicht ordnungsgemäß erstellt. Ich war auf Ubuntu 16.04 digitalOcean machine, das ohne python Installation kommt. Also musste ich es manuell installieren. Ich folgte der Antwort auf https://askubuntu.com/questions/101591/how-do-i-install-python-2-7-2-on-ubuntu

Aber nichts schien zu funktionieren.

Schließlich habe ich einen neuen neuen Computer erstellt, diesmal jedoch Ubuntu 14.04, wobei python bereits installiert ist. Als ich die Abhängigkeiten installierte und meine Flask-App implementierte, funktionierte sie einwandfrei.

Ubuntu 16.04 (ohne Python) wurde in Ubuntu 14.04 (mit Python installiert) geändert.

1
softvar

Wenn Sie Python von der Quelle installiert haben, müssen Sie es erneut ausführen

./configure
make
Sudo checkinstall

Nachdem Sie openssl installiert haben (ich gehe davon aus, dass Sudo apt install openssl).

7
kshikama