qhxin

在树莓派上安装 Node.js 的指引 | thisDaveJ

qhxin · 2016-12-19翻译 · 962阅读 原文链接

这篇文章已经更新了,包涵了 Node 最近一个版本的安装,在写这篇文章的时候是 Node 7.x。

在我们这批LTM(Learning through Making)Node.js系列教程,我们将在树莓派3或者2上准备和运行 Node。在树莓派3上,你不需要购买独立的USB Wi-Fi适配器。我专注于树莓派3和2,而不是老版本的诸如树莓派B+,因为在写这篇文章时它们是最新的型号。在树莓派3,举个例子来说,它有一个 1.2GHz 的四核 ARMv8 芯片和 1GB 的内存,相比起来,树莓派1的B+型号只有 700MHz 的单核 ARMv6 芯片以及 512MB 的内存。

这里提供的介绍是为在树莓派3(ARMv8)或者树莓派2(ARMv7)上安装 Node.js 准备的而不是其它的基于 ARMv6 芯片的型号,诸如树莓派1的B型号、B+型号或者树莓派0。这个安装指南的大部分应该仍然被证明对除了派2和派3以外的其它树莓派系统是有用的;然而,最后的步骤重点在于它不会在基于老 ARMv6 架构的系统上工作。

本教程对于任何希望成功安装树莓派2或3系统的人都是有用的,即使他们对于 Node.js 并不感兴趣,因为 Node.js 的安装发生在本教程的最后一步。但是,为什么你不想安装 Node.js呢?让我们开始吧!

内容目录

树莓派 需要的硬件

如果你现在没有树莓派,最简单的方法是购买一个入门套件,如亚马逊上的这一个:

我们需要以下项目来作为开始:

  • 树莓派3的型号B或者树莓派2的型号B(这些都是树莓派3和2的官方的名字。不要让“B”混淆你,因为还有一个老的树莓派型号B,现在实际上是“树莓派1型号B”。)

  • MicroSD卡(我推荐一个 CLASS10 的卡,它是 16 GB 或更高。我喜欢这个三星 32GB Class 10 microSD card。)

  • MicroSD 转 SD 存储卡适配器(因此,你可以使用 SD 读卡器在你的笔记本/桌面电脑写入 MicroSD 卡。如下所示,有许多的 microSD 卡供应商在购买的时候包含SD适配器。)

SD 卡适配器

  • 微型 USB 电源(推荐 2.5A 或者更大)为 RasPi 供电。

  • (仅在 RasPi 2 需要)USB WiFi 网卡(或优先以太网电缆的。我已经在树莓派上测试过这个Edimax USB WiFi 网卡,并且它工作得非常好。这是一个它在亚马逊畅销的原因。)在树莓派3上因为有内置 Wi-Fi 所以不需要它。

  • Windows 笔记本电脑/台式机(Linux 或者 Mac 也能极好的工作,但是本教程面向Windows机器,所以一些读者将需要调整)

  • HDMI显示器、USB键盘/鼠标(你可以从另一个系统暂时借用这些设备,然后运行你的 RasPi 在无外设模式,稍后我会解释。)

一旦你收集所需的硬件,我们准备好了让我们的 RasPi 苏醒了!

将 Raspbian 镜像写入 SD 卡

