跳转到内容

维基少年:树莓派/树莓派网页服务器和 HTML 教程

来自维基教科书,开放的书,为了开放的世界

教程作者:Andrew Oakley
公有领域 2017 年 1 月 28 日
www.cotswoldjam.org

使用树莓派菜单 - 附件 - 终端启动终端。

我们将安装一个网页服务器。服务器是一个可以供其他人连接的程序。

普通用户 pi 没有安装软件的权限,所以我们使用 sudo 命令临时切换到超级用户(也称为 root 用户)。输入

sudo apt update
sudo apt upgrade

update 命令获取最新的软件列表。upgrade 命令安装任何过时的软件的新版本。如果你的互联网连接速度很慢,upgrade 可能需要很长时间。你可能会被要求通过按下 Y↵ Enter 来确认。现在让我们安装 Apache 网页服务器,这是 Linux 上最常用的网页服务器。

sudo apt install apache2

你会看到这要求安装 apache2 以及其他一些程序。这些被称为“依赖项” - 它们是 apache2 正常工作所需的程序。

Apache 安装完成后,启动你的网页浏览器。在树莓派 2 或 3 上,你可以使用 Pi 菜单 - 互联网 - Chromium 网页浏览器。

如果你是使用更老的树莓派 1 或树莓派 Zero,选择 Pi 菜单 - 运行 - 然后输入 epiphany 并按下 ↵ Enter。Epiphany 是一个更简单的浏览器,适用于速度较慢的电脑。

在网页浏览器的地址栏中,输入 localhost 并按下 ↵ Enter

你应该看到 Apache2 默认页面。localhost 始终指的是你正在使用的电脑。所以如果有人在他们的树莓派上输入它,它将指的是他们的树莓派,而不是你的。

回到终端并输入

hostname

它将告诉你你的电脑名称。这可能是 raspberrypi,或者有人可能为你定制了它,例如 rpi-ab12。现在回到你的网页浏览器,并输入

hostname.local

… 其中 hostname 是你的电脑名称。你必须在 Linux 电脑上输入 .local。在 Microsoft Windows 上,你会使用 .lan 代替:hostname.lan

假设你没有与同一个网络上的其他人使用相同的 hostname(通常“你的网络”意味着“你的建筑物”),那么这应该只找到你的电脑。这被称为 Zeroconf,也称为 Avahi 或 Bonjour。一些电脑不支持 Zeroconf,因此你可以找到你的 IP 地址

hostname -I

(注意大写字母 i) 你的 IP 地址将看起来像四组数字,例如 192.168.0.42。现在尝试在网页浏览器中浏览到你的 IP 地址。

使用 HTML5 创建你自己的网页

[编辑 | 编辑源代码]

回到终端,输入

cd /var/www/html
ls -lh

/var/www/html 是网页存放的地方。你应该看到 index.html。我们将把它重命名为 -old(为了保留一份副本,以防万一)并创建一个我们自己的新 index.html。

sudo mv index.html index-old.html
sudo leafpad index.html

一个文本编辑器程序应该会弹出,其中包含一个空白页面。开始输入

<html>
<head>
<title>My first web page</title>
</head>
<body>
<p>
Hello world
<p>
My name is Andrew
</body>
</html>

将 Andrew 更改为你的名字,并使用文件菜单 - 保存保存页面。

使用地址栏附近的重新加载按钮或按下 F5 键重新加载网页浏览器。

这段代码做了什么?

[编辑 | 编辑源代码]

<html> 告诉浏览器这是网页的开始;</html> 是结束
<head> 表示这是页眉的开始,标题放在这里;</head> 是结束
<body> 是网页文本的开始;</body> 是结束
<p> 是一个新段落的开始;在 HTML5 中,结束标签 </p> 是可选的

index.html 是一个特殊的文件名,如果你没有指定一个特定的网页,它就会被加载。所以 https://127.0.0.1https://127.0.0.1/index.html 相同

在“My name is Andrew”下,现在输入

