Linux學習筆記(0):寫在Linux 學習筆記之前
[2018/04/20]
早在個人電腦還是386、486的時代,那時執行的作業系統是 DOS,網路是用電話撥接的 MODEM數據機,最常使用的文字編輯器是 PE2,常被用來寫程式的語言是Basic,使用的資料庫稱做 DBASE,還有一套試算表叫做 Lotus 1-2-3 ...,有很多過去個人電腦發展的回憶。
1994年剛好有個機會參加交大的校園網路研討會,會議上發了一份光碟,稱做「雲觀」,這也開啟我後來學習使用 Linux 的起源。那時撥接的網路時代,有電子布告欄BBS,也有個瀏覽文件的通訊協定稱做Gopher,後來都被WWW的服務取代了,檔案傳輸使用FTP,還有個線上遊戲稱做泥巴(Mud)...,都是在當時非常先進的東西。
不知是否有人知道這片光碟?內容有 FreeBSD跟SlackWare 2.0.0兩套 Linux的作業系統。這套光碟的封面跟內頁是這樣:
光碟的封面印有「雲觀」兩個大字:
光碟內的目錄檔案:
這片光碟在現在的電腦可能已經無法安裝了,我一直保存著這片光碟,過去的二十幾年,雖然持續使用 Linux 作為公司伺服器架設用,我卻沒有留下相關筆記跟記錄,說來有點慚愧。最近利用時間在學習 ELK (Elasticsearch、Logstash及Kibana的簡稱) 的同時,努力紀錄一下學習的筆記,因而寫了這段緣起的文章,希望持續有新的文章產出。
[參考資料]
無
[修訂紀錄]
2018.04.20 初稿
早在個人電腦還是386、486的時代,那時執行的作業系統是 DOS,網路是用電話撥接的 MODEM數據機,最常使用的文字編輯器是 PE2,常被用來寫程式的語言是Basic,使用的資料庫稱做 DBASE,還有一套試算表叫做 Lotus 1-2-3 ...,有很多過去個人電腦發展的回憶。
1994年剛好有個機會參加交大的校園網路研討會,會議上發了一份光碟,稱做「雲觀」,這也開啟我後來學習使用 Linux 的起源。那時撥接的網路時代,有電子布告欄BBS,也有個瀏覽文件的通訊協定稱做Gopher,後來都被WWW的服務取代了,檔案傳輸使用FTP,還有個線上遊戲稱做泥巴(Mud)...,都是在當時非常先進的東西。
不知是否有人知道這片光碟?內容有 FreeBSD跟SlackWare 2.0.0兩套 Linux的作業系統。這套光碟的封面跟內頁是這樣:
光碟的封面印有「雲觀」兩個大字:
光碟內的目錄檔案:
這片光碟在現在的電腦可能已經無法安裝了,我一直保存著這片光碟,過去的二十幾年,雖然持續使用 Linux 作為公司伺服器架設用,我卻沒有留下相關筆記跟記錄,說來有點慚愧。最近利用時間在學習 ELK (Elasticsearch、Logstash及Kibana的簡稱) 的同時,努力紀錄一下學習的筆記,因而寫了這段緣起的文章,希望持續有新的文章產出。
[參考資料]
無
[修訂紀錄]
2018.04.20 初稿
星期五, 4月 20, 2018
Linux
Raspberry Pi 筆記(四十六):安裝流量圖形顯示 MRTG
[2018/03/28]
公司最近在發展的系統之一就是將設備的syslog收集起來,作為查詢、儀表板及報表用,但是最近要將SNMP跟Netflow的資料加到系統中。利用樹莓派先瞭解一下SNMP (簡單網路管理協定 Simple Network Management Protocol)的設定方式,到時可跟工程師討論作法。這裡我們實作一下將SNMP的資料,呈現到 MRTG(Multi Router Traffic Grapher)網頁。
MRTG流量圖常被用來作為網路流量使用,除此也可以將CPU、記憶體以及磁碟用量等透過網頁呈現。若要經由網頁顯示,就需要有Web Server,如Apache、Nginx、Lighttpd 都可以用來作為顯示MRTG流量的網頁伺服器。本實作以Lighttpd來提供網頁服務,安裝過程可自行更換成喜好的Web Server。流量顯示圖如下:
MRTG的安裝有好幾個方式,可以執行下載壓縮檔安裝,或是直接從套件庫進行安裝,指令如下:
安裝過程會出現一個視窗畫面,如果要設定讀取SNMP資料的權限,可以設定為YES,只有 root 才能讀取 /etc/mrtg.cfg,但是如果要用RRD Tool 來畫圖的話,需要設成NO。
設定SNMP
這裡先設定基本的 SNMP,讓SNMP可以運作,重新啟動前先編輯SNMP Daemon設定檔:
將這兩行
agentAddress udp:127.0.0.1:161
#rocommunity public localhost
改成
agentAddress udp:161
rocommunity public localhost
安裝 Web Server
使用以下指令安裝lighttpd 套件:
Lighttpd的工作目錄首頁在 /var/www/html,在該目錄下建立一個 mrtg目錄,作為存放mrtg的網頁使用
設定 MRTG
產生一個新的 MRTG 設定檔,放在 /etc目錄下:
修改mrtg.cfg的工作目錄,從 /var/www/mrtg 改成 /var/www/html/mrtg :
除了工作目錄要設定,還有另一個部分要修改,您會看到 /etc/mrtg.cfg 檔案內,有lo、eth0跟wlan0幾段看起來像html語法的段落,這是稍後要產生index.html的設定檔,因我的樹莓派使用無線網路連接,我就將wlan0那段的 # 全刪掉,前幾行設定如下:
Target[localhost_3]: 3:public@localhost:
SetEnv[localhost_3]: MRTG_INT_IP="192.168.0.106" MRTG_INT_DESCR="wlan0"
MaxBytes[localhost_3]: 12500000
Title[localhost_3]: Traffic Analysis for 3 -- raspberrypi
使用indexmaker指令產生 MRTG 首頁:
連結至樹莓派 Web Server,就可以看到 MRTG 流量圖。剛啟動時,不會有流量,要過1-2個小時之後,才會產生流量:
點下首頁的流量圖(這是過了一天的紀錄),可再細分日、週、月、年的流量分析。
以上只是實作網路的流量記錄,如要紀錄CPU、記憶體還要再進行設定。
[CPU使用量、溫度及記憶體用量]
若要得知CPU 的可用率,可用 snmpget 指令查詢受監控CPU的可用率,指令如下:
iso.3.6.1.4.1.2021.11.11.0 = INTEGER: 99
.1.3.6.1.4.1.2021.11.11.0 是 cpu的 OID (Object Identifier),99表示目前可用率。
若要得知CPU的溫度,可以 cat /sys/class/thermal/thermal_zone0/temp 這個檔案,這裡紀錄CPU的溫度,寫一個批次執行檔來取得:
將文字檔改成執行檔:
執行指令時,用 -g 帶入參數:
得到以下結果,溫度為攝氏 41.160度:
.1.3.6.1.2.1.25.1.8
gauge
41160
接著將這個批次指令設定到 snmpd.conf :
加入以下設定:
pass .1.3.6.1.2.1.25.1.8 /bin/sh /home/pi/snmp-cpu-temp.sh
修改完設定檔後,重新啟動snmpd服務:
透過snmp取得cpu溫度:
iso.3.6.1.2.1.25.1.8 = Gauge32: 41160
接著編輯 MRTG 設定檔,加上CPU使用率、溫度跟記憶體使用量:
Target[CPU]: 100 - .1.3.6.1.4.1.2021.11.11.0&.1.3.6.1.4.1.2021.11.11.0:public@localhost
Target[Memory]: .1.3.6.1.2.1.25.2.3.1.6.1&.1.3.6.1.2.1.25.2.3.1.6.3:public@localhost
Target[CPU-temp]: .1.3.6.1.2.1.25.1.7.0&.1.3.6.1.2.1.25.1.8:public@localhost
接著設定將 MRTG 加到樹莓派啟動時就自動執行,產生一個 mrtg 啟動檔於 /etc/init.d
test -f $DAEMON || exit 0
設定為可執行的檔案後,啟動服務:
就可以看到如本頁最上方的流量圖了。
• Khurram Aziz : Monitoring Raspberry Pi
公司最近在發展的系統之一就是將設備的syslog收集起來,作為查詢、儀表板及報表用,但是最近要將SNMP跟Netflow的資料加到系統中。利用樹莓派先瞭解一下SNMP (簡單網路管理協定 Simple Network Management Protocol)的設定方式,到時可跟工程師討論作法。這裡我們實作一下將SNMP的資料,呈現到 MRTG(Multi Router Traffic Grapher)網頁。
MRTG流量圖常被用來作為網路流量使用,除此也可以將CPU、記憶體以及磁碟用量等透過網頁呈現。若要經由網頁顯示,就需要有Web Server,如Apache、Nginx、Lighttpd 都可以用來作為顯示MRTG流量的網頁伺服器。本實作以Lighttpd來提供網頁服務,安裝過程可自行更換成喜好的Web Server。流量顯示圖如下:
$ sudo apt-get -y install mrtg snmp snmpd
安裝過程會出現一個視窗畫面,如果要設定讀取SNMP資料的權限,可以設定為YES,只有 root 才能讀取 /etc/mrtg.cfg,但是如果要用RRD Tool 來畫圖的話,需要設成NO。
設定SNMP
這裡先設定基本的 SNMP,讓SNMP可以運作,重新啟動前先編輯SNMP Daemon設定檔:
$ sudo nano /etc/snmp/snmpd.conf
將這兩行
agentAddress udp:127.0.0.1:161
#rocommunity public localhost
改成
agentAddress udp:161
rocommunity public localhost
重新啟動 snmpd 服務。
$ sudo service snmpd restart
安裝 Web Server
使用以下指令安裝lighttpd 套件:
$ sudo apt-get install lighttpd
Lighttpd的工作目錄首頁在 /var/www/html,在該目錄下建立一個 mrtg目錄,作為存放mrtg的網頁使用
$ sudo mkdir /var/www/html/mrtg
設定 MRTG
產生一個新的 MRTG 設定檔,放在 /etc目錄下:
$ sudo cfgmaker --output /etc/mrtg.cfg public@localhost
修改mrtg.cfg的工作目錄,從 /var/www/mrtg 改成 /var/www/html/mrtg :
$ sudo nano /etc/mrtg.cfg
除了工作目錄要設定,還有另一個部分要修改,您會看到 /etc/mrtg.cfg 檔案內,有lo、eth0跟wlan0幾段看起來像html語法的段落,這是稍後要產生index.html的設定檔,因我的樹莓派使用無線網路連接,我就將wlan0那段的 # 全刪掉,前幾行設定如下:
Target[localhost_3]: 3:public@localhost:
SetEnv[localhost_3]: MRTG_INT_IP="192.168.0.106" MRTG_INT_DESCR="wlan0"
MaxBytes[localhost_3]: 12500000
Title[localhost_3]: Traffic Analysis for 3 -- raspberrypi
使用indexmaker指令產生 MRTG 首頁:
$ sudo indexmaker --output=/usr/www/html/mrtg/index.html /etc/mrtg.cfg
連結至樹莓派 Web Server,就可以看到 MRTG 流量圖。剛啟動時,不會有流量,要過1-2個小時之後,才會產生流量:
http://192.168.0.106/mrtg/index.html
以上只是實作網路的流量記錄,如要紀錄CPU、記憶體還要再進行設定。
[CPU使用量、溫度及記憶體用量]
若要得知CPU 的可用率,可用 snmpget 指令查詢受監控CPU的可用率,指令如下:
$ snmpget -v 1 -c public localhost .1.3.6.1.4.1.2021.11.11.0傳回以下值:
iso.3.6.1.4.1.2021.11.11.0 = INTEGER: 99
.1.3.6.1.4.1.2021.11.11.0 是 cpu的 OID (Object Identifier),99表示目前可用率。
若要得知CPU的溫度,可以 cat /sys/class/thermal/thermal_zone0/temp 這個檔案,這裡紀錄CPU的溫度,寫一個批次執行檔來取得:
$ nano snmp-cpu-temp.sh
#!/bin/bash
if [ "$1" = "-g" ]
then
echo .1.3.6.1.2.1.25.1.8
echo gauge
cat
/sys/class/thermal/thermal_zone0/temp
fi
exit 0
將文字檔改成執行檔:
$ chmod +x snmp-cpu-temp.sh
執行指令時,用 -g 帶入參數:
$ ./snmp-cpu-temp.sh -g
得到以下結果,溫度為攝氏 41.160度:
.1.3.6.1.2.1.25.1.8
gauge
41160
接著將這個批次指令設定到 snmpd.conf :
$ sudo nano /etc/snmp/snmpd.conf
加入以下設定:
pass .1.3.6.1.2.1.25.1.8 /bin/sh /home/pi/snmp-cpu-temp.sh
修改完設定檔後,重新啟動snmpd服務:
$ sudo /etc/init.d/snmpd restart
透過snmp取得cpu溫度:
$ snmpget -v 1 -c public localhost .1.3.6.1.2.1.25.1.8得到以下結果:
iso.3.6.1.2.1.25.1.8 = Gauge32: 41160
接著編輯 MRTG 設定檔,加上CPU使用率、溫度跟記憶體使用量:
$ su nano /etc/mrtg.cfg在設定檔中增加以下這段設定:
LoadMIBs:
/usr/share/snmp/mibs/UCD-SNMP-MIB.txt
Target[CPU]: 100 - .1.3.6.1.4.1.2021.11.11.0&.1.3.6.1.4.1.2021.11.11.0:public@localhost
Options[CPU]: integer, gauge, nopercent,
growright, unknaszero, noo
MaxBytes[CPU]: 100
YLegend[CPU]: CPU %
ShortLegend[CPU]: %
LegendI[CPU]: CPU
Legend1[CPU]: CPU usage
Title[CPU]: Raspberry Pi CPU load
PageTop[CPU]: <H1>Raspberry Pi -
CPU load</H1>
Target[Memory]: .1.3.6.1.2.1.25.2.3.1.6.1&.1.3.6.1.2.1.25.2.3.1.6.3:public@localhost
Options[Memory]: integer, gauge,
nopercent, growright, unknaszero, noo
MaxBytes[Memory]: 100524288
YLegend[Memory]: Mem - 1K pages
Factor[Memory]: 1024
ShortLegend[Memory]: B
LegendI[Memory]: Physical
LegendO[Memory]: Virtual
Legend1[Memory]: Physical
Legend2[Memory]: Virtual Memory
Title[Memory]: Raspberry Pi Memory
Usage
PageTop[Memory]: <H1>Raspberry Pi
- Memory Usage</H1>
Target[CPU-temp]: .1.3.6.1.2.1.25.1.7.0&.1.3.6.1.2.1.25.1.8:public@localhost
Options[CPU-temp]: integer, gauge,
nopercent, growright, unknaszero, noi
Factor[CPU-temp]: 0.001
MaxBytes[CPU-temp]: 100000
Title[CPU-temp]: CPU temperature on
Raspberry Pi
YLegend[CPU-temp]: Temperature °C
ShortLegend[CPU-temp]: °C
Legend2[CPU-temp]: CPU temperature in
°C
LegendO[CPU-temp]: CPU temperature
PageTop[CPU-temp]: <H1>Raspberry
Pi - CPU Temperature</H1>
$ sudo nano /etc/init.d/mrtg開機批次執行檔如下:
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON="/usr/bin/mrtg"
PARAM=" --user=root /etc/mrtg.cfg --logging
/var/log/mrtg.log"
NAME="MRTG"
DESC="Multi Router Traffic Grapher Daemon"
test -f $DAEMON || exit 0
set -e
case "$1" in
start)
echo -n "Starting $DESC: "
env LANG=C $DAEMON $PARAM
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
killall -9 mrtg
echo "$NAME."
;;
restart|force-reload)
echo -n "Restarting $DESC: "
killall -9 mrtg
sleep 1
env LANG=C $DAEMON $PARAM
echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N
{start|stop|restart|force-reload}"
exit 1
;;
esac
exit 0
設定為可執行的檔案後,啟動服務:
$ sudo chmod +x /etc/init.d/mrtg $ sudo /etc/init.d/mrtg start
就可以看到如本頁最上方的流量圖了。
[參考資料]
• MRTG Home: oss.oetiker.ch/mrtg/• Khurram Aziz : Monitoring Raspberry Pi
星期三, 3月 28, 2018
Raspberry Pi
4位元數位電子時鐘 AT89C2051套件
[2018/03/20]
好久沒有用Arduino或是Raspberry Pi製作相關電子實驗,剛好兩三個星期前,一位好同事問到最近怎麼沒有再繼續寫部落格,才瞭解還是有人默默在關心這個園地。先前有很多個想做的實驗沒繼續完成,有了好友的支持,繼續打起精神。首先先到網路上買幾個感測元件,繼續實作相關實驗,這一切要先從簡單的電子鐘套件開始說起:
高中時代,對於電子套件非常著迷,有時就會買個好玩的套件自行焊接組裝,如拍手聲控自走車、測謊機等散裝零件,自己再照圖組裝焊接零件到電路版上,待成品完成時,非常有成就感。由於國中時,下課要幫忙家裡做手工,需要焊接燈泡的兩個錫點,對於焊槍的使用,很有把握。這次購買零件的商家,正好有賣電子時鐘套件,想要再回憶一下自行焊接組裝的樂趣,因此買了一個套件,利用今晚有空的時間組裝,焊接的結果好或不好就留給各位自行評斷。
這個套件有兩個設定的按鍵,擔心時間久了,找不到套件的操作方法。因此將操作方法稍微整理一下,記錄在本篇文章中。
2.可切換到分秒獨立顯示介面
3.整點報時(8-20點整點報時3秒鐘,可關閉)
4.兩路鬧鐘設置(可關閉鬧鐘功能)
B.進口AT89C2051作主控晶片
C.1.2mm厚PCB由軍工級FR-4板材製成
D.走時精准,走時誤差範圍為每24小時誤差-1~+1秒.
焊接好的成品:正面
焊接好的成品:背面 (有點不太清楚),自覺焊接已經生疏許多。
供電後的情況:
供電後短按S2,可在時分走時介面和 分秒走時介面之間切換;長按S1鍵,進入系統選單設定,共有A-I 九個選項,短按S1,選項設定跳往下一個字母,最後回到走時介面。九個設定說明如下:
好久沒有用Arduino或是Raspberry Pi製作相關電子實驗,剛好兩三個星期前,一位好同事問到最近怎麼沒有再繼續寫部落格,才瞭解還是有人默默在關心這個園地。先前有很多個想做的實驗沒繼續完成,有了好友的支持,繼續打起精神。首先先到網路上買幾個感測元件,繼續實作相關實驗,這一切要先從簡單的電子鐘套件開始說起:
高中時代,對於電子套件非常著迷,有時就會買個好玩的套件自行焊接組裝,如拍手聲控自走車、測謊機等散裝零件,自己再照圖組裝焊接零件到電路版上,待成品完成時,非常有成就感。由於國中時,下課要幫忙家裡做手工,需要焊接燈泡的兩個錫點,對於焊槍的使用,很有把握。這次購買零件的商家,正好有賣電子時鐘套件,想要再回憶一下自行焊接組裝的樂趣,因此買了一個套件,利用今晚有空的時間組裝,焊接的結果好或不好就留給各位自行評斷。
這個套件有兩個設定的按鍵,擔心時間久了,找不到套件的操作方法。因此將操作方法稍微整理一下,記錄在本篇文章中。
[功能]
1.秒校正(用於精確校時)2.可切換到分秒獨立顯示介面
3.整點報時(8-20點整點報時3秒鐘,可關閉)
4.兩路鬧鐘設置(可關閉鬧鐘功能)
[套件特點]
A.採用0.56寸時鐘專用紅色數碼管作顯示B.進口AT89C2051作主控晶片
C.1.2mm厚PCB由軍工級FR-4板材製成
D.走時精准,走時誤差範圍為每24小時誤差-1~+1秒.
[電子零件]
電子零件的主要IC為AT89C2051,買來的時候,程式已經燒路在IC內。其他還包括四位數七段顯示器、按鍵、蜂鳴器等。焊接好的成品:正面
焊接好的成品:背面 (有點不太清楚),自覺焊接已經生疏許多。
供電後的情況:
[時鐘操作設定]
供電後顯示12:59的走時介面,預設兩路鬧鐘均開啟,且第一路鬧鐘設定在13:01;第二路鬧鐘設定在13:02。供電後短按S2,可在時分走時介面和 分秒走時介面之間切換;長按S1鍵,進入系統選單設定,共有A-I 九個選項,短按S1,選項設定跳往下一個字母,最後回到走時介面。九個設定說明如下:
子選項
|
功能
|
操作方法
|
A
|
校正小時
|
按S2,數字加1;調好後短按S1保存,退出本選項進入B選項。
|
B
|
校正分鐘
|
按S2,數字加1;調好後短按S1保存,退出本選項進入C選項。
|
C
|
調整報時開關
|
預設狀態為ON(8點到20點整點報時開關),按S2可在ON和OFF(關閉整點報時)之間切換;調好後短按S1保存,退出本選項進入D選項。
|
D
|
第一路鬧鐘設定
|
預設狀態為ON(第一路鬧鐘開啟),按S2可在ON和OFF(關閉第一路鬧鐘)之間切換。若設為ON,短按S1保存退出本選項進入E選項;若設為OFF,短按S1保存退出後,直接進入G選項。
|
E
|
第一路鬧鐘小時設定
|
按S2,數字加1;調好後短按S1保存,退出本選項進入F選項。
|
F
|
第一路鬧鐘分鐘設定
|
按S2,數字加1;調好後短按S1保存,退出本選項進入G選項。
|
G
|
第二路鬧鐘設定
|
預設狀態為ON(第二路鬧鐘開啟),按S2可在ON和OFF(關閉第二路鬧鐘)之間切換。若設為ON,短按S1保存退出本選項進入H選項;若設為OFF,短按S1保存退出後,直接回到走時介面。
|
H
|
第二路鬧鐘小時設定
|
按S2,數字加1;調好後短按S1保存,退出本選項進入I選項。
|
I
|
第二路鬧鐘分鐘設定
|
按S2,數字加1;調好後短按S1保存,退出本選項回到走時介面。
|
星期二, 3月 20, 2018
Arduino
,
Raspberry Pi
Raspberry Pi 筆記(四十五):安裝R語言及互動介面的 Shiny Server
[2017/12/14]
只要有學過統計的人,對於R語言並不陌生。R語言,一種自由軟體程式語言與操作環境,主要用於統計分析、繪圖、資料探勘。R本來是由來自紐西蘭奧克蘭大學的羅斯·伊哈卡和羅伯特·傑特曼開發(也因此稱為R),現在由「R開發核心團隊」負責開發。R基於S語言的一個GNU計劃專案,所以也可以當作S語言的一種實現,通常用S語言編寫的代碼都可以不作修改的在R環境下執行。[維基百科]
Shiny Server是一個快速可將 R 統計結果,呈現在網頁上的伺服主機程式。Shiny是 Rstudio 這家公司開發的產品,自2012年推出後,廣受大家好評與喜愛,讓不懂網頁程式的 R語言使用者,可以輕鬆的部署互動式的統計資料在網頁上。
將以下這行加到 sources.list 最後一行:
deb http://archive.raspbian.org/raspbian/ stretch main
執行更新及安裝 R語言
到這裡,R語言已經安裝完成,可輸入 R 啟動程式,q() 退出程式。
• python 2.6 or 2.7 (3.x 目前尚不支援)
• cmake (需 2.8.10之後版本),如要安裝 cmake 套件的話,可執行以下指令進行安裝:
• gcc (需 4.8或更新版本)
• g++ ( 需 4.8或更新版本)
• git
• R-base-devel (請參考前面安裝方法)
(1) 安裝 R 的 Shiny套件
(2) 從 GitHub 下載程式
(3) 建立一個暫存的目錄 Get into a temporary directory in which we'll build the project
(4) 增加 bin 目錄到路徑中
(5) 用以下指令檢查 Python 版本是否為 2.6.x 或 2.7.x
(6) 使用 cmake 作為 make 的前置設定,如果要將程式安裝在不同路徑下,可修改"--DCMAKE_INSTALL_PREFIX" 參數
(7) 假使這裡有錯誤,檢查一下 python 版本是否正確?編譯時間會花比較多時間,大約要將近一個多小時,要稍微耐心等候。
(8) 安裝軟體到預設位置
(9) 建立 shiny-server 執行檔捷徑,放置於 /usr/bin
(10)建立 shiny 使用者
(11) 建立日誌、設定及應用程式目錄
(12) 下載預設的設定檔
Shiny Server 安裝完成後,是沒有設定檔的,設定檔名為 shiny-server.conf,存放在 /etc/shiny-server/ 目錄下,假使沒有這個檔案,就會使用預設值當作設定。可以到以下網站下載預設的設定檔:
(13) 執行程式
(14) 使用瀏覽器進行連線,我的 Pi IP為192.168.1.103,連線方式要帶 Port 號:3838
(15) 建立 server.R 及 ui.R 程式
瀏覽器看到的是空白對嗎?主要是因為安裝完成後,Shiny Server沒有網頁程式可呈現,需自行將放置在 /srv/shiny-server 目錄內,先建立一個目錄,再將 server.R 及 ui.R兩程式放在目錄內。
• 方法一:自行建立 server.R 及 ui.R,以 hello為範例
分別建立 server.R 及 ui.R,我參考官方教學說明,列出程式範例:
server.R
ui.R
• 方法二:下載網路上的程式
網友 Huidong Tian 在以下網站放了 server & ui 的程式,可供下載:
這裡有一些範例可下載參考: rstudio/shiny-examples
使用 Shiny,官方有相關教學說明:https://shiny.rstudio.com/tutorial/
[問題]
第一次安裝完成時,執行 shiny-server,透過Web連線時會出現以下錯誤訊息:
Error: An error has occured. Check your logs or contact the app author for clarification.
發現是寫log 檔案的問題,修正方式是要在 shiny-server.config 設定檔中,加入開啟 Log保留的設定:
在檔案內加入以下一行,網頁就可以正常執行,如下圖:
preserve_logs true;
[參考資料]
• Huidong Tian:Install Shiny Server on Raspberry Pi
• RStudio:shiny gallery
• https://github.com/rstudio/shiny-server/wiki/Building-Shiny-Server-from-Source

