Я использую localtunnel v1. Но я обнаружил, что v2 позволяет настраивать субдомен, и мне нужна эта функция.
Я следил за учебником, описанным в README
из репозитория, но он путал меня в нескольких частях и, в конце концов, он не работает.
Первый шаг - запустить некоторое веб-приложение: checked, на порту no. 8000.
Затем он говорит что-то о именах хостов:
Localtunnel делает некоторые вещи с именем хоста, поэтому вы хотите настроить два имена хостов. Один для регистрации локального туннеля, один для вашего локального туннеля. Обычно он ожидает подстановочный знак, но мы просто будем указывать имя хоста для этот пример туннеля.
example.localtunnel.local → 127.0.0.1
localtunnel.local → 127.0.0.1Вы можете сделать это в /etc/hosts или использовать эту причудливую утилиту-призрак.
Я потерялся здесь, но все же я редактировал свой /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
Следующий шаг...
Теперь вы можете запустить сервер. Он основан на файле конфигурации в config. Вы можете сделать свой собственный, но этот настроен на запустите сервер на порте 9999 и ожидайте имя хоста localtunnel.local
ginkgo config/default.conf.py
Какой? В любом случае... Я создал myconfig.conf.py на основе файлов в localtunnel repo dir /deploy
:
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 не работает.
Как это исправить? И где мне нужно изменить для изменения конечного субдомена?
Извините за жуткий английский.
Edit
Я следовал за предложением Павла и сделал понижение. Но, хотя изменения и произошли, ошибки все еще происходят. процесс гинкго:
$ 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
Хотя ginkgo не дает никакой ошибки, localtunnel все еще поднимает ошибки, отличные от предыдущих ошибок. По-видимому, он пытается получить "/t/example" в процессе подключения.