<p>
<a href="pet.html">My favourite pet</a>

不要忘记文件 - 保存,然后重新加载浏览器。

<a> 是一个指向另一个网页(或网页浏览器中的任何文件)的链接。href(超文本引用)可以是“相对的”,例如 pets.html - 这将变为 http://hostname.local/pets.html,因为 pets.html 与 index.html 在同一个文件夹中。

要链接到其他电脑上其他文件夹中的网页,你可以使用一个“绝对”地址,例如:http://www.bbc.co.uk/news/technology-37305200

使用右上角的 X 关闭 Leafpad。我们将添加一张照片。让我们列出这些照片(如果你没有使用 Cotswold Jam 预装的 SD 卡,你需要找到自己的照片)

ls -lh /home/pi/Pictures/pets
cat.jpgdog.jpgguineapig.jpghamster.jpg

选择一个宠物(猫、狗、豚鼠、仓鼠)并将图片复制到网页服务器目录

sudo cp /home/pi/Pictures/pets/cat.jpg /var/www/html

使用以下命令创建一个新的网页

sudo leafpad pet.html
<html><head>
<title>My favourite pet</title>
</head><body>
<p>
My favourite pet is:
<p>
<img src="cat.jpg">
</body></html>

重新加载浏览器并点击“My favourite pet link”链接。你可以使用后退按钮返回到索引页面。

现在尝试浏览其他同学的网站。你需要知道他们的 hostname 或 IP 地址。例如 http://rpi-12ab.local 或 http://192.168.0.123

如果你的 hostname 是 raspberrypi(默认值),那么它可能会与其他同名电脑冲突。你可以通过转到 Pi 菜单 - 首选项 - 树莓派配置并更改 hostname 来更改它。完成后,你会被提示重启你的电脑。

如果你想卸载 Apache

sudo apt remove apache2 && sudo apt-get -y autoremove

高级练习

[编辑 | 编辑源代码]

为你的网页创建 CSS 文件

[编辑 | 编辑源代码]

层叠样式表(CSS)是网站用来更改每个网页上的内容外观的文件。

index.html 文件一样创建 styles.css 文件。

sudo leafpad styles.css

输入以下 CSS 来更改 <p> 标签。

p {
   font-weight: bold;
   font-size: 16px;
}

现在将 CSS 文件添加到 HTML 文件中,以便网页浏览器知道使用它。

<html><head>
<link rel="stylesheet" href="styles.css">
<title>My favourite pet</title>
</head><body>
<p>
My favourite pet is:
<p>
<img src="cat.jpg">
</body></html>

只需使用标签本身的名称,这将改变标签的所有使用方式。CSS 使用类,它可以用于特定标签。在 styles.css 文件中输入以下内容以添加一个类

p.pet {
   font-weight: bold;
   font-size: 16px;
}

然后将类声明到 <p> 标签。

<html><head>
<link rel="stylesheet" href="styles.css">
<title>My favourite pet</title>
</head><body>
<p class="pet">
My favourite pet is:
<p>
<img src="cat.jpg">
</body></html>

你可以尝试使用其他 CSS 属性来为你的网页设置样式,例如:

  • font-style: italic; 使字体变为 *斜体*。
  • margin 在标签周围添加边距,以便将其与页面上的其他元素分隔开来。单独使用 margin 会在标签的四边都添加边距。
  • color: #F00 将文本颜色更改为红色。
  • background-color: #000 将网页的背景颜色更改为黑色。

你可以参考下面的颜色表或进行谷歌搜索来找到你喜欢的颜色。CSS 支持 RGB、HSL 和十六进制颜色标准,但十六进制颜色标准是首选,因为它最为简洁。

颜色十六进制RGBHSL
黑色#0000, 0, 00, 0, 0
红色#F00255, 0, 00, 0, 0
绿色#0F00, 255, 00, 0, 0
蓝色#00F0, 0, 2550, 0, 0
青色#0FF0, 255, 2550, 0, 0
黄色#FF0255, 255, 00, 0, 0
洋红色#F0F255, 0, 2550, 0, 0
白色#FFF255, 255, 255255, 255, 255

