โฮสติ้งและตั้งค่าแอพพลิเคชั่นเงางามของตัวเองโดยไม่ต้องใช้เซิร์ฟเวอร์


98

ฉันกำลังพยายามสร้างแอปพลิเคชันที่เป็นประกายให้กับเพื่อนร่วมงานของฉันโดยที่พวกเขาไม่ต้องเรียกใช้หรือติดตั้ง R

ดังนั้นฉันจึงอ่านหน้าเว็บนี้ และพบประโยคนี้:

หากคุณคุ้นเคยกับเว็บโฮสติ้งหรือมีสิทธิ์เข้าถึงแผนกไอทีคุณสามารถโฮสต์แอป Shiny ด้วยตัวคุณเอง

ภายใต้ส่วน ' แบ่งปันเป็นหน้าเว็บ '

ฉันจะทำเช่นนี้ได้อย่างไร?

ปัญหาคือ บริษัท ของฉันผูกพันกับข้อ จำกัด บางประการเกี่ยวกับเว็บโฮสติ้งและความปลอดภัยเป็นต้นและจะไม่ (ในตอนนี้) จ่ายเงินให้กับเซิร์ฟเวอร์โปร

แต่ประโยคข้างต้นทำให้ฉันมีความหวังที่จะสร้างบางสิ่งขึ้นมาเพื่อโน้มน้าวใจพวกเขา


คำตอบ:


89

หากพีซีของคุณและพีซีเพื่อนร่วมงานของคุณอยู่ใน LAN เดียวกันการดำเนินการนี้ทำได้ค่อนข้างง่าย เพียงเรียกใช้แอปของคุณผ่าน:

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

ค่าที่กำหนดผ่านhostอาร์กิวเมนต์บอกว่ายอมรับการเชื่อมต่อใด ๆ (ไม่ใช่เฉพาะจาก localhost) portอาร์กิวเมนต์สามารถสันนิษฐานได้ว่าค่าใด ๆ ที่คุณต้องการ (เพียงมั่นใจที่จะหลีกเลี่ยงเพื่อเลือกพอร์ตที่ใช้โดยบริการอื่น ๆ เช่นsshหรือhttp) จากนั้นจดบันทึก IP ในเครื่องของคุณ (หากคุณใช้งาน linux คุณสามารถดูได้ifconfig) บอกว่า IP 192.168.1.70ของคุณคือ เพื่อนร่วมงานของคุณสามารถใช้แอพของคุณได้โดยการแทรกในแถบที่อยู่ของเบราว์เซอร์ของพวกเขา192.168.1.70:5050เช่น IP ของคุณตามด้วย:และหมายเลขพอร์ตที่คุณเลือก

หากคุณต้องการเข้าถึงจากภายนอก LAN ของคุณคุณสามารถกำหนดเส้นทางเราเตอร์ของคุณไปยังพีซีของคุณเมื่อมีคนเชื่อมต่อกับ IP สาธารณะของคุณผ่านพอร์ต 5050


2
ขอขอบคุณ. ฉันจะลองในวันจันทร์ แต่นี่หมายความว่าฉันต้องมี R และแอพทำงานในขณะที่คนอื่นเข้าถึง?
schlusie

5
ตกลง. ตอนนี้ฉันลองแล้วและได้ผล แต่มีความเป็นไปได้ไหมที่ไม่ต้องเรียกใช้แอปบนเครื่องของฉัน อย่างที่ฉันพูดเราสามารถเข้าถึงแผนกไอทีและเซิร์ฟเวอร์บางตัวได้และประโยคที่ยกมานั้นบ่งบอกถึงความเป็นไปได้ที่จะทำ
schlusie

3
แอปต้องทำงานที่ไหนสักแห่ง เครื่องที่โฮสต์จะต้องมี R มันวาวและการอ้างอิงที่จำเป็นทั้งหมดเพื่อให้ทำงานได้
nicola

7
นี่เป็นโพสต์ที่มีประโยชน์มากคำถามติดตามของฉันคือมีกี่คนที่สามารถเข้าถึงแอปพร้อมกันได้
md1630

