2012-05-14 31 views
10

Tôi đang sử dụng localtunnel v1. Nhưng tôi thấy rằng v2 cho phép bạn tùy chỉnh tên miền phụ, và tôi cần tính năng này.Cách chạy localtunnel v2 đúng cách

Tôi làm theo hướng dẫn được mô tả trong các README từ repository, nhưng nó làm tôi bối rối trong một số phần và, cuối cùng, nó không hoạt động.

Bước đầu tiên là chạy một số ứng dụng web: được chọn, trên cổng số. 8000.

Sau đó, nó nói điều gì đó về tên máy chủ:

Localtunnel làm một số công cụ với tên máy chủ, vì vậy bạn muốn thiết lập hai hostname. Một cho đăng ký localtunnel, một cho localtunnel của bạn. Thông thường nó mong đợi một ký tự đại diện, nhưng chúng tôi sẽ chỉ hardcode một tên máy chủ cho đường hầm ví dụ này.

example.localtunnel.local -> 127.0.0.1
localtunnel.local -> 127.0.0.1

Bạn có thể làm điều này trong/etc/hosts hoặc sử dụng tiện ích ma ưa thích.

tôi đã bị lạc ở đây, nhưng tôi vẫn sửa /etc/hosts tôi:

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 

Bước tiếp theo ...

Bây giờ bạn có thể bắt đầu các máy chủ. Nó dựa trên tệp cấu hình trong thư mục cấu hình . Bạn có thể tạo riêng của bạn, nhưng này một được cấu hình để chạy các máy chủ trên cổng 9999 và dự kiến ​​tên máy localtunnel.local

ginkgo config/default.conf.py

Mà một trong những? Dù sao ... tôi đã tạo myconfig.conf.py dựa trên các tập tin trong thư mục localtunnel repo của /deploy:

port = 9999 
hostname = 'localtunnel.local' 
service = 'localtunnel.server.TunnelBroker' 

Tuy nhiên, khi tôi chạy:

lt --broker 127.0.0.1:9999 --name example 8000 

tôi nhận:

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 

Và trong quá trình ginkgo:

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 

Và, rõ ràng là, http://example.localtunnel.local:9999 không hoạt động.

Cách sửa lỗi này? Và nơi tôi phải sửa đổi để thay đổi tên miền phụ cuối cùng?

Xin lỗi về tiếng anh đáng sợ.


Sửa

Tôi đã theo các paul gợi ý và đã làm hạ cấp. Nhưng mặc dù những thay đổi đã xảy ra nhưng vẫn xảy ra lỗi. quá trình ginkgo:

$ 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 

quá trình 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 

Mặc dù ginkgo không đưa ra bất cứ lỗi ngay bây giờ, vẫn localtunnel nâng lỗi khác nhau từ các lỗi trước đó. Rõ ràng nó cố gắng GET "/ t/example" trong quá trình kết nối.

Trả lời

2

Dường như phần mềm này đang mong đợi một phiên bản cũ hơn của ws4py. current version (0.2.1) của ws4py khớp với những gì có vẻ như bạn có, trong khi 0.1.5 version of ws4py khớp với những gì localtunnel đang cố gắng sử dụng.

Hạ cấp xuống ws4py 0.1.5 có thể đủ để giải quyết các sự cố bạn đang gặp phải.

Mặt khác, mặc dù, điều này dường như không phải là phần mềm được hỗ trợ tốt nhất trên thế giới. Bạn có chắc đó là giải pháp phù hợp cho vấn đề của bạn không? Tôi đã xem xét mã và tất cả các tài liệu được cung cấp trong repo đó, và những gì tôi nhận được là nó thiết lập các tcp-tunnel-over-json-over-websockets lạ này (vâng, websockets, cho một cái gì đó với python trên cả hai phía máy chủ và phía máy khách!), thậm chí không cung cấp bất kỳ khả năng bảo mật hoặc mã hóa cụ thể nào hoặc khả năng mạnh mẽ của chính nó và dường như không làm được gì mà các công cụ phổ biến khác không thể làm tốt hơn. Nhưng được, tôi có thể thiếu một cái gì đó quan trọng.

+0

Có bất kỳ thông tin nào khác mà tôi có thể cung cấp hoặc giải thích để cải thiện câu trả lời của tôi ở đây không? –

+0

Một nghìn lời xin lỗi về sự chậm trễ trong phản hồi ... Nhưng chỉ downgrading ws4py không hoạt động. Vui lòng xem chỉnh sửa của tôi. – borges

+0

Và về nhận xét của bạn, mục tiêu của tôi với công cụ này chỉ là chia sẻ các máy chủ web cục bộ để kiểm tra các tính năng không liên quan đến bảo mật. Nếu bạn biết bất kỳ công cụ nào làm như vậy, tôi rất muốn biết! – borges

1

Tôi nghĩ bạn phải tuân thủ các hướng dẫn để thiết lập máy chủ localtunnel.com (ví dụ: nếu bạn muốn chạy máy chủ localtunnel của mình trên một số miền khác).

Cài đặt localtunnel v2 để sử dụng bình thường phải dễ dàng như chạy pip install localtunnel (có thể với sudo).

Khi đã xong, chỉ cần chạy localtunnel-beta -n <subdomain> 8000

Để biết thêm chi tiết, xem Jeff's blog post.