[ShinyApp]第一次將ShinyApp部署到云服務(wù)器的經(jīng)歷

不知道各位是否經(jīng)歷過购岗,利用shinyapp官網(wǎng)的上傳方式(shinyapp.io)來部署我們的應(yīng)用啸澡,用戶上傳文件的速度過于緩慢卸奉,一個幾M的壓縮包要上傳N年! 為了滿足項目的需要泉蝌,有什么好的辦法解決這個問題呢?【背景】

我在網(wǎng)上看到有個博主遇到的情況和我類似揩晴,他建議將shinyapp部署到云服務(wù)器上勋陪。于是也嘗試將自己寫的app部署到云服務(wù)器上。

PS: 這是第一次用云服務(wù)器硫兰,另外沒有接觸過Linux系統(tǒng)粥鞋,可以說對這一套流程完全懵逼!
------ PART 1 云服務(wù)器(ECS)

話不多說瞄崇,直接開干呻粹!一開始我也看了許多博主的經(jīng)驗貼壕曼,然后基本上所用到的軟件就是shiny server,于是我就轉(zhuǎn)到這個軟件的官網(wǎng)等浊。嚯腮郊!好家伙,要Linux系統(tǒng)筹燕,這我一電腦windows轧飞,這Linux也不會啊,但是沒辦法撒踪,得認(rèn)清現(xiàn)實过咬。


Platform

下一步就是要下載一個帶Linux系統(tǒng)的云服務(wù)器了,于是我就轉(zhuǎn)到了某里云的網(wǎng)址制妄,一堆新奇玩意兒應(yīng)接不暇掸绞,如ECS,域名注冊,公網(wǎng)IP等等耕捞。那我們肯定是需要云服務(wù)器啦(ECS)衔掸。然后誤打誤撞,看見了有免費試用的頁面俺抽,這里就不放上面了敞映,讀者自行查找。結(jié)合最開始那個博主的帖子磷斧,我也嘗試試用了一臺1核2G的服務(wù)器振愿,
其中地域隨機分配的,1M帶寬弛饭,系統(tǒng)是ubuntu 20.04 64位冕末,然后買完就是下面這個樣子:


實例

但是,還沒完孩哑,我們要給這個新玩意兒配置安全組Kㄋ(別問我為什么,我也是學(xué)百度的做法)
更多->網(wǎng)絡(luò)和安全組->安全組配置->配置規(guī)則->手動添加->依次設(shè)置


安全組

其中描述隨便寫啦横蜒,點擊保存就OK了胳蛮。但是,我們怎么操控我們的服務(wù)器呢丛晌?點擊實例里面的操作(遠程連接)仅炊,里面有3種方案:Workbench,VNC遠程連接澎蛛,發(fā)送遠程命令抚垄。系統(tǒng)推薦使用第三種,但是我選擇第二種。第一次用VNC要設(shè)置實例密碼呆馁,6位數(shù)桐经,以后每次用這個登錄都必須要輸入VNC密碼!浙滤!設(shè)置好了之后阴挣,愉快的ubuntu操作頁面就出現(xiàn)了。
------ PART 2 R

首先引入眼簾的是纺腊,登錄頁面(當(dāng)時這里不知道輸啥畔咧,還以為是阿里云的賬號,然后瘋狂百度)揖膜,我們應(yīng)該輸入root誓沸,然后密碼是實例密碼,相當(dāng)于windows的初始管理員admin壹粟。然后就可以輸入Linux代碼啦拜隧!要修改配置,為了安裝R的最新版本煮寡,輸入命令

vim /etc/apt/sources.list
sources

要拉到底才看得見綠色的提示虹蓄,輸入E犀呼,進入編輯模式幸撕,插入

deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/

要結(jié)合R語言官網(wǎng)對ubuntu不同版本安裝的要求,我這里安裝的是R4.0的版本外臂。
輸完按ESC坐儿,然后按住shift+ : ,最底部可以輸入宋光,我們輸入wq貌矿,表示退出(PS:強制退出q!),退出后我們新建一個新用戶罪佳,為了shiny環(huán)境的部署逛漫,我們就直接取名為shiny,輸入:

useradd shiny 
passwd shiny 

此時會讓我們輸入shiny用戶的密碼赘艳,建議和root密碼一樣(以防遺忘)酌毡,然后我們給shiny添加root權(quán)限,輸入:

chmod +w /etc/sudoers
sudo vim /etc/sudoers 