我们将运行 Raspbian,这是一个基于 Debian Linux 的免费操作系统并且为树莓派做了优化。 让我们开始吧:

  • https://www.raspberrypi.org/downloads/raspbian/ 下载最新的 Raspbian 镜像。请下载完整版本,而不是“精简”版。下载的是一个ZIP文件,约1.5 GB,所以它可能需要一些时间下载,这取决于你的互联网连接速度。

  • 插入microSD卡到SD适配器,就像在上面的三星示例图片所示的那样。

  • 将 SD 卡适配器插到笔记本电脑/桌面电脑的 SD读卡器。确保它很好的连接固定了。

  • 启动Windows资源管理器,并验证SD卡作为驱动器在您的系统上注册。请注意驱动器盘符,因为你很快将需要它。

  • 下载并安装 Etcher。Etcher是一个跨平台(Windows,OS X,Linux)的闪存镜像到SD卡的工具。它有许多很棒的功能,包括一个简单的用户界面、闪存镜像而不需要解压zip文件的能力、以及一个验证步骤用于验证SD卡镜像是否正确写入SD卡。

  • (对于 Windows 用户来说有一个可供替代的选择,你可以使用 Win32 磁盘镜像,因为它也提供了读取SD卡、并创建一个镜像文件的能力,这对于创建树莓派系统的快照是很方便的,如果需要的话,这个快照也可以被闪存回SD卡。对于Win32 磁盘镜像,你需要在往你的正确的SD卡盘符烧写.img文件之前,先解压这个下载的zip文件)

  • 启动 Etcher。要有耐心,Etcher 需要数秒启动。启动后,界面看起来像这样:

etcher

  • 点击 Select image(选择镜像)按钮,找到你下载的 Raspbian 的 zip 文件。(在烧写之前不需要解压。)

  • 点击 Select drive(选择驱动器)按钮,指定 SD 卡的目标设备位置。

警告:请确定你选择了正确的目标设备,否则你会将镜像写入到你系统的另一个驱动器,这将是不妙的。

  • 点击 Flash 按钮,将镜像写到 SD 卡上。

  • 如果你正在运行Windows,可能会出现有关更改设备的安全提示。如果是这样的话,请单击“Yes”继续进行。

  • 当镜像被写入SD卡和通过验证之后,Etcher会自动卸载你的SD卡,它可以安全地被移除。

  • 从你的笔记本电脑/台式机取出SD适配器,并从SD适配器移除microSD卡。

准备硬件

Tech Brick Café有一个很好的树莓派2各部分的概览图在这里(树莓派3看起来非常相似),这可能会在这一部分内容里帮助你。让我们这个小小的SBC(single board computer)准备启动!这里是步骤:

  • 插入microSD卡到树莓派。(把树莓派颠倒。microSD卡槽位于USB端口对面那一侧。这个短视频很好地解释了这个过程。)

  • 连接USB键盘和鼠标

  • 连接HDMI线

  • 连接USB Wi-Fi适配器(或以太网连接,如果你不使用Wi-Fi),如果你使用的是树莓派3,这一步是没有必要的,有内置Wi-Fi。

  • 接通电源(你会看到树莓派灯亮并通电了。)

  • 你现在应该看到树莓派在屏幕上启动。万岁!

配置树莓派

我们首先需要做一些 RasPi 的改动,为的是为我们的使用进行优化和个性化。开始,启动树莓派配置程序,它位于Preferences下面的菜单里。

RasPi configuration GUI

这将启动树莓派配置程序,这是基于控制台配置程序的一个方便的图形版本,这个控制台程序已经被使用多年用来配置树莓派(实际上,这个控制台程序仍然用于这个图形版本幕后使用)。这将启动以下窗口:

rcg1

让我们开始配置吧!

  • Expand Filesystem(扩展文件系统)——单击此按钮可扩展文件系统。这将确保所有的SD卡存储对 Raspbian 可用。

  • (可选)Change Password(更改密码)——从安全的角度,改变“pi”用户的默认密码是个好主意。只要确保你不忘记它。 😉

  • Hostname(主机名)——如果远程连接时你喜欢打更少的字(在后面有解释),您可以更改主机名称“raspberrypi”更短一些,如“raspi”。

本地化

树莓派是我们英国朋友的精彩创意。如果您不是来自英国,你将需要更改一些本地化设置。例如,键盘上的某些键可能无法按预期的方式工作。这是我在圣地亚哥做的一些改动,这让我的树莓派更加舒适:

首先,单击 Localisation 选项卡:

localization

点击 Set Locale 按钮,更改你的区域为适当的设置然后点击 OK。在更改设置后,我的看起来就像这样:

localization details

点击 Set Timezone 按钮,设置你的时区,然后点击 OK。

set timezone

点击 Set Keyboard 按钮,更改你的键盘为合适的设置,然后点击 OK。这是我的:

