我正在使用localtunnel v1。但是我发现v2允许您自定义子域,因此我需要此功能。
我遵循了repository中README
中描述的教程,但它使我感到困惑,但最终没有成功。
第一步是运行一些Web应用程序:在端口号上选中。 8000。
然后,它说了一些有关主机名的内容:
我在这里迷路了,但仍然编辑了/etc/hosts
:
127.0.0.1 localhost
127.0.1.1 my-pc-name
127.0.0.1 example.localtunnel.local
127.0.0.1 localtunnel.local
下一步...
哪一个?无论如何...我基于localtunnel存储库的dir
/deploy
中的文件创建了myconfig.conf.py:port = 9999
hostname = 'localtunnel.local'
service = 'localtunnel.server.TunnelBroker'
但是,当我运行时:
lt --broker 127.0.0.1:9999 --name example 8000
我有:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/gevent/greenlet.py", line 390, in run
result = self._run(*self.args, **self.kwargs)
File "/usr/local/lib/python2.7/dist-packages/localtunnel/client.py", line 53, in listen
msg = self.ws.receive(msg_obj=True)
TypeError: receive() got an unexpected keyword argument 'msg_obj'
<Greenlet at 0xb6e0db1cL: <bound method TunnelClient.listen of <localtunnel.client.TunnelClient object at 0xb6def52c>>> failed with TypeError
在银杏过程中:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/gevent/pywsgi.py", line 438, in handle_one_response
self.run_application()
File "/usr/local/lib/python2.7/dist-packages/ws4py/server/geventserver.py", line 85, in run_application
self.result = self.application(self.environ, start_response_for_upgrade)
File "/usr/local/lib/python2.7/dist-packages/ws4py/server/wsgi/middleware.py", line 131, in __call__
environ.copy()))
TypeError: handle_websocket() takes exactly 3 arguments (2 given)
<BrokerFrontend fileno=6 address=0.0.0.0:9999>: Failed to handle request:
request = GET /t/example HTTP/1.1 from ('127.0.0.1', 35907)
application = <ws4py.server.wsgi.middleware.WebSocketUpgradeMiddleware object at 0x95bc2ac>
127.0.0.1 - - [2012-05-14 17:18:18] "GET /t/example HTTP/1.1" 101 162 0.000933
而且,显然http://example.localtunnel.local:9999不起作用。
如何解决这个问题?在哪里我必须修改才能更改最终的子域?
对不起,令人毛骨悚然的英语。
编辑
我遵循了保罗的建议,并进行了降级。但是,尽管发生了更改,但仍然会发生错误。银杏过程:
$ ginkgo eco.conf.py
Starting process with eco.conf.py...
127.0.0.1 - - [2012-05-22 20:21:11] "GET /t/example HTTP/1.1" 400 116 0.000190
localtunnel进程:
$ lt --broker 127.0.0.1:9999 --name example 8000
Traceback (most recent call last):
File "/usr/local/bin/lt", line 9, in <module>
load_entry_point('localtunnel==0.4.0', 'console_scripts', 'lt')()
File "/usr/local/lib/python2.7/dist-packages/localtunnel/client.py", line 31, in main
client.serve_forever()
File "/usr/local/lib/python2.7/dist-packages/ginkgo/core.py", line 188, in serve_forever
self.start()
File "/usr/local/lib/python2.7/dist-packages/ginkgo/core.py", line 124, in start
ready = not self.do_start()
File "/usr/local/lib/python2.7/dist-packages/localtunnel/client.py", line 42, in do_start
self.ws.connect()
File "/usr/local/lib/python2.7/dist-packages/ws4py-0.1.5-py2.7.egg/ws4py/client/threadedclient.py", line 72, in connect
self.process_response_line(response_line)
File "/usr/local/lib/python2.7/dist-packages/ws4py-0.1.5-py2.7.egg/ws4py/client/__init__.py", line 61, in process_response_line
raise HandshakeError("Invalid response status: %s %s" % (code, status))
ws4py.exc.HandshakeError: Invalid response status: 400 Bad Handshake
尽管银杏现在没有给出任何错误,但localtunnel仍会引发与以前的错误不同的错误。显然,它尝试在连接过程中获取“/t/example”。
最佳答案
似乎该软件正在使用ws4py的较旧版本。 ws4py的current version (0.2.1)匹配您的外观,而0.1.5 version of ws4py匹配localtunnel尝试使用的外观。
降级到ws4py 0.1.5可能足以解决您遇到的问题。
但是,另一方面,这似乎并不是世界上受支持程度最高的软件。您确定这是解决问题的正确方法吗?我仔细阅读了该存储库中的代码和所有文档,得到的是它设置了这个怪异的tcp-tunnel-over-json-over-websockets(是的,websockets,用于在两个服务器和客户端!),甚至没有提供任何特定的安全性,加密或鲁棒性功能,而且似乎没有其他通用工具无法做的更好的事情。但是,理所当然,我可能错过了一些重要的东西。
关于python - 如何正确运行Localtunnel v2,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10590506/