2016-09-16 9 views
0

Ich versuche, eine einfache Pythonflasche App auf Amazon Linux AMI zu betreiben. Ich kann die AMI-Testseite von Amazon Linux zeigen, aber wenn ich versuche, die richtige Konfiguration für die Ausführung meiner App zu erstellen, stehe ich immer vor dem gleichen Problem.Python Flask App auf EC2 AWS

[Fri Sep 16 12:56:39.190230 2016] [:error] [pid 17977] [remote 77.246.17.229:59978] mod_wsgi (pid=17977): Target WSGI script '/var/www/flaskapp/app.wsgi' cannot be loaded as Python module. 
[Fri Sep 16 12:56:39.190239 2016] [:error] [pid 17977] [remote 77.246.17.229:59978] mod_wsgi (pid=17977): Exception occurred processing WSGI script '/var/www/flaskapp/app.wsgi'. 
[Fri Sep 16 12:56:39.190252 2016] [:error] [pid 17977] [remote 77.246.17.229:59978] Traceback (most recent call last): 
[Fri Sep 16 12:56:39.190271 2016] [:error] [pid 17977] [remote 77.246.17.229:59978] File "/var/www/flaskapp/app.wsgi", line 26, in <module> 
[Fri Sep 16 12:56:39.190288 2016] [:error] [pid 17977] [remote 77.246.17.229:59978]  from app import app as application 
[Fri Sep 16 12:56:39.190294 2016] [:error] [pid 17977] [remote 77.246.17.229:59978] File "/var/www/flaskapp/app.py", line 1, in <module> 
[Fri Sep 16 12:56:39.190303 2016] [:error] [pid 17977] [remote 77.246.17.229:59978]  from flask import Flask 
[Fri Sep 16 12:56:39.190316 2016] [:error] [pid 17977] [remote 77.246.17.229:59978] ImportError: No module named flask 

Mein app.py:

from flask import Flask 
app=Flask(__name__) 

@app.route('/') 
def home(): 
    return "Hello World!" 

if __name__ == "__main__": 
    app.run() 

Mein app.wsgi:

import sys 
import site 
import os 
# Add virtualenv site packages 
site.addsitedir(os.path.join(os.path.dirname(__file__), '/env/lib/python2.7/site-packages')) 

activate_this = '/var/www/flaskapp/env/bin/activate_this.py' 
execfile(activate_this, dict(__file__=activate_this)) 

# Path of execution 
sys.path.insert(0,'/var/www/flaskapp') 

#import the app 
from app import app as application 

und meine httpd.conf:

<VirtualHost *> 
    ServerName ec2.... 
    WSGIDaemonProcess app threads=5 home=/var/www/flaskapp/ python-path=/var/www/flaskapp/env/lib/python2.7 threads=1 

    DocumentRoot /var/www/flaskapp 

    WSGIScriptAlias//var/www/flaskapp/app.wsgi 
    <Directory /var/www/flaskapp> 
      WSGIProcessGroup app 
      WSGIApplicationGroup %{GLOBAL} 
      Order deny,allow 
      Allow from all 
    </Directory> 
</VirtualHost> 

Wenn ich mir anschaue, was installiert in der Virtuellenv wit pip freeze bekomme ich diese:

click==6.6 
Flask==0.11.1 
itsdangerous==0.24 
Jinja2==2.8 
MarkupSafe==0.23 
Werkzeug==0.11.11 

so ist Flask installiert. Warum kann ich es nicht importieren? Was mache ich falsch?

dank

+0

Die Eingabe 'python-path' in' WSGIDaemonProcess' sollte auf ein Verzeichnis 'site-packages' zeigen. – Suever

+0

Wenn ich Python-Pfad zu /var/www/flaskapp/env/lib/python2.7/site-packages ändern, bekomme ich das: von Markupsafe-Import Markup, escape, soft_unicode ImportError: Kein Modul namens Markupsafe – Thomas

Antwort

0

Auf EC2/EB, durch Hochladen einer Zip-Datei die Flasche Anwendung über die Konsole implementieren. Behalten Sie die Flaschen-App wie eine normale Flaschen-App auf Ihrem PC. Ich denke, AWS kümmert sich automatisch um WSGI.

tun gerade folgendes:

application = app = Flask(__name__) 
...... 
...... 
application.run() 

diese Hauptdatei speichern unter "application.py"

Zip und laden durch AWS-Konsole und es läuft.