个人 Web 服务器就是“云”, 只不过“云”的所有权和控制权在你手中,而不是大型公司手中。
拥有一个小型的云有很多好处,包括自定义、免费存储、免费互联网服务、进入开源软件的途径、高质量的安全性、对内容的完全控制、快速更改的能力、代码实验场所等等。 大部分好处是无法衡量的,但在经济上,这些好处每月可以为您节省 100 美元以上。

Raspberry Pi 作为 Web 服务器,作者:Raspberry Pi Guy,CC-BY-SA 4.0
我本可以使用 AWS,但我更喜欢完全的自由、对安全性的完全控制以及学习事物是如何构建的。
- 自建 Web 主机:无需 BlueHost 或 DreamHost
- 云存储:无需 Dropbox、Box、Google Drive、Microsoft Azure、iCloud 或 AWS
- 本地安全
- HTTPS:Let’s Encrypt
- 分析:Google
- OpenVPN:无需专用互联网访问(估计每月 7 美元)
我使用的东西
- Raspberry Pi 3 Model B
- MicroSD 卡(推荐 32GB,Raspberry Pi 兼容 SD 卡)
- USB microSD 卡读卡器
- 以太网线
- 连接到 Wi-Fi 的路由器
- Raspberry Pi 外壳
- Amazon Basics MicroUSB 数据线
- Apple 墙壁充电器
- USB 鼠标
- USB 键盘
- HDMI 数据线
- 显示器(带 HDMI 输入)
- MacBook Pro
步骤 1:设置 Raspberry Pi
下载最新版本的 Raspbian(Raspberry Pi 操作系统)。 Raspbian Jessie ZIP 版本是理想的选择 [1]。 解压缩或提取下载的文件。 将其复制到 SD 卡上。 Pi Filler 使此过程变得容易。 下载 Pi Filer 1.3 或最新版本。 解压缩或提取下载的文件并打开它。 您应该会看到此提示
确保尚未插入 USB 读卡器。 如果已插入,请弹出它。 点击“继续”继续。 应该会出现文件资源管理器。 从您的 Mac 或 PC 中找到未压缩的 Raspberry Pi OS 文件并选择它。 您应该会看到另一个类似下图的提示
将 MicroSD 卡(推荐 32GB,最低 16GB)插入 USB MicroSD 卡读卡器。 然后将 USB 读卡器插入 Mac 或 PC。 您可以将 SD 卡重命名为“Raspberry”以将其与其他 SD 卡区分开来。 点击“继续”。 确保 SD 卡为空。 Pi Filler 将在运行时擦除所有之前的存储。 如果您需要备份卡,请立即备份。 当您准备好继续时,Raspbian OS 将被写入 SD 卡。 这应该需要一到三分钟。 写入完成后,弹出 USB 读卡器,取出 SD 卡,然后将其插入 Raspberry Pi SD 卡插槽。 将电源线插入墙壁,为 Raspberry Pi 供电。 它应该开始启动。 Raspberry Pi 默认登录名是
用户名:pi
密码:raspberry
当 Raspberry Pi 首次完成启动时,应出现一个标题为“Setup Options(设置选项)”的配置屏幕,如下图所示 [2]
选择“Expand Filesystem(扩展文件系统)”选项并按 Enter 键 [3]。 此外,我建议选择第二个选项“Change User Password(更改用户密码)”。 这对于安全至关重要。 它还可以个性化您的 Raspberry Pi。
(注意:为了增加额外的安全层,请安装 fail2ban。 Fail2Ban 会阻止来自互联网的可疑请求。 例如,如果尝试猜测密码的次数过多,它将阻止该 IP 地址。 可以通过在终端中键入以下内容来安装它:$ sudo apt-get install fail2ban)
在设置选项列表中选择第三个选项“Enable Boot To Desktop/Scratch(启用启动到桌面/Scratch)”并按 Enter 键。 它将带您进入另一个标题为“Choose boot option(选择启动选项)”的窗口,如下图所示。
在“Choose boot option(选择启动选项)”窗口中,选择第二个选项“Desktop log in as user 'pi' at the graphical desktop(在图形桌面以用户 'pi' 身份登录桌面)”并按 Enter 按钮 [4]。 完成此操作后,您将返回“Setup Options(设置选项)”页面。 如果没有,请选择此窗口底部的“OK(确定)”按钮,您将返回到上一个窗口。
完成这两个步骤后,选择页面底部的“Finish(完成)”按钮,它应该会自动重启。 如果没有,请在终端中使用以下命令重启。
$ sudo reboot
从上一步重启后,如果一切顺利,您将最终进入类似于下图的桌面。
进入桌面后,打开终端并输入以下命令以更新 Raspberry Pi 的固件。
$ sudo apt-get update
$ sudo apt-get upgrade -y
$ sudo apt-get dist-upgrade -y
$ sudo rpi-update
这可能需要几分钟。 现在 Raspberry Pi 已更新并正在运行。
步骤 2:配置 Raspberry Pi
SSH,即安全外壳 (Secure Shell) 的缩写,是一种加密网络协议,可让您安全地在计算机和 Raspberry Pi 之间传输数据。 您可以使用 Mac 的命令行控制 Raspberry Pi,而无需显示器或键盘。
要使用 SSH,首先,您需要 Pi 的 IP 地址。 打开终端并输入
$ sudo ifconfig
如果您使用以太网,请查看“eth0”部分。 如果您使用 Wi-Fi,请查看“wlan0”部分。
找到“inet addr”,后跟一个 IP 地址——例如 192.168.1.115,这是本文中我将使用的常见默认 IP。
有了这个地址,打开终端并输入
$ ssh pi@192.168.1.115
有关 PC 上的 SSH,请参阅脚注 [5]。
出现提示时,输入默认密码“raspberry”,除非您已更改它。
您现在已通过 SSH 登录。
远程桌面
有时,使用 GUI(图形用户界面)比命令行更容易。 在 Raspberry Pi 的命令行(使用 SSH)中输入
$ sudo apt-get install xrdp
Xrdp 支持适用于 Mac 和 PC 的 Microsoft 远程桌面客户端。
在 Mac 上,导航到 App Store 并搜索“Microsoft Remote Desktop”。 下载它。(对于 PC,请参阅脚注 [6]。)
安装后,在您的 Mac 上搜索名为“Microsoft Remote Desktop”的程序。 打开它。 您应该会看到这个

