用樹莓派構建一臺服務器,永久運行網站

1、前言

因爲本人在這段時候,看到了一個叫作樹莓派的東東,初步瞭解以後以爲頗有意思,因而想把整個過程記錄下來。javascript

2、樹莓派是什麼?

Raspberry Pi(中文名爲樹莓派,簡寫爲RPi,(或者RasPi / RPI) 是爲學習計算機編程教育而設計),只有信用卡大小的微型電腦,其系統基於Linux。隨着Windows 10 IoT的發佈,咱們也將能夠用上運行Windows的樹莓派。
自問世以來,受衆多計算機發燒友和創客的追捧,曾經一「派」難求。別看其外表「嬌小」,內「心」卻很強大,視頻、音頻等功能統統皆有,可謂是麻雀雖小,五臟俱全java

1.用個人話理解

用個人話理解就是樹莓派就是一臺主機,你能夠外接顯示器,鍵盤鼠標,u盤等等外設,由於它體積很小,並且又有不少串口和外接的口,能夠直接調用不少底層硬件。android

2.市面上的型號

市面上大可能是3代B+型,淘寶一搜樹莓派一大堆都是,價錢純主板(不要任何外設)在230+左右,有點小貴,超過個人預算,因此我繼續尋找廉價的,終於讓我發現了一款100+的樹莓派。nginx

3.樹莓派zero w

樹莓派zero w是一款mini的樹莓派,體質只有3b+的1/3。實際到手後,你會發現它真的超級小,超級可愛。如下是個人實物圖,你能夠看看大小到底有多mini。web

1.jpg

你能夠看到,最上面是一根普通的黑色簽字筆,接下來是一個即插即用型的外接wifi網卡,而後是一個USB讀卡器,最底下的就是咱們今天的主角zero w。它真的超級小,有木有。真的是完美的詮釋了那句「麻雀雖小,五臟俱全」的話。shell

zero w這款樹莓派的主要參數以下:編程

  • BCM2835處理器,1GHz主頻,512MB RAM
  • BCM43438 WiFi / BT芯片
  • micro-USB電源接口
  • micro-USB OTG接口
  • miniHDMI端口
  • 複合視頻和重置擴展接口
  • 脆弱的CSI攝像頭接口
  • micro-SD卡座,存放操做系統
  • 40-pin GPIO擴展接口
  • 尺寸:65mm*30mm

你別看它的cpu只有1核,內存只有512MB,就以爲它可能什麼都作不了,可是實際上它的性能仍是很好的,用於跑一個網站真的是小case。瀏覽器

4.更多樹莓派

關於更多樹莓派型號或者使用教程你能夠去樹莓派實驗室這個網站,上面有豐富的資源。app

3、樹莓派zero w安裝系統

1.準備

你可能提早須要準備的東西以下:ssh

  • 16GB or 32GB 的SanDisk內存卡(注意是之前那種放在手機上,很小的哦)
  • 一根最普通不過的usb安卓數據線(not type-c)
  • u盤格式化工具(推薦使用 SDFormatter)
  • 系統燒寫工具(Win32DiskImager)
  • 樹莓派系統(能夠去官網下載)

我使用的是Raspbian Stretch Lite這個系統鏡像,這個系統是官方製做的,lite是無桌面版的,只有黑漆漆的控制檯,優勢是體積小,省性能和內存。

名字帶有desktop的是有桌面ui的,對不熟悉liunx系統的朋友可能更友好,可是體積很大,佔用的性能也會更高。

2.png

2.第一步下載系統鏡像

下載好你須要的系統鏡像後,以下圖

3.png

一開始只有一個zip的壓縮包,大小大概360MB左右,你須要把它解壓,獲得上圖的文件夾

4.png

而後進入文件夾能夠看到一個img的鏡像,大小爲1.7GB左右

ps:這個官方的Raspbian鏡像,若是是其餘第三方的鏡像,可能下載後的壓縮包解壓後不是img鏡像,這種狀況請另行百度解決

3.使用Win32DiskImager往內存卡中寫入鏡像

5.png

把內存卡插入讀卡器後,插入電腦。
打開Win32DiskImager軟件後,選擇img鏡像,設備選擇你的U盤,而後點擊寫入就能夠了,寫入完成後會彈出成功的提示框。

ps: 我上圖沒有選擇設備,由於的沒插入讀卡器,僅僅是示範而已

4.修改boot分區的文件

先別急着拔出讀卡器,此時,咱們電腦能夠看到u盤中只有一個名爲boot的分區,大小可能只有40MB左右,不要着急,由於window不識別內存卡中liunx系統的其餘分區。

4.1新建ssh文件

由於咱們的zero w有一個mini hdmi的接口,可是我不須要屏幕,因此須要使用ssh鏈接到zero w中的系統,因此須要在第一次開機就能開啓ssh功能。
咱們進入boot分區內,而後新建一個名爲ssh的文件,注意不要後綴名!!!!也不要往裏面寫任何東西!!

