【问题标题】:Cloud9 IDE: Can't connect to my server on a custom portCloud9 IDE:无法在自定义端口上连接到我的服务器
【发布时间】:2015-11-25 22:22:20
【问题描述】:

使用 Cloud9 IDE 时,我无法通过 c9users.io 808080818082 上的自定义应用程序允许的端口连接到我自己的服务器。

它是具有 SSL 功能的自定义服务器。当我将它托管在其他地方时,它是可以访问的,但在 Cloud9 上,每次我尝试访问其上的资源时,它都会显示 No data received (Failed to load resource: net::ERR_EMPTY_RESPONSE)。 Python SSLWSGIRefServer 日志没有显示任何连接尝试。

可能与安全设置或路径错误有关。

此处显示了我当前使用的路径,并且我的 SSL 证书是自定义生成的。

https://{workspace}-{username}.c9users.io:{8080|8081|8082}/{path}

这是我要运行的服务器:

import subprocess
from bottle import run, post, request, response, get, route, Bottle, ServerAdapter

def jsonp(request, jsonstring):
    if (request.query.callback):
        return "%s(%s)" % (request.query.callback, jsonstring)
    return jsonstring

@get('/<path>')
def process(path):
    response.content_type = 'jsonp'
    jsonstring = subprocess.check_output(['python',"scripts/"+path+'.py'],shell=False).rstrip('\n')
    return jsonp(request, jsonstring)

# copied from bottle. Only changes are to import ssl and wrap the socket
class SSLWSGIRefServer(ServerAdapter):
    def run(self, handler):
        from wsgiref.simple_server import make_server, WSGIRequestHandler
        import ssl
        if self.quiet:
            class QuietHandler(WSGIRequestHandler):
                def log_request(*args, **kw): pass
            self.options['handler_class'] = QuietHandler
        srv = make_server(self.host, self.port, handler, **self.options)
        srv.socket = ssl.wrap_socket (
         srv.socket,
         certfile='server.pem',  # path to certificate
         server_side=True)
        srv.serve_forever()

srv = SSLWSGIRefServer(host="0.0.0.0", port=8081)
run(server=srv)

【问题讨论】:

    标签: ssl ssl-certificate wsgi bottle cloud9-ide


    【解决方案1】:

    Cloud9 仅支持端口 8080、8081 和 8082,因此您需要连接到其中一个端口,而不是 8000。

    欲了解更多信息,请查看Multiple Ports on Cloud9 IDE

    【讨论】:

    • 感谢您的提示。该参考手册似乎已经过时,它将我从c9.io 重定向到c9users.io。显然在那个地址上我仍然收不到任何输出:https://{workspace}-{username}.c9users.io:{8080|8081|8082}/{path}
    • 我不知道为什么这不起作用,但很高兴它在终端上起作用。感谢您指出文档错误,我现在已经修复了。
    • 即使是简单的 Hello World 示例也无法正常工作,因此我改用开箱即用的 Django。
    【解决方案2】:

    Django 为 Bottle 服务器提供了一个很好的替代方案,可以消除所有这些问题,并且它在 Cloud 9 上通过 code examples 提供原生支持。

    启动支持 Python 且可扩展的服务器只需几秒钟,只需在 Django admin 中生成代码并运行此代码:

    python manage.py runserver $IP:$PORT

    【讨论】:

    • runserver 不适用于生产实例,即使 cloud9 是开发环境,我也希望它尽可能接近生产环境
    猜你喜欢
    • 1970-01-01
    • 2014-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多