Lưu trữ và thiết lập các ứng dụng sáng bóng của riêng mình mà không cần máy chủ sáng bóng


95

Tôi đang cố gắng cung cấp các ứng dụng sáng bóng cho đồng nghiệp của mình mà không cần họ phải chạy hoặc thậm chí phải cài đặt R.

Vì vậy, tôi đọc trang web này và tìm thấy câu này:

Nếu bạn đã quen với việc lưu trữ web hoặc có quyền truy cập vào bộ phận CNTT, bạn có thể tự lưu trữ các ứng dụng Shiny của mình.

trong phần ' Chia sẻ dưới dạng trang web '.

Tôi có thể làm cái này như thế nào?

Vấn đề là công ty của tôi bị ràng buộc với một số hạn chế nhất định liên quan đến lưu trữ web và bảo mật, v.v. và sẽ không (hiện tại) trả tiền cho một máy chủ sáng bóng.

Nhưng câu trên cho tôi hy vọng tự mình sắp đặt điều gì đó để thuyết phục họ.


Câu trả lời:


87

Nếu PC của bạn và PC của đồng nghiệp thuộc cùng một mạng LAN, thì điều này khá dễ dàng đạt được. Chỉ cần chạy ứng dụng của bạn thông qua:

runApp(host="0.0.0.0",port=5050)

Giá trị được đặt thông qua hostđối số cho biết chấp nhận bất kỳ kết nối nào (không chỉ từ localhost). Đối portsố có thể giả định bất kỳ giá trị nào bạn muốn (chỉ cần đảm bảo tránh để chọn các cổng được sử dụng bởi các dịch vụ khác như sshhoặc http). Sau đó, ghi lại địa chỉ IP cục bộ của bạn (nếu bạn đang sử dụng Linux, bạn có thể xem qua ifconfig). Giả sử IP của bạn là 192.168.1.70. Đồng nghiệp của bạn có thể sử dụng ứng dụng của bạn bằng cách chèn vào thanh địa chỉ của trình duyệt của họ 192.168.1.70:5050, tức là IP của bạn theo sau :và số cổng bạn đã chọn.

Nếu bạn muốn truy cập từ bên ngoài mạng LAN của mình, bạn có thể hướng bộ định tuyến tới PC khi ai đó kết nối với IP công cộng của bạn thông qua cổng 5050.


2
Cảm ơn bạn. Tôi sẽ thử nó vào thứ Hai. Nhưng điều này có nghĩa là tôi phải có R và ứng dụng đang chạy trong khi những người khác truy cập nó?
schlusie

2
Đúng. Ứng dụng của bạn phải đang chạy trên máy tính của bạn.
nicola

5
Được chứ. Bây giờ tôi đã thử nó và nó đã hoạt động. Nhưng có khả năng nào mà không chạy ứng dụng trên máy của tôi không? như tôi đã nói, chúng tôi có quyền truy cập vào một bộ phận CNTT và một số máy chủ và câu trích dẫn cho thấy khả năng làm điều đó.
schlusie

3
Ứng dụng phải chạy ở đâu đó. Máy tính lưu trữ nó phải có R, sáng bóng và tất cả các phụ thuộc cần thiết để làm cho nó chạy.
nicola

6
Đây là một bài đăng rất hữu ích - câu hỏi tiếp theo của tôi là, bao nhiêu người có thể truy cập ứng dụng cùng một lúc?
md1630

35

Chia sẻ ứng dụng qua mạng LAN như thế này khá tuyệt, nhưng nó là một loại hack. Tôi đã thử nó với một số đồng nghiệp và nó hoạt động, nhưng nó chỉ là một thủ thuật văn phòng hơn là một giải pháp bền vững.

Tôi vừa hoàn thành việc phát triển gói RInno cho vấn đề chính xác này, tức là khi một công ty sẽ không trả tiền cho Máy chủ Shiny hoặc có những lo ngại về bảo mật với các dịch vụ đám mây.

Để bắt đầu:

install.packages("RInno")
require(RInno)
RInno::install_inno()

Sau đó, bạn chỉ cần gọi hai hàm để tạo khung cài đặt:

create_app(app_name = "myapp", app_dir = "path/to/myapp")
compile_iss()

Nếu bạn muốn thêm R cho đồng nghiệp của mình chưa cài đặt nó, hãy thêm include_R = TRUEvào create_app:

create_app(app_name = "myapp", app_dir = "path/to/myapp", include_R = TRUE)

Nó mặc định bao gồm sáng bóng, magrittr và jsonlite, vì vậy nếu bạn đang sử dụng các gói khác như ggplot2 hoặc plotly, chỉ cần thêm chúng vào pkgsđối số. Bạn cũng có thể bao gồm các gói GitHub vào remotesđối số:

create_app(
    app_name = "myapp", 
    app_dir  = "path/to/myapp"
    pkgs     = c("shiny", "jsonlite", "magrittr", "plotly", "ggplot2"),
    remotes  = c("talgalili/installr", "daattali/shinyjs"))

Nếu bạn quan tâm đến các tính năng khác, hãy xem FI Labs - RInno


3
Chỉ dành cho Windows ^^
pawamoy 4/1017

2
Đúng vậy, tôi đã mua một máy tính xách tay Linux và đang tìm cách hỗ trợ Ubuntu tiếp theo
Jonathan Hill

7

Bạn có thể muốn xem giải pháp mã nguồn mở sáng bóng .

Sử dụng glossproxy, bạn sẽ phải bọc các ứng dụng của mình trong một bộ chứa docker để lưu trữ chúng.

Tại đây, bạn có thể tìm thấy hướng dẫn về cách triển khai ứng dụng sáng bóng trong bộ chứa docker (btw. Là một phương pháp hay, ngay cả khi không sử dụng glossproxy, để duy trì sự phụ thuộc của ứng dụng).

Có sẵn các phương pháp xác thực và mở rộng quy mô khác nhau .


3

Gần đây tôi đã cài đặt Shiny trên máy chủ Hệ điều hành Centos 7 Linux mà chúng tôi có cục bộ. Chúng tôi đã sử dụng hướng dẫn bên dưới cho hầu hết các phần. https://www.vultr.com/docs/how-to-install-shiny-server-on-centos-7

Vui lòng đặt bất kỳ câu hỏi nào về các vấn đề thiết lập tại đây để bất kỳ ai khác sử dụng hướng dẫn có thể xem câu trả lời!

Chúng tôi cũng đã xem xét việc đẩy nó lên trên một máy chủ AWS, tự chọn vì nội dung nhạy cảm. Nếu không, cả hai giải pháp trông giống nhau. Hệ thống Linux và Shiny nhẹ, bạn có thể chạy nó trên máy chủ Amazon miễn phí!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.