0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何将Raspberry Pi用作Web服务器?

吕珠峰 来源:吕珠峰 作者:吕珠峰 2023-02-25 17:34 次阅读
这篇文章来源于DevicePlus.com英语网站的翻译稿。

您是否知道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

您的浏览器将加载出如下所示的页面。

poYBAGPzHSaACuVOAAE0JHwvPng829.png

恭喜您拥有了一个Web服务器!

这很容易,对不对?
想要处理静态内容,您只需要完成一个简单的设置:每次页面在浏览器中加载时显示的内容都完全相同,直到您自己对文件进行编辑为止。
那么让我们来对其中的一个文件进行编辑,输入:
sudo nano /var/www/html/index.html

向下滚动文件,直到找到“Apache2 Debian Default Page(Apache2 Debian默认页面)”行,然后将其更改为任何您喜欢的新的标题。保存文件,然后在浏览器中重新加载页面。

poYBAGPzHSqAW9ftAAE4NY1gE4c669.png

静态网站速度快,维护简单,并且提供了许多可尝试的内容。对于简单的博客、商业网站或者信息网站,这也许可以满足您的所有需求。只需要将您的网站部署到目录/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函数呈现出如下内容:

pYYBAGPzHSyAMUjqAAEvVmdBboo097.png

接下来您要做什么?

接下来要做的工作取决于您自己。
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更简单、轻量。
我们到现在为止的探索只是触及了表面。请继续享受这一过程,看看下一步会有什么发现。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Web
    Web
    +关注

    关注

    2

    文章

    1238

    浏览量

    68484
  • 服务器
    +关注

    关注

    12

    文章

    8129

    浏览量

    82564
  • Raspberry Pi
    +关注

    关注

    1

    文章

    552

    浏览量

    22055
收藏 人收藏

    评论

    相关推荐

     海外云服务器搭建pi节点详细步骤

     海外云服务器搭建pi节点简单吗?海外云服务器搭建pi节点步骤有哪些?小编为您整理发布海外云服务器搭建p
    的头像 发表于 02-21 10:16 263次阅读

    ESP8266可作为Web服务器吗?怎么实现?

    ESP8266可作为Web服务器吗怎么实现
    发表于 10-24 08:17

    Raspberry Pi 3 官方套件入门指南

    Raspberry Pi 3套件介绍Raspberry Pi 3套件安装Raspberry Pi
    发表于 10-09 07:53

    【树莓派Pi5】树莓派 Raspberry Pi 5 正式发布!

    这款 Pi 5从英国树莓派总部跨洋而来,作为树莓派的官方代理商,上海晶珩EDATEC荣幸地在首发时刻,率先揭开了 Pi 5 的神秘面纱: Raspberry Pi 5:瞩目新生!超越
    的头像 发表于 09-28 17:30 1036次阅读
    【树莓派<b class='flag-5'>Pi</b>5】树莓派 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 5 正式发布!

    基于单片机的Web服务器设计

    1.单片机Web服务器传输速度快、有成熟的。协议栈软件可以利用2.外围芯片少,成本低,开发速度快3.Web浏览广泛使用4.社会需求量大
    发表于 09-25 08:25

    使用Raspberry PI 4单板计算机构建Samba NAS服务器

    电子发烧友网站提供《使用Raspberry PI 4单板计算机构建Samba NAS服务器.zip》资料免费下载
    发表于 07-05 09:50 0次下载
    使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>PI</b> 4单板计算机构建Samba NAS<b class='flag-5'>服务器</b>

    使用Raspberry Pi和Arduino实现Web控制的LED动画

    电子发烧友网站提供《使用Raspberry Pi和Arduino实现Web控制的LED动画.zip》资料免费下载
    发表于 07-03 14:52 0次下载
    使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>和Arduino实现<b class='flag-5'>Web</b>控制的LED动画

    Web服务器开源分享

    电子发烧友网站提供《Web服务器开源分享.zip》资料免费下载
    发表于 06-25 15:55 0次下载
    <b class='flag-5'>Web</b><b class='flag-5'>服务器</b>开源分享

    如何将16x2 LCD与Raspberry pi4连接

    电子发烧友网站提供《如何将16x2 LCD与Raspberry pi4连接.zip》资料免费下载
    发表于 06-19 11:45 0次下载
    <b class='flag-5'>如何将</b>16x2 LCD与<b class='flag-5'>Raspberry</b> <b class='flag-5'>pi</b>4连接

    用作代理的单元是否也可以是信息中继到浏览的网络服务器

    Raspberry pi 上),但是我可以代理作为服务器访问,以信息放在我的 android 手机的访问浏览
    发表于 06-05 07:42

    使用ESP8266作为Web服务器如何将网页上传到SPIFFS?

    我希望这是一个宣布这个的好地方...... 我一直在使用 ESP8266 作为 Web 服务器,因此必须一直将我的网页上传到 SPIFFS。 我曾经使用 Arduino IDE 和 SPIFFS
    发表于 05-23 08:49

    如何将.txt 大文件发送到HTTP服务器

    我在 SPIFFS 闪存中创建了多个 .txt 文件系统。但是如何将 .txt 大文件发送到 HTTP 服务器,可以通过 ESP8266 12F SPIFFS 1MB 文件发送到上传 HTTP
    发表于 05-19 09:00

    如何将esp8266中继网络服务器草图与恒温网络服务器草图合并?

    家庭自动化 ESP8266 Web 服务器 %BUTTONPLACEHOLDER%
    发表于 05-15 07:49

    ESP8266如何将用作微型网络服务器

    我创建了一个公共网站,我将其托管在 ESP8266 上,以演示如何将用作微型网络服务器, 我通过创建反向代理并使用 Cloudflare 隐藏 IP 地址并防止 DDoS 来实现这一点攻击。我正在
    发表于 05-11 08:19

    如何将BMP180中的数据添加ESP8266中的Web服务器页面?

    我需要将 BMP180 中的数据添加到我的 ESP8266 中的 Web 服务器页面。 我该怎么做?
    发表于 05-10 12:02