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