set keyboard

最后,点击 Set WiFi Country 按钮并按需要更改设置。这个对话框列出了大量的国家列表。用你的键盘上的箭头键滚动列表找到你的国家然后点击 OK。

wifi country

完成这些配置步骤后,点击 OK 退出树莓派配置程序。树莓派然后将通知你它需要重启以便激活你刚才的设置。现在重新启动它。

配置Wi-Fi

在树莓派重启后,我们已经准备和运行 Wi-Fi 以获得网络。

  • 点击屏幕右上方的网络图标,如截图所示。在Wi-Fi配置之前,网络图标将与截图中的图标不同;但是,它应该位于蓝牙图标和扬声器(音量控制)图标之间。

wifi

  • 在点击网络图标之后,选择你的网络SSID(Wi-Fi网络)。如果你没有看到你的Wi-Fi网络,请耐心等待。你可能会在菜单里看到一个“Scanning APs(扫描AP)”的消息;然而当它找出后,你的Wi-Fi网络SSID应该最终出现在菜单里。当你的网络的名称出现后,点击它。

  • 你将被提示输入你的预共享(Wi-Fi)网络密码。输入它然后选择 OK。

  • 等待图标从网络图标转换到上面截图里显示的Wi-Fi图标。从这一点判断,你应该已经连接上了你的Wi-Fi网络。

  • 通过启动终端测试您的Wi-Fi网络连接。

terminal

  • 从终端,发出ping命令,以验证您的网络连接正在工作:
    $ ping google.com

我们现在准备继续前进,确保我们的系统是最新的安全补丁

应用Raspbian的更新

我们将首先运行apt的“update”命令。此命令将不会实际更新系统上的任何软件,但将下载最新的软件包列表的软件库,这样 Raspbian 就可以可以随着依赖了解所有的新软件。在“$”提示下发出以下命令:

$ sudo apt update

接下来,运行以下命令来升级安装在您的系统上需要升级的任何包:

$ sudo apt full-upgrade

保持你的树莓派系统同步安全更新是很重要的。这两个命令应该一起发出并定期运行。

准备远程桌面

我们要远程运行我们的树莓派,无需专用的HDMI显示器和USB键盘/鼠标。这被称为无外设模式。我们将使用xrdp包来实现这一目标。新版本的Raspbian(从带有 PIXEL 桌面环境的版本开始)为远程连接功能装载有RealVNC。不幸的是,RealVNC不能很好地工作在无外设方式因为它降级到一个非常低的分辨率,而且改变分辨率有相当多的步骤。我们的xrdp方案自动缩放桌面分辨率,使我们的更容易使用。让我们这样做:

  • 我们可以安装xrdp之前,我们必须先安装tightvncserver包。tightvncserver的安装也将删除最新版本的Raspbian装载的RealVNC服务器软件,因为如果安装了RealVNC,tightvncserver(xrdp)不会工作。(感谢Ryan Hanley的提示!)在终端输入下面的命令:
    $ sudo apt install -y tightvncserver

“-y”选项将自动用“是”回答默认的问题,这是我们在这种情况下想要的。

  • 下一步,调用下面的命令来安装xrdp:
    $ sudo apt install -y xrdp
  • 最后,我们需要安装 samba 包,我们将能够从网络上的 Windows 机器通过主机名 raspi 访问树莓派,而不是通过IP地址,因为树莓派会通过 DHCP 改变它的 IP 地址。(对于OS X用户,你可以安装Bonjour然后访问你的树莓派的主机名。例如,如果你的主机名是“raspi”,你可以在OS X上以“raspi.local”访问它。)好了,让我们安装Samba:
    $ sudo apt install -y samba
  • 安装完成后,你应该可以从Windows机器上ping这个树莓派的主机名(上面树莓派配置程序里配置的那个):
    C:\> ping raspi
  • 现在你已准备好了启动远程桌面连接!

  • 在你的Windows机器上,点击Windows键,输入“Remote Desktop Connection”(远程桌面连接)调出远程桌面程序。点击它来启动它。(OS X用户可以使用Microsoft Remote Desktop,这在Mac应用商店是免费的。)

  • 在 Computer 文本框输入你的树莓派的主机名(在我的情况下是“raspi”)。

