在 Raspberry Pi 4 上安装 64-bit MongoDB Server 服务

啊,算是这个大坑的最后一篇了吧

前一篇是关于编译的,在 Raspberry Pi 4 上安装 64-bit MongoDB Server 服务

那么在编译完之后,就是安装这个服务了~由于编译时绝大部分是静态链接的,因此上一篇编译出来之后,MongoDB Server r4.2.1 的体积在 2.2GB 左右,emmmmm,有点大。。总之,因为几乎都是静态链接,所以可以做个清洁安装~

首先把编译好的 build/opt/mongo/mongod 复制到电脑上,然后那那张 MicroSD 卡(或者另一张都行)重刷一下 Raspbian 系统,这里可以参考另一篇博客:Setup the Raspberry Pi 4

重刷完 Raspbian 之后,SSH 到树莓派上,新的 Raspbian 系统已经自带 64-bit 的 kernel8.img 了,所以可以直接在 /boot/config.txt 里加上

arm_64bit=1

然后关掉树莓派,顺便把刚才复制到电脑上的 mongod 放进 MicroSD 卡里,可以放到 rootfs/home/pi 下面~

接着把 MicroSD 卡插回树莓派,开机就可以有 64-bit 的内核了,接下来就是准备给 MongoDB Server 创建一个 chroot 环境了

就可以有 64-bit 的内核了,接下来就是准备给 MongoDB Server 创建一个 chroot 环境了

sudo apt install -y debootstrap schroot apt-transport-https

cat << EOF | sudo tee /etc/schroot/chroot.d/mongod
[mongod]
description=MongoDB Server arm64
type=directory
directory=/srv/chroot/mongod
users=pi
root-groups=root
profile=desktop
personality=linux
preserve-environment=true
EOF

sudo debootstrap --arch arm64 buster /srv/chroot/mongod https://mirrors.tuna.tsinghua.edu.cn/debian

唯一没有静态链接的是 libcurlopenssl,因此需要在这个 chroot 环境中安装一下~

sudo schroot -c mongod -- apt install -y libcurl4-openssl-dev

随后给 MongoDB Server 创建数据库的目录,并且设置好读写权限

sudo schroot -c mongod -- mkdir -p /data/db
sudo schroot -c mongod -- chown pi:pi /data/db
sudo schroot -c mongod -- chmod 755 /data/db

接着把编译好的 mongod 复制到 chroot 的环境里,并且赋予可执行权限

sudo mv ~/mongod /srv/chroot/mongod/usr/local/bin/
sudo schroot -c mongod -- chmod +x /usr/local/bin/mongod

最后就是设置一下 systemd 的服务,让 MongoDB Server 每次可以随树莓派开机自动启动~

先创建一个对应的 service 文件

cat << EOF | sudo tee /etc/systemd/system/mongod.service
[Unit]
Description=MongoDB Server (arm64) 
After=network.target
 
[Service]
ExecStart=/usr/bin/schroot -c mongod -- mongod --bind_ip=0.0.0.0
Restart=always
User=pi
Type=exec
 
[Install]
WantedBy=multi-user.target
EOF

然后启动它就可以啦~

sudo systemctl enable mongod.service
sudo service mongod start

可以使用如下命令来查看服务状态

sudo service mongod status

Leave a Reply

Your email address will not be published. Required fields are marked *

fifteen − 11 =