2017-08-29 118 views
0

我試圖從Openshift2到Openshift3遷移我的旋風式的應用程序配置Openshift 3,不知道如何實際設定的路線,服務等不能與龍捲風服務器

首先,我創建簡單的Python 3.5應用程序在RHEL 7中。在高級選項中,我設置了git repo,添加了APP_FILE變量。成功完成克隆和應用程序構建。而我在網絡控制檯終端執行curl localhost:8080,它似乎工作。

但服務根鏈接返回此消息:

應用程序當前沒有放送此端點請求

應用程序不可用。它可能尚未啓動或仍在啓動。

我實際上沒有改變路由和服務配置中的任何東西,我想我應該設置它。但現在沒有任何想法如何做到這一點。

這裏是我的wsgi.py

#!/usr/bin/env python 
import importlib.machinery 

if __name__ == '__main__': 
    print('Executing __main__ ...') 
    ip = 'localhost' 
    port = 8080 
    app = importlib.machinery.SourceFileLoader("application", 'wsgi/application').load_module("application") 

    from wsgiref.simple_server import make_server 
    httpd = make_server(ip, port, app.application) 
    print('Starting server on http://{0}:{1}'.format(ip, port)) 
    httpd.serve_forever() 

而且application

#!/usr/bin/env python 
import os 
import sys 

import tornado.wsgi 
from wsgi.openshift import handlers 

if 'OPENSHIFT_REPO_DIR' in os.environ: 
    sys.path.append(os.path.join(os.environ['OPENSHIFT_REPO_DIR'], 'wsgi',)) 
    virtenv = os.environ['OPENSHIFT_PYTHON_DIR'] + '/virtenv/venv' 
    os.environ['PYTHON_EGG_CACHE'] = os.path.join(virtenv, 'lib/python3.3/site-packages') 
    virtualenv = os.path.join(virtenv, 'bin/activate_this.py') 
    try: 
     exec(compile(open(virtualenv).read(), virtualenv, 'exec'), dict(__file__=virtualenv)) 
    except IOError: 
     pass 

settings = { 
    'cookie_secret': 'TOP_SECRET', 
    'static_path' : os.path.join(os.getcwd(), 'wsgi/static'), 
    'template_path' : os.path.join(os.getcwd(), 'wsgi/templates'), 
    'xsrf_cookies': False, 
    'debug': True, 
    'login_url': '/login', 
} 

application = tornado.wsgi.WSGIApplication(handlers, **settings) 

編輯:

下面是一些控制檯oc輸出:

> oc status 
In project photoservice on server https://api.starter-us-west-1.openshift.com:443 

http://photoservice-photoservice.a3c1.starter-us-west-1.openshiftapps.com to pod port 8080-tcp (svc/photoservice) 
    dc/photoservice deploys istag/photoservice:latest <- 
    bc/photoservice source builds [email protected]:ashchuk/photoservice.git#master on openshift/python:3.5 
    deployment #1 deployed 3 minutes ago - 1 pod 

View details with 'oc describe <resource>/<name>' or list everything with 'oc get all'. 

> oc get routes 
NAME   HOST/PORT               PATH  SERVICES  PORT  TERMINATION WILDCARD 
photoservice photoservice-photoservice.a3c1.starter-us-west-1.openshiftapps.com    photoservice 8080-tcp     None 
+0

如果你運行oc獲取路由,你會得到什麼?什麼OpenShift實例是這個在線免費層實例之一?如果是,哪個實例,us-east1,us-west-1還是其他? –

+0

免費入門美國西部(加州)實例。我添加一些控制檯輸出到問題的編輯。 – ashchuk

+1

嘗試將''ip ='localhost'''更改爲''ip ='0.0.0.0'''。它可能只在localhost上監聽,並且不會接受來自外部的連接。 –

回答

1

剛剛更改ip = 'localhost'ip = '0.0.0.0'作爲Graham said,這工作。

這裏是一個explanation

如果使用localhost或127.0.0.1只會接受來自網絡環回設備的請求。這隻能由運行在同一主機(容器)上的客戶端連接。您需要監聽所有網絡接口(由0.0.0.0表示)以便能夠接受來自主機(容器)外部的請求。如果你不這樣做,OpenShift無法連接到你的應用程序來代理它的請求。