什么是十六进制?

[编辑 | 编辑源代码]

数值基数是用于计数的单个数字的数量。在日常数学中,我们使用 **十进制(基数 10)**,即数字 0、1、2、3、4、5、6、7、8 和 9。

计算机基于 **二进制(基数 2)**,它使用单个数字 0 和 1。这意味着它们不会像我们一样进行计数或执行计算。

**十六进制(基数 16)** 是写二进制的一种简化方法,它可以避免我们写很多零!就像二进制是数字 0 和 1 一样,十六进制是数字 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E 和 F。

例如:十进制 255 = 二进制 11111111 = 十六进制 FF

每一位二进制数在每列都加倍。因此 1+2+4+8+16+32+64+128 = 255

十进制(基数 10)2561286432168421
二进制(基数 2)011111111
十六进制(基数 16)0FF

更多信息:https://www.mathsisfun.com/numbers/bases.html

公共 IP 地址

[编辑 | 编辑源代码]

要使你的网站对网络之外的人可见(例如,在其他建筑物、其他城镇或其他国家),你需要一个公共 IP 地址。阅读你路由器的使用手册,了解如何为端口 80 设置端口转发。你可以通过在谷歌搜索“我的 IP 地址是什么”来找到你的公共 IP 地址。

你的公共 IP 地址可能会发生变化;向你的互联网服务提供商咨询静态公共 IP 地址。然后,你可以购买一个域名,并将它与你的静态公共 IP 地址关联。对于一些英国 ISP,你可能已经拥有一个子域名,例如 Plusnet 为每个客户提供 accountname.plus.com。

停止和启动服务器程序

[编辑 | 编辑源代码]

在终端中

sudo systemctl stop apache2

在浏览器中重新加载 **localhost**。注意错误消息 - web 服务器已停止。

sudo systemctl status apache2

显示“Active: inactive (dead)” – 它没有运行。

sudo systemctl start apache2

重新加载 浏览器。它再次工作。

sudo systemctl status apache2

显示“Active: active (running)”

sudo systemctl status bing-bong-bop

显示“Loaded: not-found”。这意味着 bing-bong-pop 不存在,没有安装,或者你拼错了。当然它不存在,我只是把它举个例子。

控制自动启动

[编辑 | 编辑源代码]

使用 Pi 菜单 - 关机... - 重启来重启机器。

机器重启后,浏览到 **localhost**。注意 web 服务器是如何在启动时自动启动的。从终端

sudo systemctl disable apache2

再次重启,并在重启后尝试浏览到 **localhost**。你会收到一条错误消息 - web 服务器在你重启时没有自动启动。

你可以使用以下命令手动启动它:

sudo systemctl start apache2

或者你可以重新启用它,使其在每次重启时自动启动:

sudo systemctl enable apache2

删除已安装的程序

[编辑 | 编辑源代码]
sudo apt remove apache2
sudo apt-get autoremove

还记得那些“依赖项”吗?它们是 Apache 需要安装的额外程序,以便 Apache 能够正常运行?我们在卸载 Apache 后使用 **autoremove** 指令来卸载它们。

更新和安装其他程序

[编辑 | 编辑源代码]
sudo apt update
sudo apt upgrade

…获取你已经拥有软件的最新版本。

你可以在以下网站找到要安装的其他软件包的名称和描述:**http://www.raspberryconnect.com/raspbian-packages-list**

完成 apt update 后,你可以使用以下命令安装新软件:

sudo apt install packagename

…其中 packagename 是你要安装的软件的名称。

注意任何要求安装大量其他软件包的东西。了解如何备份你的 SD 卡,例如使用 Windows 笔记本电脑上的 Win32DiskImager。

本教程的原始 PDF 文件可在维基共享资源上找到。

华夏公益教科书