摘要:使得非傳統(tǒng)程序員的使用者不必依賴于前端后端工程師就可以自己依照業(yè)務(wù)完成一些簡單的數(shù)據(jù)可視化工作,快速驗證想法的可靠性。本文以上的的新主機為例。
概述
本文將介紹如何通過Docker+Shiny-Server技術(shù)極速打造Web開發(fā),并通過實戰(zhàn)案例進行演示。
為什么使用ShinyShiny是R中的一種Web開發(fā)框架,使得R的使用者不必太了解css、js只需要了解一些html的知識就可以快速完成web開發(fā),且shiny包集成了bootstrap、jquery、ajax等特性,極大解放了作為統(tǒng)計語言的R的生產(chǎn)力。使得非傳統(tǒng)程序員的R使用者不必依賴于前端、后端工程師就可以自己依照業(yè)務(wù)完成一些簡單的數(shù)據(jù)可視化工作,快速驗證想法的可靠性。
為什么使用Docker如果說2年以前,你們沒有學(xué)習(xí)Git、GitHub你就落伍了?,F(xiàn)在,流行的方向則是Docker!Docker是一種類似于虛擬機的技術(shù),主要解決快速部署的問題,在Docker中安裝的軟件和主機中的軟件可以完全隔離,并通過Daocloud或者hub.docker.com等云服務(wù)快速建立Docker倉庫,快速復(fù)用Docker鏡像。Docker已經(jīng)不僅僅是DevOps人員手中的神器了,每一個開發(fā)者都應(yīng)該學(xué)會如何使用Docker。
由于Docker的標準交付特性使得 shiny 應(yīng)用在運維、部署、交付時都是標準化的,在大規(guī)模團隊協(xié)作時體現(xiàn)出了很大的價值,開發(fā)和運維人員不必再為環(huán)境配置擔(dān)心,提高了開發(fā)效率。而對于個人開發(fā)者,參加黑客馬拉松或者快速原型開發(fā),Docker也是不二之選,利用Docker線程級別的快速復(fù)用機制也使得一個上G的環(huán)境配置可以在很短的時間內(nèi)快速完成。
Docker的弊端在于對于個人開發(fā)者而言,想要構(gòu)建一個標準的Docker鏡像并提交到Docker Hub或自建的Docker Registery上需要按規(guī)定寫DockerFile, 有時候這反而會增加項目的復(fù)雜度。
準備VPS或任意一臺 類Unix服務(wù)器,本文選用了AWS的Ubuntu服務(wù)器作為示例。實際使用中Windows或者Mac電腦下載DockerToolBox軟件安裝docker后也可以使用。
部署 步驟一:安裝Docker首先,ssh進入linux主機。本文以AWS上的ubuntu14.04的新主機為例。
參考文獻1
ssh -i harryzhu.pem [email protected]
其次,安裝Docker相關(guān)的組件
sudo apt-get update wget -qO- https://get.docker.com/ | sh步驟二:安裝Shiny-Server
安裝完畢,從hub.docker.com拉去最新的shiny-server鏡像
docker run -d -p 3838:3838 quantumobject/docker-shiny
上面的中 docker run表示根據(jù)quantumobject/docker-shiny鏡像啟動一個新的容器。
-d表示以demon形式運行,掛在后臺運行。
-p 3838:3838表示將主機的3838端口和docker集群中的3838做端口映射
此外docker run在找不到鏡像時會先從docker hub中自動下載,下載完后自動再啟動容器。
訪問http://52.88.172.224:3838/
從登陸到部署,5行代碼搞定!
結(jié)束語如果想要加入更多Shiny的Web應(yīng)用可以從GitHub上找到大量的Shiny實例,然后根據(jù)你的需求稍微改造即可!
示例一:數(shù)據(jù)可視化下面舉一個例子,通過訪問Rstudio的官方shiny實例可以看到實例的目錄,在本地的R中執(zhí)行
if (!require(shiny)) install.packages("shiny") shiny::runGitHub("rstudio/shiny-examples", subdir="063-superzip-example")
你也可以訪問該網(wǎng)址http://shiny.rstudio.com/gallery/superzip-example.html看到在線的例子。
你將可以看到這一實例,通過修改subdir參數(shù)可以查看其他實例。
比如
shiny::runGitHub("rstudio/shiny-examples", subdir="066-upload-file")實例三:數(shù)據(jù)生成器 實例四:回歸模擬器 更多實例
現(xiàn)在,回到ubuntu主機上,進入剛才生成的docker容器中
docker exec -it docker-shiny /bin/bash
根據(jù)參考文獻2
進入網(wǎng)站顯示的文檔的根目錄,下載rstudio的shiny-server實例
cd /srv/shiny-server wget https://github.com/rstudio/shiny-examples/archive/master.zip unzip master.zip
現(xiàn)在重新訪問 http://52.88.172.224:3838/shiny-examples-master/ 你便可以任意選擇一個實例進行復(fù)用了。
實戰(zhàn)案例:在Segmentfault 2015 北京站的黑客馬拉松上,由幾名之前搞生物、基因的R語言使用者組成的基飯團隊(15組),基于shiny完成了一次漂亮的逆襲,最終獲得了大賽的優(yōu)勝獎一枚。
大賽報道傳送門
項目源代碼
Docker中文教程
參考資料Shinyproxy:deploy Shiny apps in an enterprise context
Shiny https: Securing Shiny Open Source with SSL
Password protect Shiny Apps
Shiny Database App (CRUD)
Shiny
Web Application Development with R and Apache
Persistent data storage in Shiny apps
Share data across sessions with shinyapps.io
Building Interactive Web Apps with Shiny
showmeshiny
Introducing shinyjs: perform common JavaScript operations in Shiny apps using plain R code
如何解決Shiny輸出的中文問題
shiny server deployment
shiny conference 2016
作為分享主義者(sharism),本人所有互聯(lián)網(wǎng)發(fā)布的圖文均遵從CC版權(quán),轉(zhuǎn)載請保留作者信息并注明作者 Harry Zhu 的 FinanceR專欄:https://segmentfault.com/blog...,如果涉及源代碼請注明GitHub地址:https://github.com/harryprince。微信號: harryzhustudio
商業(yè)使用請聯(lián)系作者。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/26487.html
摘要:而大多數(shù)數(shù)據(jù)科學(xué)研究的場景下,更快的速度也意味著更早地發(fā)現(xiàn)問題和完成檢驗假設(shè)的閉環(huán)。通常,數(shù)據(jù)科學(xué)被認為研究成果立即應(yīng)用到生產(chǎn)環(huán)境都是比較緩慢的一個過程。 showImg(https://segmentfault.com/img/remote/1460000005771293); 概述 在數(shù)據(jù)科學(xué)研究中,快速驗證想法是非常關(guān)鍵的一環(huán),而如何快速開發(fā)出數(shù)據(jù)產(chǎn)品則可以有效推動整個數(shù)據(jù)科學(xué)項...
摘要:而大多數(shù)數(shù)據(jù)科學(xué)研究的場景下,更快的速度也意味著更早地發(fā)現(xiàn)問題和完成檢驗假設(shè)的閉環(huán)。通常,數(shù)據(jù)科學(xué)被認為研究成果立即應(yīng)用到生產(chǎn)環(huán)境都是比較緩慢的一個過程。 showImg(https://segmentfault.com/img/remote/1460000005771293); 概述 在數(shù)據(jù)科學(xué)研究中,快速驗證想法是非常關(guān)鍵的一環(huán),而如何快速開發(fā)出數(shù)據(jù)產(chǎn)品則可以有效推動整個數(shù)據(jù)科學(xué)項...
摘要:類似包中的功能這很好的解決了的大數(shù)據(jù)級瓶頸問題。也支持分布式的機器學(xué)習(xí)算法,比如使用機器學(xué)習(xí)庫。部署本文將通過講解如何快速部署容器,并通過一些簡單的機器學(xué)習(xí)例子展示如何使用這個航母級別的組合拳。 showImg(https://segmentfault.com/img/remote/1460000004838121); 題圖為美國尼米茲核動力航空母艦 介紹 大數(shù)據(jù)時代,我們常常面對海量...
摘要:對于數(shù)據(jù)科學(xué)的研究可以說已經(jīng)是本文我將介紹如何以文檔定義應(yīng)用的方式成為數(shù)據(jù)科學(xué)中的標準交付。參考前文解密的數(shù)據(jù)科學(xué)部門如果構(gòu)建知識倉庫,作為一個謝大大的死忠,我很自然選擇了作為我文檔輸出的首選工具。 showImg(https://segmentfault.com/img/remote/1460000006760433?w=423&h=426); 概述 隨著近年來,Rstudio 通過...
閱讀 2960·2021-11-23 09:51
閱讀 3786·2021-11-22 15:29
閱讀 3243·2021-10-08 10:05
閱讀 1568·2021-09-22 15:20
閱讀 983·2019-08-30 15:56
閱讀 1080·2019-08-30 15:54
閱讀 741·2019-08-26 11:54
閱讀 2643·2019-08-26 11:32