4.2新建wpa_supplicant.conf文件

由於ssh鏈接是須要ip地址的,因此咱們須要將zero w在第一次開機自動鏈接wifi,使其和咱們的電腦處於一個局域網,這樣咱們才能夠經過ssh鏈接到zero w的系統。
一樣的在boot分區內,新建一個名爲wpa_supplicant.conf的文件,而後往裏面寫入以下內容後保存:

country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
ssid="你的wifi名字"
psk="你的wifi密碼"
}

5.組裝咱們的最小主機並鏈接

取出讀卡器中的內存卡,而後插入到zero w中,使用一根usb安卓數據線鏈接電源(5V1A)便可。
等待幾分鐘,期間咱們的zero w的指示燈會一直閃爍,很正常,等待指示燈常亮的時候,咱們去路由器上,查看一下樹莓派的ip地址。

6.png

能夠看到咱們zero w的ip爲192.168.0.104,而後使用ssh鏈接工具(推薦使用putty)鏈接樹莓派,初始帳戶爲pi,密碼是raspberry。

7.png

鏈接成功,如上圖所示。這樣咱們的系統就正確無誤的安裝好了。

ps: 若是是手機開啓熱點當作一個路由器的話,我們手機下載一個名叫android terminal的app,而後輸入 ip neigh指令,就能夠查到鏈接到手機的設備的ip信息了。

6.優化我們樹莓派的系統

6.1修改源

由於國外的源,我們在國內的鏈接過去網速很慢,因此咱們須要修改成國內的源,我修改的是中科大的源。

6.1.1修改sources.list文件

sudo nano /etc/apt/sources.list 
--註釋其餘內容,添加如下:
deb http://mirrors.ustc.edu.cn/raspbian/raspbian/raspbian stretch main contrib non-free rpi

6.1.2修改raspi.list文件

sudo nano /etc/apt/sources.list.d/raspi.list
--註釋其餘內容,添加如下:
deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian stretch main ui

6.1.3執行更新

sudo apt-get update
sudo apt-get upgrade

6.2修改時區

sudo dpkg-reconfigure tzdata

找到亞洲Asia,而後選擇shanghai就能夠了

6.3開機自啓ssh

第一種:

sudo raspi-config

進入選擇找到interfacing option選擇,而後找到ssh,按回車使能enable就能夠了

第二種:
在終端命令行中啓動SSH服務後,若是系統重啓或關機後啓動,SSH服務默認是關閉的,依然須要手動啓動,爲了方即可以設置SSH服務開機自動啓動,打開/etc/rc.local文件,在語句exit 0以前加入:
/etc/init.d/ssh start

建議都試試,反之個人是能夠了。

7.安裝nginx

#安裝
sudo apt-get install nginx
#啓動
sudo /etc/init.d/nginx start
#重啓
sudo /etc/init.d/nginx restart
#中止
sudo /etc/init.d/nginx stop

打開瀏覽器訪問192.168.0.104(你的樹莓派ip地址),能夠看到nginx的頁面,說明安裝好了。
我這邊上傳了個人博客,以下圖

8.png

能夠正常的看到頁面了,可是這樣只能在內網(局域網中)看到,我想讓全部人均可以訪問怎麼辦?

8.內網穿透

內網穿透,意思就是將內網(本地)的web應用經過nat穿透到公網上,從而讓別人能夠訪問到。

內網穿透目前主要由ngrok和frp兩種,都很是好用,國內ngrok免費的有ittun、sunny和natapp,這三個都是免費的,前面兩個能夠自定義域名,後面的須要vip版本才能夠自定義域名。

我這三種都試過,我發現sunny的arm版本的ngrok客戶端在個人樹莓派運行不了,ittun的和natpp的ngrok均可以,因爲須要自定義域名,我使用的是ittun的ngrok_arm版本的

使用方法這三者官網都有詳細說明,你們自行查看。

這是正常運行時的截圖,訪問http://zerow.ittun.com/時能夠...

9.png

10.png

由於須要ngrok在後臺運行,因此我用的是screen會話使其能夠在後臺運行。可是開啓自啓,尚未實現,萬一斷電或者斷網了,我必須手動去運行一下ngrok,這是目前沒有解決的痛點。

9.更多

樹莓派不只僅只是能夠用於運行一個網站,還有不少不少的功能等待你的開發,能夠多去看看樹莓派實驗室裏面,不少大神都寫了不少實用的教程。

個人zero w狀態信息以下:

11.png

在上面開啓了一個nginx和ngrok服務,內存剩餘還有250MB,仍是很舒服的,cpu溫度也不算高,運行兩天了,基本在37-39之間。

image

相關文章
相關標籤/搜索