您是否知道Raspberry Pi基金會的官方網站是托管在Raspberry Pi板集群上的?
這種配置在基金會最繁忙的一天—Raspberry Pi 4發布的時候—成功地為數千萬的訪問者提供了服務。
那么為何不也這樣做呢?
這種Pi集群位于數據中心,并且基于企業交換機、負載平衡器和文件服務器來將自己的自定義SD卡映像寫入Pi。
您將無法從帶有無線路由器和家庭互聯網的休息室獲得可比較的結果(即使您的路由器和互聯網非常好)。
您還必須保證安全性。如果您把您的Pi提供給公共互聯網,而有攻擊者破解了它,那么他們很有可能會訪問您的本地網絡。這就不好了。
如果您決定要使用Raspberry Pi來托管公共互聯網上的網站,那么最好花錢請提供Raspberry Pi托管服務的人來為您處理。如果您是用于商業用途,那更要采取這種方式。
Raspberry Pi Web服務器的免費替代品
不過,其實以每月$0.00的價格在云上托管web服務器并不難。因為大型云企業很樂意在他們的免費服務中為您提供一個小型VPS。
您無法通過這種級別的基礎平臺來啟動熱門的新技術初創公司,但是對于個人博客,甚至本地企業或者自由職業者網站來說,這已經足夠了。您只需要具備在Raspberry Pi上執行相同任務時所用的Linux技能就可以完成該操作。
使用Raspberry Pi的意義
Raspberry Pi作為一種廉價、節能的用于托管本地網絡中的網站和web應用程序的方式,具有非常重要的意義。
這是一個很棒的測試平臺和開發平臺,您可以擁有技術核心的完全訪問權限。您也不必擔心在對其進行魯棒性測試時的帶寬費用或者使用政策是否可接受。
這也是在本地網絡上為中小型企業托管wiki之類網站的絕佳方式。但是需要確保設置了自動備份。
您可能正在使用您的Pi來制作具有某種web界面或儀表板的IoT設備原型。對于這種工作,安裝web服務器是唯一正確的方法。
最后,在Raspberry Pi上安裝web服務器的最佳理由之一是督促您開始學習web服務器的相關知識。
選擇一種Web服務器
到目前為止,兩個最流行的Web服務器是Apache和Nginx(讀作Engine-X),這些都是您可以自由安裝和使用的開源項目。
Apache于1995年首次發布,幾乎與web同時發布,并且至今仍是互聯網上最受歡迎的Web服務器。
它擁有自己的模塊來處理動態內容,例如PHP,并且它的廣泛使用也顯示出其文檔相當齊全。這種服務器是一個強大的多面手,可以輕松地為各個目錄提供單獨的配置。這些特點使其成為了一個很好的入門選擇。
編寫Nginx是為了解決Apache在處理許多并發用戶任務時存在的局限性。它擅長處理靜態內容,在處理動態內容時需要用到外部處理器。
在本指南中,我們將安裝Apache。Nginx的確具有優勢,但是對于Raspberry Pi的典型使用案例來說不是那么重要。不過,如果您正在使用您的Pi來制作可以擴展的原型,那么也可以考慮學習使用Nginx。
事實上,將兩者一起使用也很常見,將Nginx用在前端管理靜態資源,后端使用Apache來呈現動態內容。
其他主要的web服務器有:
? Node.js 已經安裝在了您的Raspberry Pi中。它不是傳統的web服務器,而是Javascript的運行時環境。雖然您通常會使用Apache或Nginx之類的服務器作為前端,但是它可以同時處理多個連接,這對大型web應用程序來說非常方便。
? 您的Raspberry Pi上還安裝有Python的http.server模塊。這種模塊對測試和開發很有益,但是對于web服務器來說尤其方便。如果您正在用Python編寫web應用程序,那么只需要用幾行代碼就可以設置一個簡單的web服務器。
? Lighttpd 非常有效地利用了系統資源,所有開發嵌入式系統和物聯網設備的人應該都對此很感興趣。
在Raspberry Pi上安裝Apache
本指南是以Raspberry Pi OS Buster來編寫的,但是如果您使用的是早期版本的Raspbian,也不會有太大區別,Apache是一款非常成熟的軟件。
您將需要互聯網連接來安裝這些軟件包。
進入終端,并通過輸入以下內容更新您的操作系統:
sudo apt update && sudo apt upgrade -y
更新完成后,使用以下命令安裝Apache:
sudo apt install apache2 -y
您現在可以通過瀏覽Raspberry Pi來檢測Apache是否正確安裝。如果您使用的是Pi的web瀏覽器,請在地址欄中輸入 http://localhost.com/ 。
如果是在本地網絡中的其他設備上,您還需要使用IP地址。如果您不知道IP地址,可以通過以下命令獲取:
hostname -I
您的瀏覽器將加載出如下所示的頁面。
恭喜您擁有了一個Web服務器!
這很容易,對不對?
想要處理靜態內容,您只需要完成一個簡單的設置:每次頁面在瀏覽器中加載時顯示的內容都完全相同,直到您自己對文件進行編輯為止。
那么讓我們來對其中的一個文件進行編輯,輸入:
sudo nano /var/www/html/index.html
向下滾動文件,直到找到“Apache2 Debian Default Page(Apache2 Debian默認頁面)”行,然后將其更改為任何您喜歡的新的標題。保存文件,然后在瀏覽器中重新加載頁面。
靜態網站速度快,維護簡單,并且提供了許多可嘗試的內容。對于簡單的博客、商業網站或者信息網站,這也許可以滿足您的所有需求。只需要將您的網站部署到目錄/var/www/html/中,Apache將會為其提供服務。
當靜態功能不能滿足需求時
相比于每次都顯示相同的內容(服務器通過執行代碼生成的頁面),您可能會希望能夠提供動態內容。
也許這樣的話用戶就可以在頁面中編輯或添加內容,或者是在自己之前的內容上添加新的頁面(比如用于wiki、論壇或者博客上的評論部分)。
也可能是為了讓您的設備可以在儀表板上顯示數據,無論是從在線服務、數據庫還是從連接到GPIO 引腳上的設備所收集的數據。
您可以使用多種腳本語言來構建動態網站,例如Java、 Perl、PHP、 Python或者Ruby。您甚至可以使用在Go、C++ 或者C中編寫的編譯二進制腳本。
PHP是一個很好的入門選擇,因為最廣泛使用的開源CMS平臺,如WordPress、Joomla! 和Drupal都基于該語言建立。并且,通過這些平臺可以很容易地構建大部分的網站。
安裝 PHP
將PHP函數添加到Apache中只需要一個命令:
sudo apt install php libapache2-mod-php -y
通過將索引頁面替換為PHP頁面來測試安裝是否成功。刪除index.html并在nano中打開一個名為index.php的新文件。
sudo rm /var/www/html/index.html
sudo nano /var/www/html/index.php
現在輸入以下指令,然后保存文件:
然后在瀏覽器中重新加載頁面。您應該看到PHP函數呈現出如下內容:
接下來您要做什么?
接下來要做的工作取決于您自己。
Web的基本構建塊是HTML和CSS,所以開始嘗試兩者之一是個不錯的注意。
通過使用像Bootstrap這樣的前端框架,您可以避免很多HTML和CSS方面的工作,因為大部分內容已經為您編寫好了。
如果您想完全避免代碼的編寫,可以使用Hugo這樣的靜態站點構建器,它可以直接生成整個網站。
您掌握了這些內容之后,可能會想嘗試創建動態網站。
您還可能會需要數據庫存儲和數據檢索功能。如果您把MariaDB(或者MySQL)添加到已經構建的web服務器中,將會擁有所謂的LAMP堆棧(Linux、Apache、MySQL、PHP)。
LAMP堆棧是許多網站的基礎平臺,其中包括最受歡迎的平臺:WordPress。同時,它也是托管wiki、論壇等網站的很好的選擇。
也許您更想使用Python 而不是PHP。我的意思是,如果您正在Raspberry Pi上制作某種IoT設備或家庭自動化系統的原型,那么您很有可能已經在使用它了。
讓Apache運行Python需要多做一些工作,因為您需要配置通用網關接口或CGI。如果遇到了困難,那么就使用Python內置的http.server模塊進行開發和測試,直到找到解決方案。
Python還提供了流行的web框架,包括Django和Flask。兩者中,Flask更簡單、輕量。
我們到現在為止的探索只是觸及了表面。請繼續享受這一過程,看看下一步會有什么發現。
評論