3. 在記事本撰寫之後,另存新檔為bat檔(也可以直接改副檔名)
R Shiny安裝在Linux設定
本節大概是最重要跟麻煩的,會有很多細節設定問題需要處理,只要有一點沒注意,整個Shiny都會無法使用。
- 照R Studio Shiny的官網先執行Ubuntu Packages for R裡面所有的指令,再開始執行下面這些指令(這是在Linux的介面執行)
#step1
sudo su - \
-c "R -e \"install.packages('shiny', repos='https://cran.rstudio.com/')\""
#Step2
sudo apt-get install gdebi-core
wget https://download3.rstudio.org/ubuntu-14.04/x86_64/shiny-server-1.5.17.973-amd64.deb
sudo gdebi shiny-server-1.5.17.973-amd64.deb
2. 接著要先確認剛剛安裝的Shiny Server是否成功,可用以下指令確認
#啟動Shiny Server(基本上只有第一次需要而已,除非你後來有重開Linux)
sudo systemctl start shiny-server
# 查看狀態(應該會顯示綠色的running,右邊會有開啟的時間)
systemctl status shiny-server
#重新啟動(Restart the server)
sudo systemctl restart shiny-server
# 關閉
systemctl stop shiny-server
3. 基本上很多網路資料大概到這邊都成功,但我運氣真的很差,又多遇到了很多問題,我猜很多人都需要安裝很多pkg在R Linux上面,我主要有遇到httr pkg安裝失敗,後來有找到
方法解決,其實還有一些pkg一直安裝失敗,但要下一堆Linux指令,做一堆麻煩設定才能解決
4. 另外安裝所有想要的R pkg時,我發現在Linux要用root權限執行R,接著在執行,我一開始不知道,全部用user權限安裝完,發現完全都沒安裝成功,導致Shiny執行時根本吃不到pkg
5. 另外我有在Linux開一個NAS資料夾的權限(不過這邊就不多談了),方便我的R script指定路徑
6. 字形問題要特別留意,我自己環境測試的電腦是Win10,在上面執行R script預測字型是CP950,換到Linux預設字型會是UTF-8檢視,另外如果是在R Linux讀取SQL產出的csv,且有出現中文時,可能read.csv需要額外下
fileEncoding = "BIG5"
7. 最重要的是如果出現錯誤不要慌,要看Linux路徑向下的Log檔錯誤訊息為何
/var/log/shiny-server.log
Linux設定 1. 上傳檔案:如果你是本來Linux就很熟悉的人那應該怎麼做都沒關係,但如果是初學者,我會建議直接使用圖形化介面去傳輸檔案,我是用
WinSCP來做,如果要用
FileZilla也行
2. 資料夾權限:我第一次用WinSCP上傳產生失敗(被擋),後來發現是權限問題,ui.R跟server.R要同時放置在sample-apps向下的資料夾,所以要先開啟Linux的這個資料夾權限
cd /opt/shiny-server/samples/
#willy999是我的Linux user帳號
sudo chown willy999 sample-apps
3. 在sample-apps底下設定一個資料夾叫做"dashboard"(當然你要設置其他名稱也行),最後在瀏覽器key以下網址,應該就可以看到自己的作品了(3838 port 預設應該是打開才對)
#192.168.1.3是我的Linux IP
http://192.168.1.3:3838/sample-apps/dashboard/
4. 其實做到前面就完成了,但我執行Shiny有時候會遇到資料沒update在儀表板的問題,就是我每天早上自動用sqlcmd將csv檔放置在特定資料夾,可是儀表板上面的數字還是昨天的metrics,這種情形很少發生,但可能就是一個月一次,但是是不定期的,也就是可能20幾天,會有某一天儀表板的數字還是昨天的,我發現只要重新啟動R shiny Server就可以了,所以我後來乾脆每天早上重開,我使用Linux
crontab自動排程這樣就可以了(如果有更好的解決方式 歡迎提供討論)
#每天早上6點使用開指令(要先進入root權限,不然重開Shiny server要輸入密碼,user權限不行)
crontab -e
0 6 * * * systemctl restart shiny-server
後記
其實在整個專案,學到最多的是應該是指標拆解的方法(或者Linux!?),其實筆者以前就學過很多統計方法、以及很多機器學習模型參數優化技術,但發現有時候要落實到第一線業務人員,讓大家看得懂的方法,應該是先做出圖表,找出大家真正重視的東西後,再來建模預測等等,我想會更適合。