deployment - 503 服务在 Openshift Flask 应用程序中暂时不可用

标签 deployment flask openshift

我一直在努力在 Openshift 中部署 Flask 应用程序。首先,我尝试部署我正在开发的应用程序。由于没有成功,我决定创建一个示例 Hello World 并进行部署。

这是app.py的代码

from flask import Flask, render_template
app = Flask(__name__)


@app.route('/')
def hello_world():
    return render_template('index.html')

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

我确实在 setup.py 文件中使用了 install_requirements:
from setuptools import setup

setup(name='SweetyPro',
     version='1.0',
     description='OpenShift App',
     author='Your Name',
     author_email='waglds@gmail.com',
     url='http://www.python.org/sigs/distutils-sig/',
     install_requires=['Django>=1.3',
                      'Flask==0.11.1'],    )

我还在 requirements.txt 中设置了 flask 和要求。但是,Openshift 只说它是一项服务暂时不可用。

我通过查看了日志rhc tail -a my_application ,它提示我:
==> app-root/logs/python.log <==
Traceback (most recent call last):
  File "app.py", line 10, in <module>
    app.run()
  File "/var/lib/openshift/57976d4c7628e1a34e000179/python/virtenv/lib/python2.7/site-packages/Flask-0.11.1-py2.7.egg/flask/app.py", line 843, in run
    run_simple(host, port, self, **options)
  File "/var/lib/openshift/57976d4c7628e1a34e000179/python/virtenv/lib/python2.7/site-packages/Werkzeug-0.11.10-py2.7.egg/werkzeug/serving.py", line 694, in run_simple
    inner()
  File "/var/lib/openshift/57976d4c7628e1a34e000179/python/virtenv/lib/python2.7/site-packages/Werkzeug-0.11.10-py2.7.egg/werkzeug/serving.py", line 656, in inner
    fd=fd)
  File "/var/lib/openshift/57976d4c7628e1a34e000179/python/virtenv/lib/python2.7/site-packages/Werkzeug-0.11.10-py2.7.egg/werkzeug/serving.py", line 550, in make_server
    passthrough_errors, ssl_context, fd=fd)
  File "/var/lib/openshift/57976d4c7628e1a34e000179/python/virtenv/lib/python2.7/site-packages/Werkzeug-0.11.10-py2.7.egg/werkzeug/serving.py", line 464, in __init__
    HTTPServer.__init__(self, (host, int(port)), handler)
  File "/opt/rh/python27/root/usr/lib64/python2.7/SocketServer.py", line 419, in __init__
    self.server_bind()
  File "/opt/rh/python27/root/usr/lib64/python2.7/BaseHTTPServer.py", line 108, in server_bind
    SocketServer.TCPServer.server_bind(self)
  File "/opt/rh/python27/root/usr/lib64/python2.7/SocketServer.py", line 430, in server_bind
    self.socket.bind(self.server_address)
  File "/opt/rh/python27/root/usr/lib64/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 13] Permission denied

有人可以帮我吗?我已经做了我能做的。谢谢!

最佳答案

因为您提供了 app.py文件,它将运行以启动您的应用程序。这将使用内置的 Flask 开发服务器和代码的设置方式。但是,在这样做时,您需要告诉 Flask 开发服务器要监听哪个端口,您不能使用 Flask 开发服务器用户的默认端口。该端口在 OPENSHIFT_PYTHON_PORT 中可用环境变量。看:

  • https://developers.openshift.com/managing-your-applications/environment-variables.html#informational-variables

  • 您可能还需要使用 OPENSHIFT_PYTHON_IP环境变量,并告诉 Flask 开发服务器默认绑定(bind)到哪个主机接口(interface),如果它默认只监听 localhost。

    一个替代方法是重命名您的 app.py文件到 wsgi.py并添加:
    application = app
    

    在创建 Flask 应用程序对象之后。通过进行该更改,OpenShift 将改为使用 Apache/mod_wsgi 托管应用程序,它会担心如何托管它。

    关于deployment - 503 服务在 Openshift Flask 应用程序中暂时不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38596033/

    相关文章:

    visual-studio - 在 Web 安装项目期间/之后修改 Web.config

    asp.net - 您是否预编译了网站,为什么/为什么不呢?

    python - 如何区分对同一个 Flask webhook 的两次不同调用?

    kubernetes - 列出为服务提供服务的 pod

    node.js - OpenShift 上的 Node JS 应用程序给出错误 503

    deployment - 如何在 PhpStorm 项目中包含 public_html 兄弟文件夹?

    web-applications - 使用 Web 部署包通过 TFS 2017 构建和部署 Web 应用程序

    java - 如何使用 OPENSHIFT_DATA_DIR 环境变量在 Openshift 应用程序中引用自定义文件

    flask - 无法配置 Gunicorn 来为同时运行另一个循环的 Flask 应用程序提供服务

    javascript - 即使在 Flask WebApp 中状态为 200 后也无法打开页面