图片来源:Raspberry Pi Guy,CC BY-SA 4.0
单击“New(新建)”以设置远程连接。 填写如下所示的空白。

图片来源:Raspberry Pi Guy,CC BY-SA 4.0
通过退出“New(新建)”窗口保存它。
您现在应该在“My Desktops(我的桌面)”下看到列出的远程连接。 双击它。
短暂加载后,您应该在屏幕上的窗口中看到您的 Raspberry Pi 桌面,它看起来像这样
完美。 现在,您无需单独的鼠标、键盘或显示器来控制 Pi。 这是一个更轻量级的设置。
静态本地 IP 地址
有时,本地 IP 地址 192.168.1.115 会更改。 我们需要使其成为静态 IP 地址。 输入
$ sudo ifconfig
从“eth0”部分或“wlan0”部分记下“inet addr”(Pi 的当前 IP)、“bcast”(广播 IP 范围)和“mask”(子网掩码地址)。 然后,输入
$ netstat -nr
记下“destination(目标地址)”和“gateway/network(网关/网络)”。
累积记录应如下所示
net address 192.168.1.115
bcast 192.168.1.255
mask 255.255.255.0
gateway 192.168.1.1
network 192.168.1.1
destination 192.168.1.0
有了这些信息,您可以轻松设置静态内部 IP。 输入
$ sudo nano /etc/dhcpcd.conf
不要使用 /etc/network/interfaces。
然后您需要做的就是将此附加到文件底部,替换为您想要的正确 IP 地址。
interface eth0
static ip_address=192.168.1.115
static routers=192.168.1.1
static domain_name_servers=192.168.1.1
设置静态内部 IP 地址后,使用以下命令重启 Raspberry Pi
$ sudo reboot
重启后,从终端输入
$ sudo ifconfig
您的新静态设置应该会出现在您的 Raspberry Pi 上。
静态全局 IP 地址
如果您的 ISP(互联网服务提供商)已经为您提供了静态外部 IP 地址,您可以跳到端口转发部分。 如果没有,请继续阅读。
您已经设置了 SSH、远程桌面和静态内部 IP 地址,因此现在本地网络内的计算机将知道在哪里找到 Pi。 但是您仍然无法从本地 Wi-Fi 网络外部访问您的 Raspberry Pi。 您需要使您的 Raspberry Pi 可以从互联网上的任何位置公开访问。 这需要一个静态外部 IP 地址 [7]。
最初这可能是一个敏感的过程。 致电您的 ISP 并请求静态外部(有时称为静态全局)IP 地址。 ISP 掌握决策权,因此我建议您非常谨慎地与他们打交道。 他们可能会拒绝您的静态外部 IP 地址请求。 如果他们这样做,您不能责怪 ISP,因为此类请求存在法律和运营风险。 他们尤其不希望客户运行中型或大型互联网服务。 他们可能会明确询问您为什么需要静态外部 IP 地址。 最好的做法可能是诚实地告诉他们您计划托管一个低流量的个人网站或类似的非营利性互联网服务。 如果一切顺利,他们应该会开一个工单,并在大约一两周后给您回电,告知您地址。
端口转发
您的 ISP 分配的这个新获得的静态全局 IP 地址用于访问路由器。 Raspberry Pi 仍然无法访问。 您需要设置端口转发才能专门访问 Raspberry Pi。
端口是信息在互联网上传输的虚拟通道。 您有时需要转发端口,以便使计算机(如 Raspberry Pi)可供互联网访问,因为它位于网络路由器后面。 VollmilchTV 制作的名为 What is TCP/IP, port, routing, intranet, firewall, Internet 的 YouTube 视频帮助我直观地理解了端口。
端口转发可用于 Raspberry Pi Web 服务器等项目,或 VoIP 或点对点下载等应用程序。 有 65,000 多个端口可供选择,因此您可以为构建的每个互联网应用程序分配不同的端口。
设置端口转发的方式可能取决于您的路由器。 如果您有 Linksys 路由器,Gabriel Ramirez 制作的名为 How to go online with your Apache Ubuntu server 的 YouTube 视频解释了如何设置它。 如果您没有 Linksys 路由器,请阅读路由器随附的文档,以便自定义和定义要转发的端口。
您需要为 SSH 以及远程桌面进行端口转发。
一旦您认为已配置端口转发,请通过键入以下内容来检查它是否正在工作(通过 SSH)
$ ssh pi@your_global_ip_address
它应该会提示您输入密码。
检查端口转发是否也适用于远程桌面。 打开 Microsoft 远程桌面。 您之前的远程连接设置应该已保存,但您需要使用静态外部 IP 地址(例如,195.198.227.116)而不是静态内部地址(例如,192.168.1.115)更新“PC name(PC 名称)”字段。
现在,尝试通过远程桌面连接。 它应该短暂加载并到达 Pi 的桌面。
做得好。 Raspberry Pi 现在可以从互联网访问,并为高级项目做好准备。
作为奖励选项,您可以维护与 Pi 的两个远程连接。 一个通过互联网,另一个通过 LAN(局域网)。 设置起来很容易。 在 Microsoft 远程桌面中,保留一个名为“Pi Internet”的远程连接,另一个名为“Pi Local”。 将 Pi Internet 的“PC name(PC 名称)”配置为静态外部 IP 地址,例如 195.198.227.116。 将 Pi Local 的“PC name(PC 名称)”配置为静态内部 IP 地址,例如 192.168.1.115。 现在,您可以选择全局或本地连接。
如果您还没有看过,请观看 Gabriel Ramirez 制作的 How to go online with your Apache Ubuntu server,作为进入项目 2 的过渡。 它将向您展示您项目背后的技术架构。 在我们的例子中,您使用的是 Raspberry Pi 而不是 Ubuntu 服务器。 动态 DNS 位于域名公司和您的路由器之间,Ramirez 省略了这一点。 除了这种细微之处,该视频在直观地解释系统如何工作方面非常到位。 您可能会注意到本教程涵盖了 Raspberry Pi 设置和端口转发,这是服务器端或后端。 有关更高级的项目,请参阅原始来源,这些项目涵盖了域名、动态 DNS、Jekyll(静态 HTML 生成器)和 Apache(Web 托管),这是客户端或前端。
脚注
[1] 我不建议从 NOOBS 操作系统开始。 我更喜欢从功能齐全的 Raspbian Jessie 操作系统开始。
[2] 如果“Setup Options(设置选项)”没有弹出,您可以随时通过打开终端并执行此命令来找到它
$ sudo-raspi-config
[3] 我们这样做是为了利用 SD 卡上作为完整分区的所有空间。 所有这些操作都是扩展操作系统以适应 SD 卡上的整个空间,然后可以用作 Raspberry Pi 的存储内存。
[4] 我们这样做是因为我们想启动到一个熟悉的桌面环境。 如果我们不执行此步骤,Raspberry Pi 每次都会启动到没有 GUI 的终端。
[5]
下载并运行 PuTTY 或其他适用于 Windows 的 SSH 客户端。 在字段中输入您的 IP 地址,如上面的屏幕截图所示。 将默认端口保持为 22。 按 Enter 键,PuTTY 将打开一个终端窗口,该窗口将提示您输入用户名和密码。 填写这些信息,然后开始在您的 Pi 上远程工作。
[6] 如果尚未安装,请下载 Microsoft 远程桌面。 在您的计算机上搜索 Microsoft 远程桌面。 运行它。 出现提示时输入 IP 地址。 接下来,将弹出一个 xrdp 窗口,提示您输入用户名和密码。
[7] 路由器具有动态分配的外部 IP 地址,因此理论上可以从互联网暂时访问它,但您需要 ISP 的帮助才能使其永久可访问。 如果不是这种情况,您每次使用都需要重新配置远程连接。
有关原始来源,请访问 Mitchell McLaughlin 的全栈计算机项目。
22 条评论