简体   繁体   English

EC2 AWS上的Python Flask应用

[英]Python Flask app on EC2 AWS

I'm trying to run a simple python flask app on Amazon Linux AMI. 我正在尝试在Amazon Linux AMI上运行一个简单的python flask应用程序。 I'm able to show the Amazon Linux AMI test page but when I try create the proper configuration to run my app I'm facing always the same problem. 我能够显示Amazon Linux AMI测试页,但是当我尝试创建合适的配置来运行我的应用程序时,我总是面临同样的问题。

[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

My app.py: 我的app.py:

from flask import Flask
app=Flask(__name__)

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

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

My app.wsgi: 我的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

and my httpd.conf: 和我的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>

If I look at what is installed in the virtualenv wit pip freeze I get this: 如果查看在virtualenv wit pip冻结中安装了什么,则会得到以下信息:

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

so Flask is installed. 这样就安装了Flask。 Why I'm not able to import it? 为什么我不能导入它? What I'm doing wrong? 我做错了什么?

thanks 谢谢

On EC2/EB, deploy the flask application through the console by uploading a zip file. 在EC2 / EB上,通过上传一个zip文件,通过控制台部署flask应用程序。 Keep the flask app like a normal flask app on your PC. 将烧瓶应用程序像普通的烧瓶应用程序一样保留在您的PC上。 I guess AWS takes care of WSGI automatically. 我猜AWS会自动处理WSGI。

Just do the following : 只需执行以下操作:

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

save this main file as "application.py" 将此主文件另存为“ application.py”

Zip and upload through AWS console and it will run. 通过AWS控制台压缩并上传,它将运行。

go to the /var/www/html folder and install flask in that directory. 转到/ var / www / html文件夹,然后在该目录中安装flask。 Use sudo command for the same. 使用sudo命令相同。 Then your app should work, 然后您的应用程序应该可以工作了,

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM