用Raspberry Pi建立矢量瓦片服务器

首先

由于早上4点醒来,我尝试在树莓派上构建矢量瓦片服务器,大约花了2个半小时(包括中途的中断),一边写Qiita。在过去已经有关于使用树莓派搭建矢量瓦片服务器的文章。也许对我的记录并没有太多附加价值,但我将记录下2021年12月目前可用的方法,包括从一开始(在Micro SD卡上安装操作系统)尝试创建矢量瓦片服务器的结果。希望这篇文章对熟悉的人可能不太有用,但对于初学者或者那些想要尝试的人来说,希望对他们有所帮助。

在使用Raspberry Pi Imager将操作系统写入SD卡的时候,个人发现可以同时设置WiFi。由于可以通过同一WiFi网络从连接着的电脑通过ssh进行操作,所以完全不需要连接电视或键盘。

由于向量瓦片的日历也是空闲的,所以我会发帖。非常抱歉连续发布这么多帖子,我会注意在生产、托管、优化和消费等不同领域撰写文章。

环境

    • 家のパソコン Windows 10 Home(Micro SDカードにOS書き込み 及び SSHでの接続に利用)

 

    • Raspberry Pi 3B

 

    Micro SD カード(SDXC、 64GB、UHS-I C10、 U3、V30で $8 くらい)

进行步骤

步骤1:安装Raspberry Pi的操作系统

将Micro SD卡插入电脑,使用从Raspberry Pi OS页面下载的Raspberry Pi Imager (v1.6.2)软件来准备操作系统。以下是写入设置:

    • OS: Raspberry Pi OS (32-BIT)

 

    • 対象: SDXC Card

対象のドライブを間違えないようによく注意しましょう!

Writeボタンを押す前に ctrl + shift + x で、設定を調整できます。

ホストネーム(とパスワード)、SSHの許可、wifiの設定をやりました。この段階でwifiとsshが出来て便利でした。(前回はRaspberry Pi 起動後に画面につないで各種の調整をしていましたが、ずいぶん楽になるように思います。)

2021-12-08-raspberrypi-03.png

在结束之后,Windows询问是否要格式化磁盘,但我没有做任何操作就取出了SD卡。

步骤2: 开启树莓派

打开电源

IMG_20211208_050338177.jpg

SSH连接

由于在之前的步骤中(将操作系统写入MicroSD卡),我已经进行了SSH和Wifi的设置,所以这次我将相信这些设置,并尝试在没有LAN电缆连接、显示器或键盘连接的情况下进行操作。我尝试通过Windows PC的PowerShell,使用ssh命令并指定主机名来访问。

2021-12-08-raspberrypi-04.png

操作系统更新

接下来,我们需要更新Raspberry Pi的操作系统。

 sudo apt update
 sudo apt upgrade

稍等一下,操作系统已经更新了。我检查了/etc/debian_version,发现已经更新至11.1版本。因为它是2021年10月发布的版本,所以是最新的。

是否增加交换文件(此次暂不增加)

由于3B计算机的内存为1GB,所以这次没有更改交换文件的设置(/etc/dphys-swapfile)。如果以后感觉工作速度变慢,我会尝试调整这个地方。

步骤3:安装矢量瓦片相关工具

继续进行第二步,现在我们将安装矢量瓦片相关工具。UNVT提供了适用于树莓派的UNVT工具的安装程序(在这里unvt/equinox)。如果您想要执行矢量瓦片的生产以及其他全部操作,使用这个工具将会很简单。在这种情况下,请按照以下步骤进行试试看。

curl -sL https://unvt.github.io/equinox/install.sh | bash -

由于在我的情况下,我不会使用树莓派来生产矢量瓦片,所以我打算卸载Tippecanoe并安装以下工具。

curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -    
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update
sudo apt install -y autoconf automake cmake code git libsqlite3-dev libtool raspberrypi-kernel-headers nodejs parallel pdal python-gdal ruby sqlite3 tmux unar xrdp yarn zip 
sudo service xrdp restart
sudo yarn global add browserify pm2 rollup
git clone https://github.com/ubukawa/server-test-01
cd server-test-01; npm install; cd ..

正好最近我在刚创建的仓库(ubukawa/server-test-01)中放入了安装程序,因此我将按照以下步骤进行执行(通过第一行进行确认,第二行进行实施)。

curl -sL https://ubukawa.github.io/server-test-01/install.sh
curl -sL https://ubukawa.github.io/server-test-01/install.sh | bash -
2021-12-08-raspberrypi-05.png

另外,最近我也方便地使用UNVT的样式工具unvt/charites,并使用sudo npm install -g @unvt/charites命令进行安装。我应该也把它安装到我的安装程序中(已安装在equinox中)。

由于安装了NodeJS,现在可以搭建矢量切片服务器。在这里,我们将使用NodeJS进行后续操作。因为它轻巧简单,我觉得它也适用于树莓派。
(如果您想搭建Nginx服务器等,欢迎尝试并告知您的经验!)

第四步:地图托管测试

在第三步骤中,我们从ubukawa/server-test-01存储库中安装工具,因此我认为已经创建了一个名为server-test-01的文件夹。在这个文件夹中,有一个用于设置示例数据和搭建nodejs托管服务器的脚本,我们将使用它来进行简单的托管测试(如果没有这个文件夹,请使用git clone命令来复制这个存储库)。
此外,关于如何编写这个nodejs脚本的方法,我们已经在这篇文章中总结了“在nodejs中创建矢量瓦片服务器(通过mbtiles传输pbf文件)”,如果您有兴趣,可以去看一下。
关于如何搭建nodejs服务器的详细步骤将在上一篇文章中介绍,但是在下文中,我们将尝试在树莓派上运行矢量瓦片服务器。

cd server-test-01
npm install
node app.js
2021-12-08-raspberrypi-06.png
2021-12-08-raspberrypi-07.png
2021-12-08-raspberrypi-08.png

今天的实验到此结束。
使用Ctrl+C停止通过Node.js进行的主机服务,然后使用sudo shutdown -h now指令关闭树莓派。

总结

我简单地确认了一下工作,从将数据写入Micro SD开始,确认了能够在树莓派上创建一个简单的矢量切片托管服务器。

我计划在今后的测试中,将大体积的mbtiles数据保存到USB存储器中,并从那里开始传送pbf瓦片。

这个备忘录可能会在未来需要时被翻译成英文,并用于向同事传授技术知识。 (如果发生这种情况的话…)

请提供以下信息的参考。

    • SD Card for Raspbery Pi: https://www.raspberrypi.com/documentation/computers/getting-started.html#sd-cards

Raspberry Pi OS: https://www.raspberrypi.com/software/

Raspberry Pi Zero W をベクトルタイルサーバにするまで: https://qiita.com/hfu/items/e3c2c0a5d63189c4d0dc

nodejsでベクトルタイルサーバーを作る(mbtilesからpbfを配信する): https://qiita.com/T-ubu/items/545d9f995ef7496a2ec4

广告
将在 10 秒后关闭
bannerAds