使用樹莓派搭建伺服器
『壹』 樹莓派可以做網站的伺服器嗎帶資料庫的那種。可以的話有教程嗎。註:做一個個人網站
樹莓派可以安裝這個LAMP系列,但Apache 和 Mysql對於樹莓派這個小小的機器,太重了,主要是消耗內存多\速度慢\佔用磁碟大(約200M吧),所可以選擇安裝一個輕量級的Web伺服器:
nginx + php + sqlite
nginx:是個輕量級的Web伺服器,是一款輕量級的Web 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器,上nginx的並發能力確實在同類型的網頁伺服器中表現較好。
SQLite:是一款輕型的資料庫,是遵守ACID的關系型資料庫管理系統,它的設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它佔用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。
很簡單直接安裝即可,如果卡住追問我就好了
『貳』 樹莓派搭建文件伺服器
https://www.raspberrypi.org/downloads/raspberry-pi-os/
安裝 Etcher 之後啟動 Etcher,插入 SD 卡、選擇要安裝的 img 文件、選擇 SD 卡對應的磁碟分區
https://www.balena.io/etcher/
① 新建一個ssh空白文件,放到root目錄下,樹莓派開機會自動啟用
② 網路優先選擇有線網路
③ 無線網路
將刷好 Raspbian 系統的 SD 卡用電腦讀取。在 boot 分區,也就是樹莓派的 /boot 目錄下新建
具體詳情看下面
https://shumeipai.nxez.com/2017/09/13/raspberry-pi-network-configuration-before-boot.html
方法1:利用路由器軟體查看IP地址
方法2:
ssh連接默認用戶名:pi 密碼:raspberry
方法3:IP Scanner
1.切換 root許可權 sudo su
2.編輯下列文件
連接raw.githubusercontent.com失敗
step1 :
在 https://site.ip138.com/raw.Githubusercontent.com/
輸入raw.githubusercontent.com查詢IP地址
step2 :
sudo nano /etc/hosts
你查到的ip地址,香港的就行 raw.githubusercontent.com
比如:
151.101.76.133 raw.githubusercontent.com
OpenMediaVault項目地址:
https://github.com/OpenMediaVault-Plugin-Developers/installScript
執行安裝腳本:
step1:
輸入樹莓派的IP地址
初始用戶名:admin
密碼:openmediavault
step2:
1.連接硬碟
2.文件系統—>卸載硬碟
3.磁碟—>擦除
4.文件系統—>新建 文件系統選擇EXT4
5.掛載—>應用
6.共享文件夾—>新建一個文件夾 設置許可權
7.SMB/CIFS —>啟用
8.共享—>添加共享
mac登陸
前往:連接伺服器 smb://樹莓派的ip地址
windows
我的電腦—>右鍵—>映射網路驅動器—>找到共享的文件夾
『叄』 樹莓派4B+ Centos7 部署k3s集群工具
kubernetes用於大型集群管理,而k3s屬於kubernetes的一個輕量級版本,常用於嵌入式設備使用。現把它安裝到樹莓派上使用。
這里用到樹莓派的系統是:CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-4-2009-sda.raw,型號是4B+,8g內存。
樹莓派初次啟動需要擴容,並且做一些基本調整:
cgroup是linux用來對進程分配cpu、內存資源的工具,需要在啟動系統時開啟他,k3s會用到。
在/boot/cmdline.txt後加入這個,然後reboot
k3s是一個輕量級的k8s,適用於樹莓派這種嵌入式設備。
這個腳本跑完的時候,會把k3s添加到systemd裡面,可以通過systemctl status k3s來查看運作狀態。啟動成功就可以使用啦
官方參考: https://rancher.com/docs/k3s/latest/en/installation/ha-embedded/
等它重啟個好幾次之後,基本就成功了。
如果一直失敗,可以輸入命令刷一下iptable緩沖
iptables --flush
iptables -tnat --flush
等第二個結點加入後,在任意結點執行命令,都能查看到已有的2個Server(Master)結點了
當Server結點數大於等於3個且為奇數時,集群才可以實現高可用。
大於等於3是因為k3s使用了Raft演算法來實現一致性,而Raft演算法的容崩率為1/3,也就是只要集群中有2/3台機器正常運作,集群就能正常運作,所以3台機器是最低要求;要奇數個結點是因為Raft演算法過程中有一個很重要的隨機投票選Leader的流程,結點們通過定期投票選舉出一個Leader角色,然後其他結點在它的任期內就向他同步數據,這個時候如果結點數是偶數,那麼容易出現平票問題,選不出leader,並且,崩潰後集群進行數據恢復過程中,實現一致的方法是多數服從少數,如果是偶數Master結點,且剛好被分割成2個結點規模一樣的集團,就沒辦法恢復數據了[裂開],所以需要奇數個結點以避免權力平分問題。
以上為個人理解。
有興趣的同學可以一起探討這類共識演算法,與此類似的還有聯盟鏈的PBFT類演算法,比特幣PoW演算法等等。
因為集群並非開放式集群,加入集群需要獲取一個token作為校驗。這個token可以從Master伺服器上獲取。(手動加入的話,僅需要使用相同的K3S_TOKEN參數啟動即可。)
這樣,結點就正常連接上啦:
關閉k3s進程後,後台還留存一些服務佔用著埠,需要用官方腳本關閉他們
可以flush一下iptables,等他自己重啟就行了。
有可能發生了一些沖突,可以試下重裝k3s-agent
目前系統已經伴隨k3s安裝的一些軟體:
crictl :類似與docker的命令行工具,比如:
k3s :封裝了kubeneters基本工具在裡面的集成,如使用kubectl:
這里示範部署一個最簡單的web應用
--net host 代表與本機享受同一個網路命名空間
這里可以在docker容器內開啟ssh服務: https://blog.csdn.net/Leo_csdn_/article/details/96150534
做好docker鏡像後,就可以部署到集群上了。
等一會兒就能在pods列表裡面看到了:
但這時候,這個pod並沒有對外開放,只能在集群內部相互訪問,通過get services命令查看集群的服務,發現並沒有我們的hello-node服務。
expose命令其實是創建了一個service,用於給這個pod提供訪問入口。
(如果使用--type=LoadBalancer,則代表一個deployment上管理的所有POD進行均衡負載,但這里還沒用上deployment,第四章節會使用到)
等一會兒,pod上就有一個結點IP的對外埠,供外部訪問了。
運行結束後,剛啟動過的pod和service就不見了,服務也停止了。
docker容器,其實就是一個運行的輕量級系統,裡面可以跑我們的業務應用。
而POD則是代表容器的集合,一個POD可以運行多個容器,一台機器上可以運行多個POD。
POD未必是一個對外開放的服務,他可能只是內部計算的程序,默認只能集群內部通信,所以還有Service的概念,用於讓POD對外開放埠,供外部訪問。這里的service本質上是個集群內部的負載均衡器,用來給同一個Deployment分流;對應的還有Ingress,外部負載均衡器,用於給多個Deployment分流。
而Deployment顧名思義,就是一次部署的抽象實例,比如說,現在需要部署一個3台機器均衡負載的nodejs業務應用,那麼這個部署任務則代表一個deployment實例。
很快,我們可以看到POD和deployment的部署情況,都已經正常運作。
進入容器後可以使用基本linux命令,也可見8080埠已經被我們的node應用佔用了。
但是此時service還沒有他們,也就是正處於無法提供外部服務的狀態。
這里對一個deployment裡面的3個pod啟動了個默認均衡負載服務,暴露出來的一個埠是30057,訪問可通。
也能夠通過logs命令查看控制台輸出的日誌。
因為deployment實例中包含了pod的部署配置,所以刪除deployment時,k3s就會直接把pod也刪除掉。
但service並不在deployment部署的范圍內,所以需要同步刪除它,在刪除命令中通過","與deployment分割開來即可。
至此已經把剛起來的服務全部關閉掉了。
這里我們看到3個Server(Master)結點由於需要維護集群高可用,對CPU持續20%左右的消耗,內存也需要一個G左右。而Agent(Wroker)結點只需要執行部署任務,所以對內存與CPU的需求都相對低一些,僅維持在10%左右的CPU和半個G左右的內存消耗。
參考: https://zhuanlan.hu.com/p/120171512
參考: http://kubernetes.kansea.com/docs/hellonode/
『肆』 如何用樹莓派搭建個人 web 伺服器
Apache + MySql + Php.
1、安裝Apache
Apache可以用下面的命令來安裝
sudo apt-get install apache2
Apache默認路徑是/var/www/
其配置文件路徑為:/etc/apache2/
可以通過:sudo vi /etc/apache2/ports.conf修改監聽埠號
重啟服務生效:sudo service apache2 restart
2、安裝mysql
sudo apt-get install mysql-server
安裝過程中,會出現一個提示符讓你輸入一個密碼。
這個密碼是mysql root用戶的密碼。
3、安裝PHP
輸入下面的命令,就可以安裝PHP 5,以及PHP訪問mysql資料庫所需要的庫。
sudo apt-get install php5
sudo apt-get install php5-mysql
4、測試
安裝完成後,可以在瀏覽器中輸入你路由器的IP或域名,就可以訪問你的網站了。
你應該能看到一個頁面顯示「It works」,但是沒有其它內容。
創建一個/var/www/index.php
5、外網訪問
這里使用蒲公英組建異地區域網實現外網訪問
先將蒲公英安裝包預先上傳至樹莓派(路徑:/home/oray/下載/PgyVPN_CentOS_2.0.0_x86_64.rpm)
通過cd命令進入存放蒲公英安裝軟體的目錄,輸入rpm命令進行安裝;
cd 下載/
rpm -ivh PgyVPN_CentOS_2.0.0_x86_64.rpm
安裝成功後,任意路徑下輸入「PgyVistor」命令即可調出交互界面,按照界面指示輸入賬號進行登錄,可以選擇打開自動登錄。
之後,外網設備同樣安裝蒲公英客戶端,用同一賬號登錄就可以訪問樹莓派的Web服務了~
『伍』 樹莓派搭建好web伺服器後怎麼關聯域名
1、做成web伺服器需要滿足:域名或者公網ip,電腦安裝配置web服務,開啟80埠允許訪問,網站程序。2、域名或者公網ip,這一點一般家用寬頻沒有固定的公網ip,常用的動態域名解析花生殼,科邁動態解析,建議申請使用花生殼動態域名解析,並設置到路由器上,這樣網站的訪問域名是花生殼的子域名。3、如果有公網固定ip,建議購買一個域名解析到這個ip上,這個公網ip可以在電腦直接設定。web綁定,防火牆允許80埠就可以了。4、電腦安裝配置web服務,這個條件比較好實現,找個伺服器操作系統,如win2003系統,安裝上iis組件就可以了,默認80就打開了,然後再配置一下程序需要的環境。5、如果.net程序就安裝netframwork相應版本,如果php就配置php+mysql環境。6、家用寬頻默認80埠在路由器不開放的,需要在路由器上做埠映射,將個人電腦ip80埠通過寬頻路由映射出去。7、網站程序,自己會開發了可以自己做,不會了到網上下載一些開源程序就可以了。
『陸』 如何用樹莓派搭建伺服器
方法/步驟
1
在樹莓派上安裝linux系統,到官網下載系統壓縮包,推薦使用raspbian。
2
如果在windows下安裝,需要下載win32diskimager,解壓系統,將解壓出來的系統映像寫到內存卡(內存卡最好大點,推薦8G以上的內存卡)。
3
如果在Linux系統下安裝,先輸入命令:sudo fdisk -l
查詢內存卡的分區,一般是/dev/sdb。
把系統映像解壓到家目錄下/home/***,輸入命令:
sudo dd bs=1M if=~/2016-02-26-raspbian-jessie-lite.img of=/dev/sdb
這步按你自己的實際情況操作。
看到以下輸出就成功寫入了。
4
把內存卡裝入樹莓派,開機啟動,第一次會需要配置系統,可以按默認設置直接啟動進入系統。
5
安裝Apache。apache伺服器一般在linux軟體源列表有,可以用apt安裝。
在安裝可以先更新一下apt的軟體列表,以確定安裝的軟體是最新。
輸入命令:sudo apt-get update
更新完畢可以正式安裝apache了。
輸入命令:sudo apt-get install apache2
6
安裝mysql。這個也是軟體列表中的軟體,所以直接用apt安裝。因為我們是使用伺服器端應用,輸入以下命令安裝:
sudo apt-get install mysql-server
7
安裝PHP。
輸入命令:sudo apt-get install php5
php還需要對資料庫進行操作,所以還需要安裝php5-mysql
輸入命令:sudo apt-get install php5-mysql
8
注冊一個域名,用nat123將你的域名與你的IP進行域名解析。若是內網則還需要內網映射。
9
在瀏覽器輸入打開你的網址,網頁正常顯示伺服器就搭建成功了。
『柒』 智慧家庭 - HA(1) - 在樹莓派上架設 Home Assistant
本文索引:
Home Assistant (以下簡稱 HA) 是一個開源的智能家居網關項目,它可以將市面上所有支持的智能硬體設備整合到一起進行統一管理,並提供了默認的 Web UI。HA 社區開發了海量組件以支持市面上主流的設備,在 IoT 中扮演了大腦的角色。在家庭伺服器上架設 HA 有多種實現方式,官方也製作了對應的系統鏡像 Hass.io ,並推薦使用「樹莓派3B+」作為其宿主機器。
為了驗證預期效果,最好提前准備好以下設備:
通過 Docker Image 安裝及更新一種服務免去了為該服務准備依賴環境的繁瑣步驟, HA 官方推出了對應的 Docker Image 且支持樹莓派的 CPU 架構,本文主要介紹通過 Docker 安裝 HomeAssistant 。如果你不喜歡 Docker ,可以參考 Install Home Assistant 以其他方式安裝。
使用 Docker 安裝 HA 是非常簡單的,官方提供了支持 Raspberry Pi 3 的 Docker Image 和「 安裝指南 」:
參數 /path/to/your/config:/config 映射 container 的 /config 至本地主機的物理路徑,此處我選擇了 ~/.homeassistant 。如果希望安裝指定版本的 Image,參考「 HA 在 Docker Hub 上的 Tag 列表 」選擇版本,例如 0.69.1:
安裝完成後, HomeAssistant 的 container 已經開始運行:
查看剛剛指定的配置文件目錄,出現了以下文件及目錄:
config 目錄(此處為 ~/homeassistant/ )下的 configuration.yaml 是配置文件的入口點,其他由 yaml 為擴展名的配置文件均是為了實現獨立管理而單獨分離出來的文件,可在 configuration.yaml 文檔中找到如下入口載入這些配置文件:
8123 是 Web UI 的默認埠,嘗試在瀏覽器中輸入 http://{ip-address-to-raspberry}:8123 訪問,得到如下結果:
HA 會自動查找接入同一網路中的智能設備,是因為 configuration.yaml 中默認配置了 Discovery 組件:
一切正常之後,每次重啟樹莓派必須手動執行 docker container start [Container ID]/NAME 的方式來啟動 HA 服務,我們需要將其做成服務或加入開機啟動腳本,編輯 /etc/rc.local 文件:
重啟樹莓派, HA 開機啟動成功,至此,一個基本款的家庭 HA 搭建就完成了。
HA 目前仍然在快速迭代中,對應的 Docker Image 也會同步放出。要更新以 Docker Container 運行的 HA 實例,只要重新拉取最新版本的 Image 即可: