在Openshift Flask应用中,503服务暂时不可用

时间:2016-07-26 17:08:48

标签: 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

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

1 个答案:

答案 0 :(得分:2)

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

您可能还需要使用OPENSHIFT_PYTHON_IP环境变量并告诉Flask开发服务器要绑定哪个主机接口,如果默认情况下它只侦听localhost。

另一种方法是将app.py文件重命名为wsgi.py并添加:

application = app
创建Flask应用程序对象后

。通过进行更改,OpenShift将使用Apache / mod_wsgi来托管应用程序,它会担心如何托管它。