閱讀251 返回首頁    go 技術社區[雲棲]


如何用樹莓派搭建個人 web 服務器

個人 Web 服務器即 “雲”,隻不過是你擁有和控製它,而不是一個大型公司。

擁有一個自己的雲有很多好處,包括可定製、免費存儲、免費的互聯網服務、通往開源軟件之路、高安全性、完全控製您的內容、快速更改的能力、實驗代碼的地方等等。 這些好處大部分是無法估量的,但在財務上,這些好處可以為您每個月節省超過 100 美元。

Building your own web server with Raspberry Pi

Building your own web server with Raspberry Pi

我本可以選擇 AWS ,但我更喜歡完全自由且安全性可控,並且我可以學一下這些東西是如何搭建的。

  • 私有 Web 托管:而非 BlueHost 或 DreamHost
  • 雲存儲:而非 Dropbox、Box、Google Drive、Microsoft Azure、iCloud 或是 AWS
  • 自主部署安全
  • HTTPS:Let’s Encrypt
  • 分析: Google
  • OpenVPN:不需要專有互聯網連接(預計每個月花費 $7)

我所使用的物品清單:

  • 樹莓派 3 代 Model B
  •   MicroSD 卡(推薦使用 32 GB, 兼容樹莓派的 SD 卡
  •   USB microSD 卡讀卡器
  • 以太網絡線
  • 連接上 Wi-Fi 的路由器
  • 樹莓派盒子
  • 亞馬遜倍思的 MicroUSB 數據線
  • 蘋果的充電器
  • USB 鼠標
  • USB 鍵盤
  • HDMI 線材
  • 顯示器 (支持接入 HDMI)
  • MacBook Pro

步驟 1: 啟動樹莓派

下載最新發布的 Raspbian (樹莓派的操作係統)。 Raspbian Jessie 的 ZIP 包就可以用 [腳注 1]。解壓縮或提取下載的文件然後把它拷貝到 SD 卡裏。使用 Pi Filler 可以讓這些過程變得更簡單。下載 Pi Filer 1.3 或最新的版本。解壓或提取下載文件之後打開它,你應該會看到這樣的提示:

Pi Filler prompt

Pi Filler prompt

確保 USB 讀卡器這時還沒有插上。如果已經插上了那就先彈出。點 “Continue” 繼續下一步。你會看到一個讓你選擇文件的界麵,選擇你之前解壓縮後的樹莓派係統文件。然後你會看到另一個提示,如圖所示:

USB card reader prompt

USB card reader

把 MicroSD 卡(推薦 32 GB ,至少 16GB)插入到 USB MicroSD 卡讀卡器裏。然後把 USB 讀卡器接入到你的電腦裏。你可以把你的 SD 卡重命名為 “Raspberry” 以區別其他設備。然後點擊 “Continue”。請先確保你的 SD 卡是空的,因為 Pi Filler 會在運行時 擦除 所有事先存在 SD 卡裏的內容。如果你要備份卡裏的內容,那你最好就馬上備份。當你點 “Continue” 的時候,Raspbian OS 就會被寫入到 SD 卡裏。這個過程大概會花費一到三分鍾左右。當寫入完成後,推出 USB 讀卡器,把 SD 卡拔出來插入到樹莓派的 SD 卡槽裏。把電源線接上,給樹莓派供電。這時樹莓派就會自己啟動。樹莓派的默認登錄賬戶信息是:

  • 用戶名: pi
  • 密碼:raspberry

當樹莓派首次啟動完成時,會跳出一個標題為 “設置選項Setup Options” 的配置界麵,就像下麵的圖片一樣 [腳注 2]:

Raspberry Pi software configuration setup

Raspberry Pi software configuration setup

選擇 “擴展文件係統Expand Filesystem” 這一選項並回車 [腳注 3]。 同時,我還推薦選擇第二個選項 “修改密碼Change User Password”。這對保證安全性來說尤為重要。它還能個性化你的樹莓派。

在選項列表中選擇第三項 “啟用引導到桌麵Enable Boot To Desktop/Scratch” 並回車。這時會跳到另一個標題為 “選擇引導選項Choose boot option” 的界麵,就像下麵這張圖這樣:

Choose boot option

Choose boot option

在這個界麵選擇第二個選項 “以用戶‘pi’登錄圖形化桌麵Desktop log in as user 'pi' at the graphical desktop” 並回車 [腳注 4]。完成這個操作之後會回到之前的 “設置選項Setup Options” 界麵。如果沒有回到之前的界麵的話就選擇當前界麵底部的 “OK” 按鈕並回車。

當這些操作都完成之後,選擇當前界麵底部的 “Finish” 按鈕並回車,這時它就會自動重啟。如果沒有自動重啟的話,就在終端裏使用如下命令來重啟。


  1. $ sudo reboot

接上一步的重啟,如果所有步驟都順利進行的話,你會進入到類似下麵這樣桌麵環境中。

Raspberry Pi desktop

Raspberry Pi desktop

當你進入了桌麵之後,在終端中執行如下命令來更新樹莓派的固件。


  1. $ sudo apt-get update
  2. $ sudo apt-get upgrade-y
  3. $ sudo apt-get dist-upgrade -y
  4. $ sudo rpi-update

這些操作可能會花費幾分鍾時間。完成之後,現在運行著的樹莓派就是最新的了。

步驟 2: 配置樹莓派

SSH 指的是 Secure Shell,是一種加密網絡協議,可讓你在計算機和樹莓派之間安全地傳輸數據。 你可以從 Mac 的命令行控製你的樹莓派,而無需顯示器或鍵盤。

要使用 SSH,首先需要你的樹莓派的 IP 地址。 打開終端並輸入:


  1. $ sudo ifconfig

如果你在使用以太網,看 eth0 部分。如果你在使用 Wi-Fi, 看 wlan0 部分。

查找 inet addr,後跟一個 IP 地址,如 192.168.1.115,這是本篇文章中使用的默認 IP。

有了這個地址,在終端中輸入 :


  1. $ ssh pi@192.168.1.115

對於 PC 上的 SSH,請參見 [腳注 5]。

出現提示時輸入默認密碼 raspberry,除非你之前更改過密碼。

現在你已經通過 SSH 登錄成功。

遠程桌麵

使用 GUI(圖形用戶界麵)有時比命令行更容易。 在樹莓派的命令行(使用 SSH)上鍵入:


  1. $ sudo apt-get install xrdp

xrdp 支持 Mac 和 PC 的 Microsoft Remote Desktop 客戶端。

在 Mac 上,在 App store 中搜索 “Microsoft Remote Desktop”。 下載它。 (對於 PC,請參見 [腳注 6]。)

安裝完成之後,在你的 Mac 中搜索一個叫 “Microsoft Remote Desktop” 的應用並打開它,你會看到 :

Microsoft Remote Desktop

Microsoft Remote Desktop

點擊 “New” 新建一個遠程連接,在空白處填寫如下配置。

Setting up a remote connection

Setting up a remote connection

關閉 “New” 窗口就會自動保存。

你現在應該看到 “My Desktop” 下列出的遠程連接。 雙擊它。

簡單加載後,你應該在屏幕上的窗口中看到你的樹莓派桌麵,如下所示:

Raspberry Pi desktop

Raspberry Pi desktop

好了,現在你不需要額外的鼠標、鍵盤或顯示器就能控製你的樹莓派。這是一個更為輕量級的配置。

靜態化本地 IP 地址

有時候你的本地 IP 地址 192.168.1.115 會發生改變。我們需要讓這個 IP 地址靜態化。輸入:


  1. $ sudo ifconfig

從 eth0 部分或 wlan0 部分,記下 inet addr(樹莓派當前 IP),bcast(廣播 IP 範圍)和 mask(子網掩碼地址)。 然後輸入:


  1. $ netstat -nr

記下 destination 和 gateway/network

Setting up a local IP address

Setting up a local IP address

大概應該是這樣子的:


  1. net address 192.168.1.115
  2. bcast 192.168.1.255
  3. mask 255.255.255.0
  4. gateway 192.168.1.1
  5. network 192.168.1.1
  6. destination 192.168.1.0

有了這些信息,你可以很簡單地設置一個靜態 IP。輸入:


  1. $ sudo nano /etc/dhcpcd.conf

不要去動 /etc/network/interfaces

剩下要做的就是把這些內容追加到這個文件的底部,把 IP 換成你想要的 IP 地址。


  1. interface eth0
  2. static ip_address=192.168.1.115
  3. static routers=192.168.1.1
  4. static domain_name_servers=192.168.1.1

一旦你設置了靜態內部 IP 地址,這時需要通過如下命令重啟你的樹莓派 :


  1. $ sudo reboot

重啟完成之後,在終端中輸入 :


  1. $ sudo ifconfig

這時你就可以看到你的樹莓派上的新的靜態配置了。

靜態化全局 IP 地址

如果您的 ISP(互聯網服務提供商)已經給您一個靜態外部 IP 地址,您可以跳到端口轉發部分。 如果沒有,請繼續閱讀。

你已經設置了 SSH、遠程桌麵和靜態內部 IP 地址,因此現在本地網絡中的計算機將會知道在哪裏可以找到你的樹莓派。 但是你仍然無法在本地 Wi-Fi 網絡外部訪問你的樹莓派。 你需要樹莓派可以從互聯網上的任何地方公開訪問。這需要靜態的外部 IP 地址 [腳注 7]。

聯係您的 ISP 並請求靜態的外部(有時稱為靜態全局)IP 地址可能會是一個非常敏感的過程。 ISP 擁有決策權,所以我會非常小心處理。 他們可能拒絕你的的靜態外部 IP 地址請求。 如果他們拒絕了你的請求,你不要怪罪於他們,因為這種類型的請求有法律和操作風險。 他們特別不希望客戶運行中型或大型互聯網服務。 他們可能會明確地詢問為什麼需要一個靜態的外部 IP 地址。 最好說實話,告訴他們你打算主辦一個低流量的個人網站或類似的小型非營利互聯網服務。 如果一切順利,他們應該會建立一個工單,並在一兩個星期內給你打電話。

端口轉發

這個新獲得的 ISP 分配的靜態全局 IP 地址是用於訪問路由器。 樹莓派現在仍然無法訪問。 你需要設置端口轉發才能訪問樹莓派。

端口是信息在互聯網上傳播的虛擬途徑。 你有時需要轉發端口,以使計算機像樹莓派一樣可以訪問 Internet,因為它位於網絡路由器後麵。 VollmilchTV 專欄在 YouTube 上的一個視頻,名字是什麼是 TCP/IP,端口,路由,Intranet,防火牆,互聯網,可以幫助你更好地了解端口。

端口轉發可用於像 樹莓派 Web 服務器或 VoIP 或點對點下載的應用程序。 有 65000個以上的端口可供選擇,因此你可以為你構建的每個 Internet 應用程序分配一個不同的端口。

設置端口轉發的方式取決於你的路由器。 如果你有 Linksys 的話,Gabriel Ramirez 在 YouTbue 上有一個標題叫 如何讓你的 Apache Ubuntu 服務器連到互聯網 的視頻解釋了如何設置。 如果您沒有 Linksys,請閱讀路由器附帶的文檔,以便自定義和定義要轉發的端口。

你需要轉發 SSH 以及遠程桌麵端口。

如果你認為你已經過配置端口轉發了,輸入下麵的命令以查看它是否正在通過 SSH 工作:


  1. $ ssh pi@your_global_ip_address

它應該會提示你輸入密碼。

檢查端口轉發是否也適用於遠程桌麵。 打開 Microsoft Remote Desktop。 你之前的的遠程連接設置應該已經保存了,但需要使用靜態的外部 IP 地址(例如 195.198.227.116)來更新 “PC 名稱” 字段,而不是靜態的內部地址(例如 192.168.1.115)。

現在,嚐試通過遠程桌麵連接。 它應該簡單地加載並顯示樹莓派的桌麵。

Raspberry Pi desktop

Raspberry Pi desktop

好了, 樹莓派現在可以從互聯網上訪問了,並且已經準備好進行高級項目了。

作為一個獎勵選項,您可以保持到您的 Pi 的兩個遠程連接。 一個通過互聯網,另一個通過 LAN(局域網)。很容易設置。在 Microsoft Remote Desktop 中,保留一個稱為 “Pi Internet” 的遠程連接,另一個稱為 “Pi Local”。 將 Pi Internet 的 “PC 名稱” 配置為靜態外部 IP 地址,例如 195.198.227.116。 將 Pi Local 的 “PC 名稱” 配置為靜態內部 IP 地址,例如 192.168.1.115。 現在,您可以選擇在全局或本地連接。

如果你還沒有看過由 Gabriel Ramirez 發布的 如何讓你的 Apache Ubuntu 服務器連到互聯網,那麼你可以去看一下,作為過渡到第二個項目的教程。 它將向您展示項目背後的技術架構。 在我們的例子中,你使用的是樹莓派而不是 Ubuntu 服務器。 動態 DNS 位於域名公司和您的路由器之間,這是 Ramirez 省略的部分。 除了這個微妙之處外,視頻是在整體上解釋係統的工作原理。 您可能會注意到本教程涵蓋了樹莓派設置和端口轉發,這是服務器端或後端。 查看原始來源,涵蓋域名,動態 DNS,Jekyll(靜態 HTML 生成器)和 Apache(網絡托管)的更高級項目,這是客戶端或前端。

腳注

[1] 我不建議從 NOOBS 操作係統開始。 我更喜歡從功能齊全的 Raspbian Jessie 操作係統開始。

[2] 如果沒有彈出 “Setup Options”,可以通過打開終端並執行該命令來始終找到它:


  1. $ sudo-rasps-config

[3] 我們這樣做是為了將 SD 卡上存在的所有空間用作一個完整的分區。 所有這一切都是擴大操作係統以適應 SD 卡上的整個空間,然後可以將其用作樹莓派的存儲內存。

[4] 我們這樣做是因為我們想啟動進入熟悉的桌麵環境。 如果我們不做這個步驟,樹莓派每次會進入到終端而不是 GUI 中。

[5]

PuTTY configuration

PuTTY configuration

下載並運行 PuTTY 或 Windows 的其它 SSH 客戶端。 在該字段中輸入你的 IP 地址,如上圖所示。 將默認端口保留為 22。 回車,PuTTY 將打開一個終端窗口,提示你輸入用戶名和密碼。 填寫然後開始在樹莓派上進行你的遠程工作。

[6] 如果尚未安裝,請下載 Microsoft Remote Desktop。 搜索您的計算機上的的 Microsoft Remote Desktop。 運行。 提示時輸入 IP 地址。 接下來,會彈出一個 xrdp 窗口,提示你輸入用戶名和密碼。

[7] 路由器具有動態分配的外部 IP 地址,所以在理論上,它可以從互聯網上暫時訪問,但是您需要 ISP 的幫助才能使其永久訪問。 如果不是這樣,你需要在每次使用時重新配置遠程連接。

原文發布時間為:2017-05-14

本文來自雲棲社區合作夥伴“Linux中國”

最後更新:2017-05-19 12:05:04

  上一篇:go  如何在 CentOS 7 中使用 SSL/TLS 加固 FTP 服務器進行安全文件傳輸
  下一篇:go  《HttpClient官方文檔》2.7 連接套接字工廠