Parlak sunucu olmadan kendi parlak uygulamalarını barındırma ve kurma


98

İş arkadaşlarımın çalıştırmalarına veya hatta R'yi yüklemelerine gerek kalmadan parlak uygulamaları kullanıma sunmaya çalışıyorum.

Bu yüzden bu web sayfasını okudum ve şu cümleyi buldum:

Web barındırma konusunda bilgiliyseniz veya bir BT departmanına erişiminiz varsa, Shiny uygulamalarınızı kendiniz barındırabilirsiniz.

' Web sayfası olarak paylaş ' bölümü altında .

Bunu nasıl yapabilirim?

Sorun şu ki, şirketim web barındırma ve güvenlik vb. İle ilgili belirli kısıtlamalara bağlı ve (şimdilik) parlak bir sunucu-profesyonel için ödeme yapmayacak.

Ancak yukarıdaki cümle, onları ikna etmek için kendimiz bir şeyler kurmam için bana umut veriyor.


Yanıtlar:


89

Bilgisayarınız ve iş arkadaşlarınızın bilgisayarları aynı LAN'a aitse, bunu başarmak oldukça kolaydır. Uygulamanızı şunlarla çalıştırın:

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

Bağımsız hostdeğişken aracılığıyla ayarlanan değer, herhangi bir bağlantıyı (yalnızca localhost'tan değil) kabul etmeyi söyler. portBağımsız değişken (tıpkı diğer hizmetler tarafından kullanılan bağlantı noktalarını seçmek için önlemek için temin edilmesini istediğiniz herhangi bir değer olabilir sshveya http). Ardından, yerel IP'nizi not edin (linux altındaysanız, bunu görebilirsiniz ifconfig). IP adresinizin olduğunu varsayalım 192.168.1.70. Meslektaşlarınız uygulamanızı tarayıcılarının adres çubuğuna girerek kullanabilirler 192.168.1.70:5050, yani IP'nizi ve ardından :seçtiğiniz bağlantı noktası numarasını.

LAN'ınızın dışından erişim istiyorsanız, birisi 5050 bağlantı noktası üzerinden genel IP'nize bağlandığında yönlendiricinizi PC'nize yönlendirebilirsiniz.


2
Teşekkür ederim. Pazartesi deneyeceğim. Ancak bu, diğerleri ona erişirken R ve uygulamanın çalışıyor olması gerektiği anlamına mı geliyor?
schlusie

5
Tamam. Şimdi denedim ve işe yaradı. Ancak uygulamayı makinemde çalıştırmadan bir olasılık var mı? Dediğim gibi, bir BT departmanına ve bazı sunuculara erişimimiz var ve alıntılanan cümle bunu yapma olasılığını gösteriyor.
schlusie

3
Uygulama bir yerde çalışmalıdır. Onu barındıran makinenin çalışması için R, parlak ve gerekli tüm bağımlılıklara sahip olması gerekir.
nicola

7
Bu çok faydalı bir gönderi - benim takip sorum şu, uygulamaya aynı anda kaç kişi erişebilir?
md1630

3
Merhaba @nicola, "Birisi genel IP'nize 5050 bağlantı noktası üzerinden bağlandığında yönlendiricinizi PC'nize nasıl yönlendireceğim" konusunda bana daha fazla bilgi verir misiniz? Teşekkür ederim!
just_rookie

35

Uygulamaları LAN üzerinden bu şekilde paylaşmak oldukça güzel, ancak bir çeşit hack. Bazı iş arkadaşlarıyla denedim ve işe yarıyor, ancak sürdürülebilir bir çözümden çok bir ofis numarası.

Tam bu sorun için RInno paketini geliştirmeyi yeni bitirdim , yani bir şirketin Shiny Server için ödeme yapmayacağı veya bulut hizmetleriyle ilgili güvenlik endişeleri olduğunda.

Başlamak:

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

O zaman bir kurulum çerçevesi oluşturmak için sadece iki işlevi çağırmanız gerekir:

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

Eğer iş arkadaşlarınızı R dahil etmek isterseniz kim ekleyin, neden yüklü olmayan include_R = TRUEiçin create_app:

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

Öntanımlı olarak parlak, magrittr ve jsonlite içerir, bu nedenle ggplot2 veya plotly gibi diğer paketleri kullanıyorsanız, bunları pkgsargümana eklemeniz yeterlidir . Ayrıca remotesargümana GitHub paketlerini de dahil edebilirsiniz :

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

Diğer özelliklerle ilgileniyorsanız, FI Labs - RInno'ya bakın


3
Sadece Windows için ^^
pawamoy

2
Evet, bir Linux dizüstü bilgisayar satın aldım ve bir sonraki Ubuntu'yu desteklemenin yollarını arıyorum
Jonathan Hill

7

Açık kaynaklı çözüm shinyproxy'ye bir göz atmak isteyebilirsiniz .

Shinyproxy kullanarak, uygulamalarınızı barındırmak için bir docker konteynerine sarmanız gerekecektir.

Burada , parlak bir uygulamanın bir docker konteynerinde nasıl dağıtılacağına dair bir kılavuz bulabilirsiniz (bu, uygulama bağımlılıklarını korumak için shinyproxy kullanmadan bile iyi bir uygulamadır).

Farklı kimlik doğrulama ve ölçeklendirme yöntemleri mevcuttur.


4

Shiny'i yakın zamanda yerel olarak sahip olduğumuz bir Centos 7 Linux işletim sistemi sunucusuna kurdum. Çoğunlukla aşağıdaki kılavuzu kullandık. https://www.vultr.com/docs/how-to-install-shiny-server-on-centos-7

Kurulum sorunları hakkında herhangi bir soru sormaktan çekinmeyin, böylece kılavuzu kullanan diğer herkes yanıtları görebilir!

Ayrıca, içerik hassas olduğu için bunu bir AWS sunucusunda yukarı itmeye de baktık. Aksi takdirde her iki çözüm de benzer görünüyordu. Linux ve Shiny sistemi hafiftir, onu ücretsiz Amazon sunucusunda çalıştırabilirsiniz!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.