注意這是在root下蕾管,如果你是在shiny用戶下枷踏,你要鍵入:sudo su
然后輸入root密碼就好了,如果你想切換到shiny用戶下掰曾,鍵入:sudo su shiny
上面2行命令輸完后旭蠕,就進入到sudoers編輯頁面,找到root ALL=(ALL:ALL) ALL,在他的下面輸入

shiny  ALL=(ALL:ALL)  ALL
shinyALL

此時退出編輯頁面掏熬,我們可能會遇見下面這種情況佑稠,


Error

強制退出!按住shift+ : ,最底部可以輸入q!旗芬,再刪除文件可寫權(quán)限讶坯,輸入:

chmod -w /etc/sudoers 

現(xiàn)在切換到shiny賬號,輸入

sudo su shiny

然后按照R官網(wǎng)的安裝說明岗屏,一步步安裝

R

然后輸入:

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

運行成功辆琅,就會出現(xiàn)下面的界面:


R

是不是感覺到一股熟悉的味道~,然后按q()退出这刷,輸入

sudo R -e "install.packages('shiny', repos = 'https://mirrors.#edu.cn/CRAN/')"

下載shiny包婉烟,注意你是在shiny賬戶下,以后下載所有的包都要在shiny賬戶下暇屋,不然你的shinyapp是運行不了的似袁。進一步,下載R包的可能依賴包咐刨,參考這位博主:

Ubuntu安裝R及R包 (bbsmax.com)

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

sudo add-apt-repository -y ppa:opencpu/imagemagick
sudo apt-get update
sudo apt-get install -y libmagick++-dev
sudo apt-get install libcurl4-openssl-dev

非常重要j夹啤!不然后續(xù)下載R包會自閉定鸟!

------ PART 3 shiny server

我們現(xiàn)在而涉,進入到安裝shiny server的環(huán)節(jié),先轉(zhuǎn)到官網(wǎng)


shiny server

按照上面說的联予,輸入:

sudo apt-get install gdebi-core
wget https://download3.rstudio.org/ubuntu-14.04/x86_64/shiny-server-1.5.16.958-amd64.deb
sudo gdebi shiny-server-1.5.16.958-amd64.deb

這時候啼县,我們要測試shiny是否安裝好,在瀏覽器中沸久,輸入你的公網(wǎng)IP季眷,就是云服務(wù)器實例那一欄里面的,隨后輸入: :3838卷胯,此時就可以進入到shiny的歡迎頁面子刮!


welcome

如果不能顯示,請讀者返回最開始的步驟窑睁,看看是不是在安全組里面挺峡,沒有加入3838!然后卵慰,歡迎頁面的右側(cè)例子是否能正常顯示沙郭,主要是右下角的app,如果出現(xiàn)錯誤裳朋,你必須像安裝shiny一樣病线,再安裝Rmarkdown吓著。
此外,還需要注意的是送挑,為了能夠明確的顯示報錯信息绑莺,我們必須修改shiny server的配置文件,鍵入:

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

按照之前所說的操作模式惕耕,像下面圖一樣纺裁,輸入前幾行:

preserve_logs true;
sanitize_errors false;
run_as shiny;
conf

然后保存退出編輯模式,這樣做的還有一個好處是司澎,我們之后部署的shinyapp如果出錯了欺缘,可以掉取日志來查看出錯原因!(之后介紹)

------ PART 4 文件上傳(FileZlia)

既然我們安裝好了R挤安,shiny谚殊,shiny server,現(xiàn)在最關(guān)鍵的問題變成了如何將我們已經(jīng)在本機調(diào)試過的app文件蛤铜,傳到云服務(wù)器上嫩絮?畢竟我不會Linux,要是能有像windows围肥,直接把文件拖到另外盤一樣不就好了剿干!Filezlia ! 具體安裝,以及Filezlia相關(guān)設(shè)置問題穆刻,參見這位博主寫的帖子置尔,非常詳細:

Filezilla使用教程_wy_091112的博客-CSDN博客_filezilla使用

注意,要同時下載FileZila的server端與client端蛹批!
輸入公網(wǎng)IP撰洗,賬號篮愉,密碼腐芍,端口輸入22,進行快速連接试躏,成功后就是下面這個樣子:


FileZila

這讓一個沒接觸過linux系統(tǒng)的猪勇,只會windows的我,看起來不要太舒服颠蕴!然后就是喜聞樂見的傳app文件的時刻了泣刹,我們在本機上找到對應(yīng)文件,然后上傳到云服務(wù)器的 /srv/shiny-server 位置犀被,如圖:


