我一直在努力在 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
中可用环境变量。看:
您可能还需要使用
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/