Shiny生產(chǎn)環(huán)境部署與共享

result

前段時間看到有人在問怎么讓自己的shiny程序讓別人能夠看到,今天來寫篇文章總結(jié)

一.在同一局域網(wǎng)內(nèi)

在同一局域網(wǎng)內(nèi)的話很簡單只要對方能訪問到你的ip和shiny端口就行,直接訪問就行

  • 先看下兩臺機子的ip

跑shiny服務(wù)的主機一般是你自己的機子


macip

訪問你應(yīng)用的主機


windowsip

可以看到在同一網(wǎng)段內(nèi)的孤钦!
  • 部署shiny應(yīng)用

這邊的話要自己指定host為0.0.0.0类咧,不然默認是127.0.0.1臂外,那別人是訪問不到的
runApp("Downloads/csfz/wenjianshangchuan/test1/app.R",port = 7777,host="0.0.0.0")

  • 可以看到在本機127可以訪問,而在另一臺上也可以配猫,注意這邊訪問的地址
macshiny

windowsshiny

所以這種方式的話在局域網(wǎng)內(nèi)是很容易實現(xiàn)的3旨摹拼苍!

二.在服務(wù)器上部署

在服務(wù)器上部署的話就很方便共享啦

  • 第一種方式是去先在服務(wù)器上部署shinyServer独令,然后把你的shiny工程放入他的默認目錄下就可以了愕秫。安裝過程的話網(wǎng)上隨便一搜就有了。
  • 第二種方式的話是使用docker,個人比較推薦的挟炬,方便快捷拿來就用鸥滨。
    1. 安裝docker(docker應(yīng)用還是很廣的,裝一下準沒錯)
    2. 去dockerhub找一下shiny相關(guān)的鏡像
      • 這邊簡單點直接docker pull 這個鏡像谤祖,然后docker exec 或 run 進入容器婿滓,然后進入R進行install.packages 安裝你的shiny應(yīng)用所需要的包
      • 第二種的話比較推薦,還是出于方便部署的原因,去github上把這個鏡像的工程目錄git下來然后修改Dockerfile

docker pull quantumobject/docker-shiny

docker run -d -p 3838:3838 -v <你的shinyapp路徑>:/srv/shiny-server -ti quantumobject/docker-shiny /bin/bash

進去后輸入R粥喜,然后安裝你需要的依賴包就行

第二種方法
git clone https://github.com/QuantumObject/docker-shiny

修改dockerfile,主要是在安裝包那邊把你的包加上凸主,然后把repos改成清華的,為了速度。(這邊是我加了我的demo的包容客,各位按需加就行)

#name of container: docker-shiny
#version of container: 0.6.1
FROM quantumobject/docker-baseimage:18.04
MAINTAINER willnight  "willnight@yeah.net"

# Update the container
# Installation of necessary packages/software for this container...
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y -q r-base  \
                    r-base-dev \
                    libssl-dev \
                    libsasl2-dev \
                    gdebi-core \
                    libapparmor1 \
                    sudo \
                    libssl1.0.0 \
                    libcurl4-openssl-dev \
                    && apt-get clean \
                    && rm -rf /tmp/* /var/tmp/*  \
                    && rm -rf /var/lib/apt/lists/*

RUN R -e "install.packages('shiny', repos='https://mirrors.tuna.tsinghua.edu.cn/CRAN/')" \
          && update-locale  \
          && wget https://download3.rstudio.org/ubuntu-14.04/x86_64/shiny-server-1.5.9.923-amd64.deb \
          && dpkg -i --force-depends shiny-server-1.5.9.923-amd64.deb \
          && rm shiny-server-1.5.9.923-amd64.deb \
          && mkdir -p /srv/shiny-server; sync  \
          && mkdir -p  /srv/shiny-server/examples; sync \
          && cp -R /usr/local/lib/R/site-library/shiny/examples/* /srv/shiny-server/examples/.

RUN  R -e "install.packages('rmarkdown', repos='https://mirrors.tuna.tsinghua.edu.cn/CRAN/')"
RUN  R -e "install.packages(c('devtools','shinydashboard','shinythemes','DT','openssl','formattable','readxl','mongolite','lubridate','glue','openxlsx','shinydashboardPlus','shinyWidgets'), repos='https://mirrors.tuna.tsinghua.edu.cn/CRAN/')"
RUN  R -e "devtools::install_github('nik01010/dashboardthemes')"
##startup scripts
#Pre-config scrip that may be needed to be run one time only when the container run the first time .. using a flag to don't
#run it again ... use for conf for service ... when run the first time ...
RUN mkdir -p /etc/my_init.d
COPY startup.sh /etc/my_init.d/startup.sh
RUN chmod +x /etc/my_init.d/startup.sh

##Adding daemons to containers
RUN mkdir /etc/service/shiny-server /var/log/shiny-server ; sync
COPY shiny-server.sh /etc/service/shiny-server/run
RUN chmod +x /etc/service/shiny-server/run  \
    && cp /var/log/cron/config /var/log/shiny-server/ \
    && chown -R shiny /var/log/shiny-server \
    && sed -i '113 a <h2><a href="./examples/">Other examples of Shiny application</a> </h2>' /srv/shiny-server/index.html

#volume for Shiny Apps and static assets. Here is the folder for index.html (link) and sample apps.
VOLUME /srv/shiny-server

# to allow access from outside of the container to the container service
# at the ports to allow access from firewall if accessing from outside the server.
EXPOSE 3838

# Use baseimage-docker's init system.
CMD ["/sbin/my_init"]
  1. 測試運行

上面的步驟做完運行就很簡單了
docker run -d -p 3838:3838 -v /root/Myrpro/:/srv/shiny-server myshiny
效果 http://120.78.66.186:3838/test1/

  • 最后如果測試成功后可以通過docker-compose 或者 k8s進行部署秕铛。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市缩挑,隨后出現(xiàn)的幾起案子但两,更是在濱河造成了極大的恐慌,老刑警劉巖供置,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谨湘,死亡現(xiàn)場離奇詭異,居然都是意外死亡芥丧,警方通過查閱死者的電腦和手機紧阔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來续担,“玉大人擅耽,你說我怎么就攤上這事∥镉觯” “怎么了乖仇?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵憾儒,是天一觀的道長。 經(jīng)常有香客問我乃沙,道長起趾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任警儒,我火速辦了婚禮训裆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蜀铲。我一直安慰自己边琉,他們只是感情好,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布记劝。 她就那樣靜靜地躺著艺骂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪隆夯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天别伏,我揣著相機與錄音蹄衷,去河邊找鬼。 笑死厘肮,一個胖子當著我的面吹牛愧口,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播类茂,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼耍属,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了巩检?” 一聲冷哼從身側(cè)響起厚骗,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎兢哭,沒想到半個月后领舰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡迟螺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年冲秽,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片矩父。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡锉桑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出窍株,到底是詐尸還是另有隱情民轴,我是刑警寧澤攻柠,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站杉武,受9級特大地震影響辙诞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜轻抱,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一飞涂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧祈搜,春花似錦较店、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蘸秘,卻和暖如春官卡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背醋虏。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工寻咒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人颈嚼。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓毛秘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親阻课。 傳聞我的和親對象是個殘疾皇子叫挟,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容