在树莓派 Zero 上通过 Node.js 建立网站

本文记录在树莓派 Zero 安装 Node.js 并实现简单网站的步骤。

本文使用了:

  • 树莓派 Zero WH,其实 Zero 就可以,Wi-Fi 并没有用到
  • MacBook Pro(macOS Mojave),通过 USB/OTG 方式,ssh 操作树莓派 Zero

安装 Node.js#

nvm,失败的尝试#

树莓派 Zero 的硬件能力十分有限

  • CPU,BCM2835,单核心单线程,1Ghz,很容易过载
  • 内存,512M

因此,无法通过比如 nvm 的方式安装 Node.js,其实我这样尝试过,但没有完成

  • 编译过程很缓慢,CPU 持续过载
  • 从头天晚上到第二天早上,还没有编译完

因此放弃这种安装方式,即使成功了也不实用。

通过二进制文件安装#

步骤参照了:https://dev.to/vorillaz/install-nodejs-on-a-raspberry-pi-4hd5

目前 Node.js 已经是 v12.7.x,但是官方 Armv6L 的二进制文件还是 v10.16

下载:

1
curl -o node-v10.16.1-linux-armv6l.tar.gz https://nodejs.org/dist/latest-v10.x/node-v10.16.1-linux-armv6l.tar.gz

解压缩:

1
tar -xzf node-v10.16.1-linux-armv6l.tar.gz

安装:

1
sudo cp -r node-v10.16.1-linux-armv6l/\* /usr/local/

判断是否安装成功:

1
node -v

用 Node.js 创建简单的网站#

创建简单网站#

创建目录,mkdir ~/projects/website

初始化项目:

1
cd ~/projects/website && npm init

创建和编写网页:

1
vim ~/projects/website/src/index.html

默认没有安装 vim,可能需要安装它,sudo apt install vim -y

index.html 内容可以很简单:

1
2
3
4
5
6
7
8
<html>
<head>
<title>测试网站</title>
</head>
<body>
<h1>一个部署在zero上的网页</h1>
</body>
</html>

安装和运行 HTTP Server#

需要一个 http server,发布刚创建的网页。

这里选择: https://github.com/http-party/http-server

  • 基于 Node.js
  • 功能简单,启动方便

安装:

1
sudo npm install http-server -g

启动 http-server:

1
sudo http-server ~/projects/website/src/ -p 80

然后就可以在 USB/OTG 连接树莓派 Zero 的电脑上,打开浏览器访问了:http://zero.local/

用在何处#

目前考虑的是,创建这样一个 Web App

  • 用户第一次访问 http://zero.local/
    • 网页为 Wi-Fi 设置页面
    • 网页连接 Wi-Fi 成功后,引导用户登录(需要访问互联网)
  • 用户登录后,或者以后再次访问
    • 进入系统主页