srv

如果在上傳過程中椅您,發(fā)現(xiàn)上傳失敗,一定要檢查權(quán)限寡键!可以輸入:

sudo chmod 777 -R /srv/shiny-server/ 

具體參見這位博主寫的文章:

R語言-Shiny部署 - 嗶哩嗶哩 (bilibili.com)

敲黑板O朴尽!一定要提前下載好app文件里面所需要的R包,而且還是shiny賬戶下员舵!不然會報錯脑沿!在ubuntu上下載R包最大的困難是不能解決包依賴問題,這個就請讀者遇到了自行百度吧马僻。

最終庄拇,我們檢閱部署結(jié)果!>碌恕措近!

我們在瀏覽器輸入:公網(wǎng)IP:3838/app name,其中app name是你將你的app文件傳到云服務(wù)器的文件名女淑,到這里即可成功將app部署到我們的云服務(wù)器上熄诡!

下面列舉出我當(dāng)時參考的帖子:

云服務(wù)器部署shiny應(yīng)用終極指南 - 知乎

(數(shù)據(jù)科學(xué)學(xué)習(xí)手札66)在ubuntu服務(wù)器上部署shiny - 費弗里 - 博客園

R語言-Shiny部署 - 嗶哩嗶哩

------ 后話
  1. 如果出現(xiàn)錯誤,請學(xué)會看shiny server的日志
    在FileZila里面诗力,轉(zhuǎn)到 /var/log/shiny-server 位置凰浮,我們會看到我們運行shinyapp的各種日志,找到報錯的日志(通常是時間最近的那個)苇本,點開就知道出現(xiàn)了什么問題袜茧。但是有一種除外,就是直接寫“Killed”瓣窄,那么我們就需要從云服務(wù)器里面看到底發(fā)生了什么笛厦!如果出現(xiàn)了提示“Out of memory”,那就是內(nèi)存不足俺夕,需要升級我們的云服務(wù)器配置裳凸,想要查看具體被“Killed”的原因,可以查看這位博主寫的文章:

linux 程序被Killed劝贸,如何精準(zhǔn)查看日志_shuihupo的博客-CSDN博客

  1. 一些簡單的linux命令
    轉(zhuǎn)到某個文件夾:cd /fiename 比如轉(zhuǎn)到 shiny-server 輸入:
cd /srv/shiny-server

切換到shiny用戶:

sudo su shiny

強制關(guān)閉進程:ctrl+C
強制退出賬號:ctrl+D
進入R軟件: 直接輸入R

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末姨谷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子映九,更是在濱河造成了極大的恐慌梦湘,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件件甥,死亡現(xiàn)場離奇詭異捌议,居然都是意外死亡,警方通過查閱死者的電腦和手機引有,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進店門瓣颅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人譬正,你說我怎么就攤上這事宫补∑ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵守谓,是天一觀的道長穿铆。 經(jīng)常有香客問我,道長斋荞,這世上最難降的妖魔是什么荞雏? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮平酿,結(jié)果婚禮上凤优,老公的妹妹穿的比我還像新娘。我一直安慰自己蜈彼,他們只是感情好筑辨,可當(dāng)我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著幸逆,像睡著了一般棍辕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上还绘,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天楚昭,我揣著相機與錄音,去河邊找鬼拍顷。 笑死抚太,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的昔案。 我是一名探鬼主播尿贫,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼踏揣!你這毒婦竟也來了庆亡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤呼伸,失蹤者是張志新(化名)和其女友劉穎身冀,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體括享,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年珍促,在試婚紗的時候發(fā)現(xiàn)自己被綠了铃辖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡猪叙,死狀恐怖娇斩,靈堂內(nèi)的尸體忽然破棺而出仁卷,到底是詐尸還是另有隱情,我是刑警寧澤犬第,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布锦积,位于F島的核電站,受9級特大地震影響歉嗓,放射性物質(zhì)發(fā)生泄漏丰介。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一鉴分、第九天 我趴在偏房一處隱蔽的房頂上張望哮幢。 院中可真熱鬧,春花似錦志珍、人聲如沸橙垢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽柜某。三九已至,卻和暖如春敛纲,著一層夾襖步出監(jiān)牢的瞬間莺琳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工载慈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留惭等,地道東北人。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓办铡,卻偏偏與公主長得像辞做,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子寡具,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,585評論 2 359

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