我一直在努力在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
有人可以帮帮我吗?我已经做了我能做的事情。谢谢!
答案 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来托管应用程序,它会担心如何托管它。