(數據科學學習手札66)在ubuntu服務器上部署shiny


一、簡介

  shiny是R中專門用於開發輕量級web應用的框架,在本地寫一個shiny應用並調用非常方便,但如果你希望你的shiny應用能夠以遠程的方式提供給更多人來使用,就需要將寫好的shiny應用部署到服務器上,主要有兩種方式,第一種是將shiny應用發布在shinyapps上,第二種是將你的shiny應用部署到自己租用的服務器上,前者比較方便但遇到一些R包環境或中文顯示等問題時幾乎是無解的,而后者雖然麻煩,但更為自由,且從0開始自己動手的過程又何嘗不是一種極大的樂趣呢,本文就將針對在ubuntu 16.04服務器上部署shiny server的流程進行詳細的說明;

 

二、環境配置

2.1 服務器配置說明

  我使用的服務器是阿里雲ECS,ubuntu 16.04,2核8G內存,40G系統盤,如果條件允許的話,建議內存不要選擇過小,否則在編譯安裝一些R包如raster時會內存不足(當然你也可以通過swap的方式來增加虛擬內存,但速度是非常慢的),用於連接服務器的工具為putty,通過putty登入服務器:

2.2 安裝最新版R

  首先我們需要安裝最新版的R(寫作此文時最新的穩定版本為3.6.1),查看R官網對於ubuntu安裝最新版R的介紹:

  按照上述步驟,首先用vim打開對應的sources.list文件:

sudo vim /etc/apt/sources.list

 

   按i進入編輯模式,結合我們系統版本,把前面R官網說明頁面中的deb https://cloud.r-project.org/bin/linux/ubuntu xenial-cran35添加進文件中,按esc后,再按shift+:,輸入wq完成寫入並退出過程:

  接着執行下列命令來安裝最新版的R,遇到y/n全部選擇y:

sudo apt-get update
sudo apt-get install r-base

  這時查看R版本:

  這時可以看到我們已經成功安裝了最新版本的R。

 

2.3 安裝Rstudio與Rstudio Server

  接下來我們來安裝Rstudio以及Rstudio Server,用於遠程編寫及管理服務器上的R程序,在官網對應的下載頁面找到對應我們系統版本的geb格式安裝包下載鏈接:

  Rstudio:

  Rstudio Server:

  其實可以在服務器中輸入wget 下載鏈接 來下載對應的文件,但是無奈這樣下速度太慢,於是我在本地電腦用了梯子之后以很快的速度下載了Rstudio的geb文件,然后用pscp上傳到我們的服務器上的指定目錄下:

  除此之外還需要安裝用以打開geb格式文件的相關程序:

sudo apt-get install gdebi

   接下來執行下列命令安裝Rstudio:

 sudo gdebi rstudio-1.2.1335-amd64.deb

  同樣的方式,我們用pscp上傳Rstudio Server的安裝包到剛才的目錄下執行下列語句:

sudo gdebi rstudio-server-1.2.1335-amd64.deb

  在完成上述命令后,我們可以通過訪問http://你的服務器公網IP:8787來使用Rstudio Server服務:

  這里輸入的賬戶和密碼與服務器登錄賬戶與密碼一致,這里不得不吐槽一下Rstudio Server的傻逼設定,這里登入的賬戶和密碼不能已獲取超級用戶權限,沒關系,我們新建一個沒有超級用戶權限的用戶:

sudo adduser 用戶名

  這樣我們就可以用這個無超級用戶權限的賬號登入Rstudio Server:

  可以看到熟悉的界面,就是個在線版的Rstudio,可以通過它來方便地修改服務器上的R代碼。

 

2.4 安裝shiny和shiny server

  接下來到了最重要的地方,我們來安裝shiny和shiny server,首先我們在服務器上的R環境中安裝shiny包:

  安裝成功:

  接下來安裝shiny server,同樣的在本地從官網下載對應的geb安裝包,然后用pscp上傳到指定目錄下:

  執行下列命令來安裝shiny server:

sudo gdebi shiny-server-1.5.9.923-amd64.deb

  安裝完成后訪問 http://服務器公網IP:3838,這是shiny server的默認導引頁,若能顯示正常則證明shiny server安裝成功:

  這時可以發現右側下方的應用沒有正常顯示,但這里並沒有明確顯示具體的報錯信息,為了在shiny應用出錯時能顯示具體的錯誤信息,我們需要修改shiny server的配置文件,執行下列命令打開shiny server的配置文件:

vim /etc/shiny-server/shiny-server.conf

  如圖所示位置添加上兩行語句用於設置shiny應用出錯時顯示具體錯誤信息,保存退出,重新訪問剛才的頁面:

  可以看出這時顯示的報錯信息提示我們缺失rmarkdown包,在R環境中安裝rmarkdown后再次訪問此頁面:

  這時可以看到對應的應用都已正常顯示,而這兩個應用所在的路徑在shiny server的配置文件中有說明:

  打開對應路徑可以看到hello和rmd兩個文件夾,每個文件夾代表一個應用,其內部擁有標准的shiny應用的ui.R和server.R,有時也會有global.R來輔助程序運行:

  同樣的,我們可以修改配置文件中的默認應用路徑到我們自己的應用位置,而在管理shiny server運行上,主要用到下列命令:

#查看狀態
sudo systemctl status shiny-server
#開啟
sudo systemctl start shiny-server
#停止
sudo systemctl stop shiny-server
#重啟
sudo systemctl restart shiny-server

  而直接訪問應用就是在剛才的引導頁url后面添加路徑信息,如我們直接來訪問hello應用,http://服務器公網IP:3838/sample-apps/hello/ :

  至此,我們就完成了在ubuntu上配置部署shiny應用的全部工作,當你想要部署新的應用時,只需要將應用對應文件夾放入應用默認目錄下再按照格式訪問即可。

 

  以上就是本文的全部內容,如有筆誤或不清楚之處望指出!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM