2016-07-26 57 views
0

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

这里是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='[email protected]', 
    url='http://www.python.org/sigs/distutils-sig/', 
    install_requires=['Django>=1.3', 
         'Flask==0.11.1'], ) 

我还设置了烧瓶中,requirements.txt的要求。然而,Openshift只是说它是一个暂时不可用的服务。

我检查了日志通过RHC尾-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

无关:您可能不想安装Flask和Django。 – dirn

+0

我也没有删除Django的依赖。还是一样。 – wagnerdelima

回答

2

因为您提供了一个app.py文件,它将运行以启动您的应用程序。这将使用内置的Flask开发服务器和代码的设置方式。尽管如此,您需要告诉Flask开发服务器侦听哪个端口,但不能使用Flask开发服务器用户的默认端口。该端口位于OPENSHIFT_PYTHON_PORT环境变量中。请参阅:

你也可能需要使用OPENSHIFT_PYTHON_IP环境变量,并告诉绑定到,如果在默认情况下只监听localhost上什么主机接口瓶开发服务器。

的替代所有这些都是你的app.py文件重命名为wsgi.py,并添加:

application = app 

创建瓶的应用对象之后。通过做出这样的改变,OpenShift将会使用Apache/mod_wsgi托管应用程序,它会担心如何托管它。

+0

哦,谢谢。首先,我尝试更改现有的wsgi.py文件并使代码适应接收IP和端口。所以,我这样做: 从应用程序导入作为应用 # #下面只用于测试 # 如果__name__ == '__main__': IP = os.environ [ 'OPENSHIFT_PYTHON_IP'] 端口= OS .environ ['OPENSHIFT_PYTHON_PORT'] from wsgiref.simple_server import make_server httpd = make_server(ip,port,application) #等待一个请求,提供并退出。 httpd.handle_request() 我没有成功。但是,当我包含application = app时,它确实有效。 – wagnerdelima

+0

当你有一个wsgi.py(没有app.py)时,它不会作为程序运行。相反,它会直接加载到mod_wsgi中,它希望“应用程序”存在。 –

+0

谢谢@格拉汉姆 – wagnerdelima

相关问题