2015-02-05 59 views
-1

我有一個問題,我最近的切換齒輪,我得到的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) 
+0

運行應用程序的用戶缺少偵聽端口的權限。找出openshift允許您使用或聯繫他們的端口。 這不是一個針對stackoverflow的編程問題,而是服務提供者的幫助臺問題。 – 2015-02-05 13:10:14

+0

是的,但我首先轉向了Openshift支持,但他們並沒有幫我...他們只是告訴我去這裏發佈一個問題..但是,謝謝:) – Andilutten 2015-02-05 13:17:58

回答

0

你使用什麼端口/ IP地址?你必須綁定到你的openshift IP地址的端口8080,你不能綁定到127.0.0.1,這是不允許的。

+0

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

+0

Holy s **沒有得到格式正確,但這是我的入口點 – Andilutten 2015-02-05 18:06:56

+0

SSH到您的應用程序並運行「env | grep IP」,我不認爲OPENSHIFT_INTERNAL_IP是correc再來一次。 – 2015-02-05 18:44:56