Windows Remote Desktop

  • 然后,点击 Display 标签。移动 Display configuration 滑块到右边的“Full Screen”来保证我们的远程桌面连接将填补我的屏幕。它有可能已经被设置为“Full Screen”。

Remote desktop display tab

  • 点击靠近对话框底部的 Connect 按钮。

  • 然后你将被xrdp的登录屏幕提示:

xrdpLogin

  • 输入您的凭据登录到树莓派。

  • 用户名:pi

  • 密码:raspberry(除非你在之前的教程里的树莓派配置程序里改变了它。)

太神了!我们远程连接到了 RasPi,我们不再需要专用的HDMI显示器和USB键盘/鼠标。让我们先关闭 RasPi 一分钟,这样我们可以释放我们的显示器和键盘/鼠标:

  • 启动一个终端会话并输入下面的命令来关闭您的系统:
    $ sudo poweroff
  • 等待的 RasPi 完全断电。

  • 拔掉电源线,HDMI线,USB键盘和鼠标。

  • 把插头电源线接回来,RasPi 应该会重新启动,但没有那些多余的连线!

  • 给了 RasPi 一分钟左右开机之后,再次使用Windows远程桌面程序连接到它。

在RasPi创建 Windows 文件共享(可选)

我们可以在RasPi创建一个Windows文件共享,使我们能从Windows机器上直接复制文件到RasPi。这可以在许多情况下派上用场。对于OS X用户这也是有用的,因为你将能够从“Shared”的Finder连接到您的树莓派文件共享。这是我们如何做的:

  • 启动一个终端会话。

  • 如下在主目录中创建一个名为“share”的目录:

    $ mkdir ~/share
  • 发出以下命令来启动Leafpad编辑器。
    $ sudo leafpad /etc/samba/smb.conf &
  • 我们也可以使用基于控制台的“nano”编辑器,但Leafpad提供一个GUI,比较适合初学者。在启动Leafpad的命令结尾的“&”符号让Leafpad成为后台进程,让我们回到终端shell提示符。同时,smb.conf 是我们之前安装的Samba软件包的一部分,这就是为什么它会存在在我们的系统里。

  • 向下滚动到smb.conf配置文件的底部并添加下面的配置:

    [PiShare]
     comment=Raspi Share
     path=/home/pi/share
     browseable=Yes
     writeable=Yes
     only guest=No
     create mask=0740
     directory mask=0750
     public=no
  • 保存smb.conf配置文件的修改并退出Leafpad编辑器。(Raspbian将自动重启基于您的配置文件所做的更改的SMB(Samba)服务。)

  • 回到终端会话,我们需要创建一个SMB(Samba)用户可以让我们安全地从Windows连接。我们将创建一个名为“pi”的用户,但这将是一个SMB(Windows用户)而不是Raspbian的“pi”的用户。这是我们如何做的:

    $ sudo smbpasswd -a pi

你会被提示输入并重新输入密码。将此密码记录在某处以备将来查阅。

我们已经准备好了从Windows连接到我们新创建的RasPi文件共享!

  • 回到你的Windows机器,键入Windows键和“R”(Win-R)启动输入命令的运行对话框。

  • 输入两个反斜杠后跟你的 RasPi 机器名(例如:你的主机名)并且敲下回车。例如:

    \\raspi
  • 提示凭据时,输入以下内容:

  • 用户名:以Windows语法输入的格式是域\用户名。对我们来说,我们的域是我们RasPi的主机名、用户名是“pi”。因此,我们将输入:raspi\pi

