0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何將Raspberry Pi用作Web服務(wù)器?

呂珠峰 ? 來(lái)源:呂珠峰 ? 作者:呂珠峰 ? 2023-02-25 17:34 ? 次閱讀
這篇文章來(lái)源于DevicePlus.com英語(yǔ)網(wǎng)站的翻譯稿。

您是否知道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ò)以下命令獲取:
hostname -I

您的瀏覽器將加載出如下所示的頁(yè)面。

poYBAGPzHSaACuVOAAE0JHwvPng829.png

恭喜您擁有了一個(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è)面。

poYBAGPzHSqAW9ftAAE4NY1gE4c669.png

靜態(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)容:

pYYBAGPzHSyAMUjqAAEvVmdBboo097.png

接下來(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)。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Web
    Web
    +關(guān)注

    關(guān)注

    2

    文章

    1254

    瀏覽量

    69210
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8866

    瀏覽量

    84963
  • Raspberry Pi
    +關(guān)注

    關(guān)注

    1

    文章

    553

    瀏覽量

    22136
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    使用NS1串口服務(wù)器HTTP模式上傳服務(wù)器數(shù)據(jù)

    HTTP協(xié)議工作于客戶端-服務(wù)端架構(gòu)之上。瀏覽作為HTTP客戶端通過(guò)URL向HTTP服務(wù)端即Web服務(wù)器發(fā)送所有請(qǐng)求。
    的頭像 發(fā)表于 08-30 12:36 ?215次閱讀
    使用NS1串口<b class='flag-5'>服務(wù)器</b>HTTP模式上傳<b class='flag-5'>服務(wù)器</b>數(shù)據(jù)

    如何使用espconn api實(shí)現(xiàn)一個(gè)Web服務(wù)器

    我正在嘗試使用 espconn api 實(shí)現(xiàn)一個(gè) Web 服務(wù)器。 在一些請(qǐng)求之后,我收到將此錯(cuò)誤(err1,超過(guò)最大時(shí)間值)寫入 uart,下一個(gè)espconn_send導(dǎo)致致命異常 (28)。 沒(méi)有關(guān)于此的文檔... 我該如何解決這個(gè)問(wèn)題?
    發(fā)表于 07-18 07:46

    ESP8266配置為帶有AT命令的Web服務(wù)器,AT命令回復(fù)HTTP GET出現(xiàn)錯(cuò)誤怎么解決?

    我已將ESP8266配置為帶有 AT 命令的 Web 服務(wù)器。當(dāng)瀏覽連接時(shí),它會(huì)向我發(fā)送一個(gè)請(qǐng)求[i]GET /favicon.ico我想用一個(gè)[i]錯(cuò)誤 404 未找到. 如何在響應(yīng) IPD 時(shí)發(fā)送的數(shù)據(jù)包中執(zhí)行此操作?
    發(fā)表于 07-16 08:29

    如何將ESP用作Internet交換機(jī)?

    有一個(gè) esp 代碼可以在 NAT 路由中轉(zhuǎn)換它。有沒(méi)有辦法 AP 和 STA 接口僅用作兩個(gè)交換機(jī)端口?我想使用路由的dhcp服務(wù)器
    發(fā)表于 07-10 07:24

    如何將CYKIT-028 TFT模塊與Raspberry Pi和ESP32微控制結(jié)合使用?

    我目前正在探索如何將 CYKIT-028 TFT 模塊與 Raspberry Pi 和 ESP32 微控制結(jié)合使用。 不過(guò),在選擇集成開發(fā)環(huán)境(IDE)和使用 PSOC Creato
    發(fā)表于 05-21 07:36

    5分鐘內(nèi)Raspberry Pi Pico變成簡(jiǎn)單的示波器+波形發(fā)生

    5 分鐘內(nèi) Raspberry Pi Pico(或任何 RP2040 板)變成簡(jiǎn)單的示波器+波形發(fā)生
    的頭像 發(fā)表于 03-04 09:14 ?1728次閱讀
    5分鐘內(nèi)<b class='flag-5'>將</b><b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Pico變成簡(jiǎn)單的示波器+波形發(fā)生<b class='flag-5'>器</b>

     海外云服務(wù)器搭建pi節(jié)點(diǎn)詳細(xì)步驟

     海外云服務(wù)器搭建pi節(jié)點(diǎn)簡(jiǎn)單嗎?海外云服務(wù)器搭建pi節(jié)點(diǎn)步驟有哪些?小編為您整理發(fā)布海外云服務(wù)器搭建p
    的頭像 發(fā)表于 02-21 10:16 ?964次閱讀

    什么是web服務(wù)器?如何選擇服務(wù)器配置?

    Web服務(wù)器是一種軟件或硬件設(shè)備,用于托管和提供網(wǎng)頁(yè)內(nèi)容。它接收客戶端(如瀏覽)發(fā)送的HTTP請(qǐng)求,并返回相應(yīng)的網(wǎng)頁(yè)內(nèi)容或其他資源,以實(shí)現(xiàn)更高的性能和可靠性。它是網(wǎng)站和應(yīng)用程序在互聯(lián)網(wǎng)上構(gòu)建和交付
    的頭像 發(fā)表于 01-03 15:25 ?1022次閱讀

     物理服務(wù)器和大寬服務(wù)器怎么選

    物理服務(wù)器和大寬服務(wù)器的選擇需要根據(jù)具體的業(yè)務(wù)需求來(lái)決定。物理服務(wù)器是一種獨(dú)立的、非虛擬化的計(jì)算機(jī)設(shè)備,它通常被用作高性能應(yīng)用、數(shù)據(jù)庫(kù)、存儲(chǔ)和網(wǎng)絡(luò)等關(guān)鍵業(yè)務(wù)應(yīng)用的運(yùn)行平臺(tái)。常見的物理
    的頭像 發(fā)表于 12-20 10:50 ?488次閱讀

    顯示Web服務(wù)器中的內(nèi)存使用情況

    Web服務(wù)器上,您可以在“內(nèi)存”選項(xiàng)卡的“診斷”網(wǎng)頁(yè)上找到有關(guān)各個(gè)內(nèi)存區(qū)域當(dāng)前使用情況的信息。
    的頭像 發(fā)表于 12-18 10:18 ?709次閱讀
    顯示<b class='flag-5'>Web</b><b class='flag-5'>服務(wù)器</b>中的內(nèi)存使用情況

    idea如何將項(xiàng)目部署到tomcat服務(wù)器

    項(xiàng)目部署到Tomcat服務(wù)器上是一個(gè)常見的操作,下面是一個(gè)詳細(xì)的步驟指南,描述了如何將項(xiàng)目成功部署到Tomcat服務(wù)器上。 準(zhǔn)備工作 在開始之前,確保你已經(jīng)安裝了Java環(huán)境和Tom
    的頭像 發(fā)表于 12-03 15:25 ?1454次閱讀

    RP2040和Raspberry Pi的區(qū)別

    作為 Raspberry Pi 基金會(huì)推出的首款微控制產(chǎn)品,RP2040 標(biāo)志著以單板計(jì)算機(jī) (SBC) 而聞名的 Raspberry Pi
    的頭像 發(fā)表于 11-16 17:37 ?844次閱讀
    RP2040和<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>的區(qū)別

    Banana Pi BPI-M6(Raspberry Pi 5 替代品)初始設(shè)置及固件燒錄

    Banana Pi BPI-M6(Raspberry Pi 5 替代品)初始設(shè)置及固件燒錄
    的頭像 發(fā)表于 11-09 09:24 ?1072次閱讀
    Banana <b class='flag-5'>Pi</b> BPI-M6(<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 5 替代品)初始設(shè)置及固件燒錄

    基于ARM平臺(tái)的嵌入式WEB服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《基于ARM平臺(tái)的嵌入式WEB服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn).pdf》資料免費(fèi)下載
    發(fā)表于 10-27 10:45 ?1次下載
    基于ARM平臺(tái)的嵌入式<b class='flag-5'>WEB</b><b class='flag-5'>服務(wù)器</b>的設(shè)計(jì)與實(shí)現(xiàn)

    基于單片機(jī)的嵌入式web服務(wù)器設(shè)計(jì)與實(shí)現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《基于單片機(jī)的嵌入式web服務(wù)器設(shè)計(jì)與實(shí)現(xiàn).pdf》資料免費(fèi)下載
    發(fā)表于 10-26 14:36 ?0次下載
    基于單片機(jī)的嵌入式<b class='flag-5'>web</b><b class='flag-5'>服務(wù)器</b>設(shè)計(jì)與實(shí)現(xiàn)