Shiny Server是一個快速可將 R 統計結果,呈現在網頁上的伺服主機程式。Shiny是 Rstudio 這家公司開發的產品,自2012年推出後,廣受大家好評與喜愛,讓不懂網頁程式的 R語言使用者,可以輕鬆的部署互動式的統計資料在網頁上。
[R語言安裝程序]
編輯套件更新的來源 URL,編輯 /etc/apt/sources.list$ sudo nano /etc/apt/sources.list
將以下這行加到 sources.list 最後一行:
deb http://archive.raspbian.org/raspbian/ stretch main
執行更新及安裝 R語言
$ sudo apt-get update $ sudo apt-get install r-base r-base-core r-base-dev
到這裡,R語言已經安裝完成,可輸入 R 啟動程式,q() 退出程式。
$ R
[安裝 Shiny-Server]
安裝 Shiny 前需要先安裝以下套件:• python 2.6 or 2.7 (3.x 目前尚不支援)
• cmake (需 2.8.10之後版本),如要安裝 cmake 套件的話,可執行以下指令進行安裝:
$ sudo apt-get install cmake
• gcc (需 4.8或更新版本)
• g++ ( 需 4.8或更新版本)
• git
• R-base-devel (請參考前面安裝方法)
(1) 安裝 R 的 Shiny套件
$ sudo su - -c "R -e \"install.packages('shiny', repos='http://cran.rstudio.com/')\""
(2) 從 GitHub 下載程式
$ git clone https://github.com/rstudio/shiny-server.git
(3) 建立一個暫存的目錄 Get into a temporary directory in which we'll build the project
$ cd shiny-server $ mkdir tmp $ cd tmp
(4) 增加 bin 目錄到路徑中
$ DIR=`pwd` $ PATH=$DIR/../bin:$PATH
(5) 用以下指令檢查 Python 版本是否為 2.6.x 或 2.7.x
$ PYTHON=`which python` $ $PYTHON --version
(6) 使用 cmake 作為 make 的前置設定,如果要將程式安裝在不同路徑下,可修改"--DCMAKE_INSTALL_PREFIX" 參數
$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DPYTHON="$PYTHON" ../
(7) 假使這裡有錯誤,檢查一下 python 版本是否正確?編譯時間會花比較多時間,大約要將近一個多小時,要稍微耐心等候。
$ make $ mkdir ../build $ (cd .. && ./bin/npm --python="$PYTHON" install) $ (cd .. && ./bin/node ./ext/node/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js --python="$PYTHON" rebuild)
(8) 安裝軟體到預設位置
$ sudo make install
(9) 建立 shiny-server 執行檔捷徑,放置於 /usr/bin
$ sudo ln -s /usr/local/shiny-server/bin/shiny-server /usr/bin/shiny-server
(10)建立 shiny 使用者
$ sudo useradd -r -m shiny
(11) 建立日誌、設定及應用程式目錄
$ sudo mkdir -p /var/log/shiny-server $ sudo mkdir -p /srv/shiny-server $ sudo mkdir -p /var/lib/shiny-server $ sudo chown shiny /var/log/shiny-server $ sudo mkdir -p /etc/shiny-server
(12) 下載預設的設定檔
Shiny Server 安裝完成後,是沒有設定檔的,設定檔名為 shiny-server.conf,存放在 /etc/shiny-server/ 目錄下,假使沒有這個檔案,就會使用預設值當作設定。可以到以下網站下載預設的設定檔:
$ cd /etc/shiny-server/ $ sudo wget http://withr.me/misc/shiny-server.conf
(13) 執行程式
$ sudo shiny-server
(14) 使用瀏覽器進行連線,我的 Pi IP為192.168.1.103,連線方式要帶 Port 號:3838
http://192.168.1.103:3838
(15) 建立 server.R 及 ui.R 程式
瀏覽器看到的是空白對嗎?主要是因為安裝完成後,Shiny Server沒有網頁程式可呈現,需自行將放置在 /srv/shiny-server 目錄內,先建立一個目錄,再將 server.R 及 ui.R兩程式放在目錄內。
• 方法一:自行建立 server.R 及 ui.R,以 hello為範例
$ cd /srv/shiny-server $ mkdir hello_shiny $ cd hello_shiny
分別建立 server.R 及 ui.R,我參考官方教學說明,列出程式範例:
server.R
library(shiny) # Define server logic required to draw a histogram shinyServer(function(input, output) { # Expression that generates a histogram. The expression is # wrapped in a call to renderPlot to indicate that: # # 1) It is "reactive" and therefore should re-execute automatically # when inputs change # 2) Its output type is a plot output$distPlot &le- renderPlot({ x &le- faithful[, 2] # Old Faithful Geyser data bins &le- seq(min(x), max(x), length.out = input$bins + 1) # draw the histogram with the specified number of bins hist(x, breaks = bins, col = 'darkgray', border = 'white') }) })
ui.R
library(shiny) # Define UI for application that draws a histogram shinyUI(fluidPage( # Application title titlePanel("Hello Shiny!"), # Sidebar with a slider input for the number of bins sidebarLayout( sidebarPanel( sliderInput("bins", "Number of bins:", min = 1, max = 50, value = 30) ), # Show a plot of the generated distribution mainPanel( plotOutput("distPlot") ) ) ))
• 方法二:下載網路上的程式
網友 Huidong Tian 在以下網站放了 server & ui 的程式,可供下載:
$ cd /srv/shiny-server $ mkdir kmeans; cd kmeans $ wget http://withr.me/misc/kmeans/ui.R $ wget http://withr.me/misc/kmeans/server.R
這裡有一些範例可下載參考: rstudio/shiny-examples
使用 Shiny,官方有相關教學說明:https://shiny.rstudio.com/tutorial/
[問題]
第一次安裝完成時,執行 shiny-server,透過Web連線時會出現以下錯誤訊息:
Error: An error has occured. Check your logs or contact the app author for clarification.
發現是寫log 檔案的問題,修正方式是要在 shiny-server.config 設定檔中,加入開啟 Log保留的設定:
$ cd /etc/shiny-server $ sudo nano shiny-server.conf
在檔案內加入以下一行,網頁就可以正常執行,如下圖:
[參考資料]
• Huidong Tian:Install Shiny Server on Raspberry Pi
• RStudio:shiny gallery
• https://github.com/rstudio/shiny-server/wiki/Building-Shiny-Server-from-Source
星期四, 12月 14, 2017
Raspberry Pi
Raspberry Pi 筆記(四十四): 使用群暉Synology 雲端裝置儲存Webcam 錄影資料
[2017/12/12]
最近有朋友問到一些樹莓派上使用WebCam的問題,如果要看即時動態資料,只要樹莓派連接到網際網路,就可以透過瀏覽器看到即時影像。如果要將影像存檔的話,就需要透過其他的系統進行儲存。
我有一個群暉Synology的NAS DS214 Play,系統上可以安裝 Surveillance Station來對 IP CAM的裝置進行錄影存檔的功能,如果使用 DDNS機制,還可隨時連線至家裡的群暉主機,看到即時的影像。以下就來看看如何進行設定:

(1)先檢查插在USB的 Webcam 是否已經驅動:
...
(2)安裝 motion 軟體
(3)安裝完成後,修改設定檔 motion.conf ,將DAEMON OFF改為ON,設定為自動啟動 motion,Webcam_localhost ON改為 OFF,不從Raspberry Pi連線至Webcam:
steam_localhost off
# Web連線使用8081 Port
webcam_port 8081
# 管理用的連線使用8080 Port
control_port 8080
#如果要修改畫面大小,可修改
# 影像寬度 (pixels). 預設: 320
width 640
# 影像高度 (pixels). 預設: 240
height 480
# 影像品質(百分比). 預設: 75
webcam_quality 100
(4)修改 /etc/default/motion 將 start_motion_daemon=no 改為 yes
(5)重新啟動motion服務
登入群暉NAS管理介面 DSM,登入後桌面上有一個「套件中心」,點選左方的「商務」選項,找到 Surveillance Station進行安裝:
(2) 安裝設定網路攝影機
執行 Surveillance Station,開始安裝攝影機:選擇「網路攝影機」,再按「新增」。
選擇「完整設定」,再按「下一步」:
這時會看到以下畫面,輸入 Raspberry Pi IP及Port 8081,選擇「MJPEG」格式,如以下畫面:
接著按「下一步」,出現以下畫面:
再按「下一步」,出現以下畫面:設定錄影畫質及儲存NAS位置。
再按「下一步」,出現以下畫面:設定錄影排程。
按下「完成後」,就可以透過 synology的DSM介面看到影像,並進行錄影存檔的動作。如果要管理影像可按「錄影」,進行管理作業:
亦可按「即時影像」看目前攝影機的畫面:
最近有朋友問到一些樹莓派上使用WebCam的問題,如果要看即時動態資料,只要樹莓派連接到網際網路,就可以透過瀏覽器看到即時影像。如果要將影像存檔的話,就需要透過其他的系統進行儲存。
我有一個群暉Synology的NAS DS214 Play,系統上可以安裝 Surveillance Station來對 IP CAM的裝置進行錄影存檔的功能,如果使用 DDNS機制,還可隨時連線至家裡的群暉主機,看到即時的影像。以下就來看看如何進行設定:
(圖片取自網路)
[安裝影像軟體 Motion]
有關Motion 的安裝與設定可以參考我的另一篇文章:Raspberry Pi 筆記(十九): Webcam 拍照與瀏覽串流媒體 。(1)先檢查插在USB的 Webcam 是否已經驅動:
$ sudo lsusbBus 001 Device 006: ID 046d:081b Logitech, Inc. Webcam C310
...
(2)安裝 motion 軟體
$ sudo apt-get install motion
(3)安裝完成後,修改設定檔 motion.conf ,將DAEMON OFF改為ON,設定為自動啟動 motion,Webcam_localhost ON改為 OFF,不從Raspberry Pi連線至Webcam:
$ sudo vi /etc/motion/motion.confdaemon on
steam_localhost off
webcam_port 8081
# 管理用的連線使用8080 Port
control_port 8080
#如果要修改畫面大小,可修改
# 影像寬度 (pixels). 預設: 320
width 640
# 影像高度 (pixels). 預設: 240
height 480
# 影像品質(百分比). 預設: 75
webcam_quality 100
(4)修改 /etc/default/motion 將 start_motion_daemon=no 改為 yes
$ sudo vi /etc/default/motionstart_motion_daemon=yes
(5)重新啟動motion服務
$ sudo service motion restart
[設定群暉Synology DSM進行監視錄影]
(1) 安裝 Surveillance Station 套件登入群暉NAS管理介面 DSM,登入後桌面上有一個「套件中心」,點選左方的「商務」選項,找到 Surveillance Station進行安裝:
(2) 安裝設定網路攝影機
執行 Surveillance Station,開始安裝攝影機:選擇「網路攝影機」,再按「新增」。
選擇「完整設定」,再按「下一步」:
這時會看到以下畫面,輸入 Raspberry Pi IP及Port 8081,選擇「MJPEG」格式,如以下畫面:
接著按「下一步」,出現以下畫面:
再按「下一步」,出現以下畫面:設定錄影畫質及儲存NAS位置。
再按「下一步」,出現以下畫面:設定錄影排程。
按下「完成後」,就可以透過 synology的DSM介面看到影像,並進行錄影存檔的動作。如果要管理影像可按「錄影」,進行管理作業:
星期二, 12月 12, 2017
Raspberry Pi
訂閱:
文章
(
Atom
)