如果你的名字是不是raspi,你显然应该用你的替换它来输入。

  • 密码:(输入你上面用smbpasswd命令创建的密码)

  • 瞧!我们现在应该连接上了。双击 PiShare 文件夹启动你刚才创建的文件分享。你也会看到一个叫做pi的文件夹,它给你的整个主目录提供只读权限。

  • 你可以通过在Windows端创建一个文本文件,并验证它出现在 RasPi 端的目录 /home/pi/share 里,这样来测试你新创建的文件共享。

  • 在Windows中,还可以将驱动器映射到刚刚创建的文件共享:

  • 启动窗口资源管理器。

  • 点击在顶部带状菜单的 Map network drive (映射网络驱动器)按钮并选择映射到网络驱动器。

  • 输入驱动器盘符(比如“pi”驱动器的“P”盘符)、共享目录路径、并选择在登录时重新连接:

map drive

  • 输入上面你用smbpasswd命令创建的密码(如果被提示输入的话),选择 Remember my credentials(记住我的凭证):

map drive

  • 在通过窗口浏览器查看时,你现在应该能看到一个“P”驱动器(或者其他你选择的驱动器盘符)!

安装 Node.js

您现在有一个惊艳的通用树莓派系统,可用于各种任务,并在Windows世界中运行良好(它甚至和其他Windows机器看起来就像是一个Windows机器!)——而且也可以很好地在Mac和Linux世界里工作。让我们继续安装Node.js,我们将准备在未来做一些有趣的项目。这里是步骤:

我们在NodeSource的朋友主办并维护一些优秀的Node.js的二进制分发。我们将利用一个他们写的命令添加另一个包管理库到我们的RasPi,所以,我们可以从他们的仓库“apt install”一个现代版的Node.js。这是有益的因为Debian / Raspbian版本可能不会永远是最新的。通过添加 NodeSource 库,我们也将能够接收更新,而不是仅仅安装一个不容易升级的 Node 版本的独立的(.deb)文件。

注:如本文开头介绍的,最后这部分对Node.js安装相关的教程,要求基于新的ARMv7或ARMv8芯片诸如树莓派2和树莓派3的系统。NodeSource 提供 Node.js 的二进制文件给ARMv7+的架构,但不支持基于旧的ARMv6架构的树莓派系统,诸如树莓派B/B+型号,或者树莓派0。

仔细阅读你的树莓派电路板,确认写的是类似“Raspberry Pi 3 Model B”或者“Raspberry Pi 2 Model B”的东西。如果有疑问,在终端中运行以下命令:

> $ uname -m
>

如果返回的结果以“armv6”开头,你正在运行一个基于旧的ARMv6芯片的树莓派,并且后面的 Node.js 安装步骤不会成功;否则,你已经准备好了下一步。

这里我们来到了最后的时段!让我们继续进行安装 Node 的最新版本,Node 7.2.1。

$ curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -

前面的命令修改我们的Debian的apt包管理库引用NodeSource包。

注:从安全的角度来看知道你在系统上调用了什么命令通常是一个好想法,特别是因为上面的命令以root用户调用脚本。如果你希望知道这个脚本后面的技术细节,你可以在浏览器打开这个网址(https://deb.nodesource.com/setup_7.x),然后审查代码。这个脚本执行一些步骤以确定正在运行的Linux发行版,并指示Debian apt包管理系统添加NodeSource包仓库作为一个值得信赖的来源以获取Debian软件包。这让我们现在可以安装 Node.js 并且可以升级到最新版本的可用Node.js

现在,我们已经添加了 NodeSource 包仓库,我们可以继续安装Node.js了!

$ sudo apt install nodejs

然后我们可以测试和查看我们正在运行的 Node 版本,并且启动 Node 控制台,就像我们在前一篇文章里讨论的那样,作为一个快速测试,以确认安装成功。

$ node -v
v7.2.1
$ node
> 1 + 3
4
> # 我们可以敲两次 Ctrl-C 来退出控制台,返回 shell 提示符。

下一次

在以后的文章中,我们将利用npm(Node Package Manager,Node包管理器)社区的长处,建立一个简单的,但高可用的Web服务器,无需任何代码。这可以通过使用你刚刚在这里创建的树莓派系统,或在Windows/Linux/Mac机器上完成,正如我在一篇之前的文章中所概述的。希望再见到你!

相关文章