【问题标题】:Python Flask app on EC2 AWSEC2 AWS 上的 Python Flask 应用程序
【发布时间】:2019-03-29 10:29:54
【问题描述】:

我正在尝试在 Amazon Linux AMI 上运行一个简单的 python 烧瓶应用程序。我能够显示 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

我的 app.py:

from flask import Flask
app=Flask(__name__)

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

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

我的 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

还有我的 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>

如果我查看 virtualenv wit pip freeze 中安装的内容,我会得到:

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

这样 Flask 就安装好了。为什么我无法导入它?我做错了什么?

谢谢

【问题讨论】:

  • python-path 输入到WSGIDaemonProcess 应该指向site-packages 目录。
  • 如果我将 python-path 更改为 /var/www/flaskapp/env/lib/python2.7/site-packages 我会得到: from markupsafe import Markup, escape, soft_unicode ImportError: No名为 markupsafe 的模块

标签: python amazon-ec2 flask


【解决方案1】:

在 EC2/EB 上,通过控制台上传 zip 文件来部署烧瓶应用程序。 让烧瓶应用程序像普通烧瓶应用程序一样保存在您的 PC 上。我猜 AWS 会自动处理 WSGI。

只需执行以下操作:

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

将此主文件另存为“application.py”

通过 AWS 控制台压缩和上传,它就会运行。

【讨论】:

    【解决方案2】:

    转到 /var/www/html 文件夹并在该目录中安装烧瓶。 同样使用 sudo 命令。 那么你的应用应该可以工作了,

    【讨论】:

    • 欢迎来到 SO。请提供此解决方案有效的原因。
    • 您使用的是哪个网络服务器? Ngynix 还是 Apache?
    猜你喜欢
    • 2016-08-07
    • 2020-08-22
    • 2017-06-12
    • 2018-09-18
    • 2016-03-15
    • 2015-11-14
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多