2013-06-04 34 views
7

Để xây dựng một số dịch vụ web với R, tôi thường sử dụng RApache nhưng tôi muốn có một cái nhìn tại Shiny để xem những gì nó có thể làm. Vấn đề là đối với tình huống này, nơi tôi đang hình dung nó để sử dụng, tôi không có một máy chủ có sẵn, nơi tôi có thể chạy R & sáng bóng, và tôi cũng không thể chuyển dữ liệu sang máy khác nơi nó chạy. Tôi chỉ có một máy tính để bàn và tôi muốn hiển thị ứng dụng Sáng bóng cho những người dùng khác mà không cần họ cài đặt R trên máy tính để bàn của họ và không làm phiền CNTT về cài đặt đó.sáng bóng với R xách tay?

Do đó, câu hỏi của tôi. Có thể tôi cài đặt R xách tay - http://sourceforge.net/projects/rportable/files/R-Portable/ trên một ổ chia sẻ được chia sẻ với đồng nghiệp và ứng dụng Sáng bóng có thể tương tác với phiên bản R xách tay. Nếu điều này là có thể, có ai đó đã thử nó và sẵn sàng chia sẻ một số mã của mình để chứng minh rằng nó hoạt động?

+0

Tôi nghĩ rằng đây là câu hỏi dành cho siêu người dùng hơn là trao đổi ngăn xếp như cài đặt phần mềm, không mã hóa – Simkill

+0

Tôi không quan tâm đến việc cài đặt phần mềm. Tôi biết cách làm. Tôi chỉ quan tâm đến cách Shiny biết R giao tiếp với ai. – jwijffels

+0

Tôi thường xuyên làm việc này. Tôi đã cài đặt các thư viện R + trên máy chủ tệp và chia sẻ bản đồ với các tệp ui.r en server.R thông qua máy chủ tệp. – JT85

Trả lời

3

Điều đó sẽ hoạt động tốt, giả sử bạn có thể thiết lập R-Portable để có thư viện gói di động. Shiny không khởi động R, bạn chạy R và sau đó từ đó tải và khởi động ứng dụng Shiny của bạn (sử dụng shiny::runApp()), và sau đó trình duyệt và quá trình R giao tiếp bằng cách sử dụng TCP.

Nếu ứng dụng của bạn không cần phải ở chế độ riêng tư, bạn cũng có thể đăng ký tài khoản trên dịch vụ Lưu trữ sáng bóng của RStudio. Nó hoàn toàn miễn phí trong khi ở bản beta. https://rstudio.wufoo.com/forms/shiny-server-beta-program/

+0

Tuyệt vời. Cám ơn vì đã xác nhận. Tôi sẽ thử thiết lập R-portable. – jwijffels

+0

chạy sáng bóng và lắng nghe theo mặc định trên cổng 8100, nhưng tôi không thể nhìn thấy nếu nó chỉ trên localhost hoặc trên tất cả các giao diện. Giả sử nó * có thể * lắng nghe trên các giao diện bên ngoài thì bạn chỉ cần chạy nó và cung cấp URL cho bất kỳ ai bạn muốn xem ứng dụng của mình. Các cổng khác với cổng 80 có thể là một vấn đề với tường lửa của mọi người, và cổng 80 yêu cầu quyền root (trên Linux ít nhất), do đó bạn sẽ chạy R dưới dạng root ... – Spacedman

+0

Hmm, tôi đã thử R-portable với thư viện (sáng bóng); runExample ("01_hello"); nhưng tôi nhận được: "Lỗi trong as.environment (x): đối tượng không hợp lệ cho 'as.environment'", do cacheContext <- CacheContext $ new(). Bất kỳ manh mối nào về nguyên nhân gây ra lỗi này? Chạy nó với các công trình R không di động tuy nhiên ... vậy sự khác biệt giữa 2 là gì? – jwijffels

2

Hệ điều hành: Windows 7 - 64 bit

Thực hiện theo các bước như đã giải thích trong các liên kết dưới đây, ngoại trừ tạo ra một tập tin thực thi duy nhất để chạy các ứng dụng sáng bóng, vì những gợi ý để khởi động trình duyệt web trong liên kết web không hoạt động (trình duyệt web mở ra mà không có nội dung ứng dụng), ít nhất là đối với tôi.

tập lệnh batch này tìm thấy một UNUSED PORT không có đặc quyền và sử dụng nó để mở một ứng dụng web địa phương (Portable R Shiny App) sử dụng di động trình duyệt web google chrome từ một ổ đĩa USB Flash. Trong liên kết web ở trên, đề xuất của tác giả để tạo runShinyApp.R và run.bat riêng biệt được cô đặc thành một tệp lô duy nhất như được đưa ra dưới đây.

@echo off 
    title 'My Shiny APP' 

    setlocal ENABLEDELAYEDEXPANSION 

    for /l %%X in (1025,1,65535) do ( 
     netstat -o -n -a | findstr :%%X 
     if !ERRORLEVEL! neq 0 ( 
      set avail_port=%%X 
      goto eof 
     ) 
    ) 

    :eof 
    SET ROPTS=--no-save --no-environ --no-init-file --no-restore --no-Rconsole 

    start "" ".\GoogleChromePortable\App/Chrome-bin/chrome.exe" "http://localhost:!avail_port!/" 

    R-Portable\App\R-Portable\bin\Rscript.exe %ROPTS% -e "require(methods); shiny::runApp('./shiny', launch.browser = FALSE, port = !avail_port!)" 1> ShinyAppOut.log 2> ShinyAppMsg.log 
Các vấn đề liên quan