3
สวัสดี @nicola คุณช่วยให้ข้อมูลเพิ่มเติมเกี่ยวกับวิธี "ส่งเราเตอร์ไปยังพีซีของคุณเมื่อมีคนเชื่อมต่อกับ IP สาธารณะของคุณผ่านพอร์ต 5050" ได้ไหม ขอขอบคุณ!
just_rookie

35

การแชร์แอพผ่าน LAN แบบนี้ถือว่าเจ๋งมาก แต่ก็เป็นการแฮ็ค ฉันลองใช้กับเพื่อนร่วมงานบางคนและได้ผล แต่มันเป็นกลอุบายของสำนักงานมากกว่าวิธีแก้ปัญหาที่ยั่งยืน

ฉันเพิ่งพัฒนาแพ็คเกจRInnoสำหรับปัญหานี้เสร็จสิ้นนั่นคือเมื่อ บริษัท ไม่ยอมจ่ายเงินให้ Shiny Server หรือมีปัญหาด้านความปลอดภัยกับบริการคลาวด์

ที่จะเริ่มต้น:

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

จากนั้นคุณต้องเรียกใช้สองฟังก์ชันเพื่อสร้างกรอบการติดตั้ง:

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

หากคุณต้องการรวม R สำหรับเพื่อนร่วมงานของคุณที่ไม่ได้ติดตั้งให้เพิ่มinclude_R = TRUEไปที่create_app:

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

โดยค่าเริ่มต้นจะรวมมันวาว magrittr และ jsonlite ดังนั้นหากคุณใช้แพ็คเกจอื่นเช่น ggplot2 หรือวางแผนเพียงแค่เพิ่มเข้าไปในpkgsอาร์กิวเมนต์ คุณยังสามารถรวมแพ็คเกจ GitHub เข้ากับremotesอาร์กิวเมนต์:

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

หากคุณสนใจคุณสมบัติอื่น ๆ โปรดดูFI Labs - RInno


3
สำหรับ Windows เท่านั้น ^^
pawamoy

2
ใช่ฉันซื้อแล็ปท็อป Linux และกำลังมองหาวิธีรองรับ Ubuntu ต่อไป
Jonathan Hill

7

คุณอาจต้องการที่จะมีลักษณะที่ทางออกมาเปิดshinyproxy

การใช้ shinyproxy คุณจะต้องห่อแอปของคุณไว้ใน Docker container เพื่อโฮสต์

ที่นี่คุณสามารถดูคำแนะนำเกี่ยวกับวิธีปรับใช้แอพเงางามในคอนเทนเนอร์นักเทียบท่า (ซึ่ง btw เป็นแนวทางปฏิบัติที่ดีแม้จะไม่ใช้ shinyproxy เพื่อรักษาการพึ่งพาแอพ)

มีที่แตกต่างกันมีการตรวจสอบและปรับวิธีการใช้ได้


4

ฉันเพิ่งติดตั้ง Shiny บนเซิร์ฟเวอร์ Centos 7 Linux OS ที่เรามีในเครื่อง เราใช้คำแนะนำด้านล่างเป็นส่วนใหญ่ https://www.vultr.com/docs/how-to-install-shiny-server-on-centos-7

อย่าลังเลที่จะถามคำถามเกี่ยวกับปัญหาการตั้งค่าที่นี่เพื่อให้ทุกคนที่ใช้คำแนะนำสามารถดูคำตอบได้!

นอกจากนี้เรายังตรวจสอบการผลักดันมันขึ้นบนเซิร์ฟเวอร์ AWS ซึ่งเลือกสำหรับเราเองเนื่องจากเนื้อหามีความอ่อนไหว มิฉะนั้นโซลูชันทั้งสองจะดูเหมือนกัน ระบบ Linux และ Shiny มีน้ำหนักเบาคุณอาจใช้งานได้บนเซิร์ฟเวอร์ Amazon ฟรี!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.