Openshift蟒蛇齿轮不会部署
我有一个问题,我最近的切换齿轮,我得到的Python错误errno 13,权限被拒绝。我在这里查了一下,发现大多数遇到同样问题的人在app.run()
之前忘记了if __name__ == "__main__":
声明,但我仍然遇到同样的问题。根据openshift上的日志,这个错误似乎源于内置于python中的socket.py。Openshift蟒蛇齿轮不会部署
这是我在openshift上的第二个设备,这个和我的第一个是用烧瓶建造的。第一个工作得很好,但我的第二个不会工作...
这是错误消息我在Python日志得到openshift:
* Running on http://127.0.0.1:5000/
Traceback (most recent call last):
File "app.py", line 24, in <module>
app.run()
File "/var/lib/openshift/54d242655973ca23980001d1/python/virtenv /lib/python2.7/site-packages/flask/app.py", line 772, in run
run_simple(host, port, self, **options)
File "/opt/rh/python27/root/usr/lib/python2.7/site-packages/werkzeug/serving.py", line 617, in run_simple
inner()
File "/opt/rh/python27/root/usr/lib/python2.7/site-packages/werkzeug/serving.py", line 599, in inner
passthrough_errors, ssl_context).serve_forever()
File "/opt/rh/python27/root/usr/lib/python2.7/site-packages/werkzeug/serving.py", line 408, in make_server
passthrough_errors, ssl_context)
File "/opt/rh/python27/root/usr/lib/python2.7/site-packages/werkzeug/serving.py", line 334, 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
编辑2: 所以我改变了ip到OPENSHIFT_PYTHON_IP,但错误日志看起来完全一样。这是我的wsgi.py代码
#!/usr/bin/python
import os
virtenv = os.environ['OPENSHIFT_PYTHON_DIR'] + '/virtenv/'
virtualenv = os.path.join(virtenv, 'bin/activate_this.py')
try:
execfile(virtualenv, dict(__file__=virtualenv))
except IOError:
pass
def run_gevent_server(app, ip, port=8080):
from gevent.pywsgi import WSGIServer
WSGIServer((ip, port), app).serve_forever()
def run_simple_httpd_server(app, ip, port=8080):
from wsgiref.simple_server import make_server
make_server(ip, port, app).serve_forever()
from server import app as application
#
# Below for testing only
#
if __name__ == '__main__':
ip = os.environ['OPENSHIFT_PYTHON_IP']
port = 8080
zapp = impo.load_source('application', 'wsgi/application')
try:
run_gevent_server(application, ip, port)
except:
run_simple_httpd_server(zapp.application, ip, port)
你使用什么端口/ IP地址?你必须绑定到你的openshift IP地址的端口8080,你不能绑定到127.0.0.1,这是不允许的。
if __name__ =='__main__': ip = os.environ [ 'OPENSHIFT_INTERNAL_IP'] 端口= 8080 ZAPP = impo.load_source( '应用', 'WSGI /应用') 尝试: \t run_gevent_server(应用程序,IP,端口) 除外: \t run_simple_httpd_server (zapp.application,ip,port) – Andilutten 2015-02-05 18:06:25
Holy s **没有得到格式正确,但这是我的入口点 – Andilutten 2015-02-05 18:06:56
SSH到您的应用程序并运行“env | grep IP”,我不认为OPENSHIFT_INTERNAL_IP是correc再来一次。 – 2015-02-05 18:44:56
运行应用程序的用户缺少侦听端口的权限。找出openshift允许您使用或联系他们的端口。 这不是一个针对stackoverflow的编程问题,而是服务提供者的帮助台问题。 – 2015-02-05 13:10:14
是的,但我首先转向了Openshift支持,但他们并没有帮我...他们只是告诉我去这里发布一个问题..但是,谢谢:) – Andilutten 2015-02-05 13:17:58