Raspberry Pi 向け Ubuntu 18.04 LTS (64ビット) を使用すると、Orion Context Broker を簡単に実行できます。
Raspberry Pi は、低価格のクレジット・カード・サイズのコンピュータです。 ARM ベースのデバイスで、ARM アーキテクチャ用にコンパイルされたバイナリが必要です。
本記事では、ARM architecture 用の Ubuntu 18.04 LTS (64ビット) を使い、Orion をビルドしてOS上で直接実行する方法を紹介します。Raspberry Pi にインストールされた Docker を使用し、Docker コンテナとして Orion を実行する方法は、こちらの記事を参照してください。
前提条件
ハードウェア
ターゲット・ハードウェアは、64 ビット ARM アーキテクチャ (aarch64) をサポートする Raspberry Pi 3 または 4 です。
Ubuntu 18.04 LTS
こちらからUbuntu 18.04 LTS の OS イメージを取得し、Raspbeery Pi にインストールしてください。
Orion のビルド
ライブラリの依存関係
Orion Context Brokerは、ビルドの依存関係として次のライブラリを使用します。
- boost: 1.65.1
- libmicrohttpd: 0.9.48 (ソースコードからビルド)
- libcurl: 7.58.0
- openssl: 1.0.2n
- libuuid: 2.31.1
- Mongo Driver: legacy-1.1.2 (ソースコードからビルド)
- rapidjson: 1.0.2 (ソースコードからビルド)
ビルドツールのインストール
コンパイラなどのビルドに必要なツールをインストールします。
1 |
sudo apt install build-essential cmake scons |
ライブラリのインストール
ビルドに必要なライブラリをインストールします。
1 2 |
sudo apt install libboost-dev libboost-regex-dev libboost-thread-dev libboost-filesystem-dev \ libcurl4-gnutls-dev gnutls-dev libgcrypt-dev libssl1.0-dev uuid-dev libsasl2-dev |
Mongo Driver のビルド
ソースコードから Mongo Driver をビルドし、インストールします。Mongo Driver 1.1.2 は gcc 4.x でコンパイルすることを想定した、レガシーなコードです。そのため、新しい gcc でビルドする場合、一部のウォーニングはエラーとして扱われます。このエラーを避けるために、-Wno-{option name} オプションを CCFLAGS に追加する必要があります。
1 2 3 4 5 6 7 |
wget https://github.com/mongodb/mongo-cxx-driver/archive/legacy-1.1.2.tar.gz tar xfvz legacy-1.1.2.tar.gz cd mongo-cxx-driver-legacy-1.1.2 # The build/linux2/normal/libmongoclient.a library is generated as outcome scons --use-sasl-client --ssl "CCFLAGS=-Wno-nonnull-compare -Wno-noexcept-type -Wno-format-truncation" # This puts .h files in /usr/local/include/mongo and libmongoclient.a in /usr/local/lib sudo scons install --prefix=/usr/local --use-sasl-client --ssl "CCFLAGS=-Wno-nonnull-compare -Wno-noexcept-type -Wno-format-truncation" |
rapidjson のビルド
ソースコードから rapidjson をビルドし、インストールします。
1 2 3 |
wget https://github.com/miloyip/rapidjson/archive/v1.0.2.tar.gz tar xfvz v1.0.2.tar.gz sudo mv rapidjson-1.0.2/include/rapidjson/ /usr/local/include |
libmicrohttpd のビルド
ソースコードから libmicrohttpd をビルドし、インストールします。
1 2 3 4 5 6 7 |
wget http://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-0.9.48.tar.gz tar xvf libmicrohttpd-0.9.48.tar.gz cd libmicrohttpd-0.9.48 ./configure --disable-messages --disable-postprocessor --disable-dauth make sudo make install sudo ldconfig |
Orion のビルド
ソースコードから Orion をビルドし、インストールします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
sudo apt install git git clone https://github.com/telefonicaid/fiware-orion cd fiware-orion make sudo make install strip /usr/bin/contextBroker sudo mkdir -p /var/log/contextBroker sudo mkdir -p /var/run/contextBroker sudo adduser --comment "orion" orion sudo chown orion /var/log/contextBroker sudo chown orion /var/run/contextBroker sudo mkdir /etc/sysconfig sudo cp /opt/fiware-orion/etc/config/contextBroker /etc/sysconfig/ sudo touch /var/log/contextBroker/contextBroker.log sudo chown orion /var/log/contextBroker/contextBroker.log sudo cp /opt/fiware-orion/rpm/SOURCES/etc/logrotate.d/logrotate-contextBroker-daily /etc/logrotate.d/ sudo cp /opt/fiware-orion/rpm/SOURCES/etc/sysconfig/logrotate-contextBroker-size /etc/sysconfig/ sudo cp /opt/fiware-orion/rpm/SOURCES/etc/cron.d/cron-logrotate-contextBroker-size /etc/cron.d/ sudo systemctl daemon-reload |
MongoDB のビルド
ソースコードから MongoDB 3.6.17 をビルドしてインストールします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# Build MongoDB sudo apt install build-essential cmake scons sudo apt install python python-pip pip install --upgrade pip cd /opt git clone -b r3.6.17 --depth=1 https://github.com/mongodb/mongo.git cd mongo pip install --user -r buildscripts/requirements.txt python buildscripts/scons.py mongo mongod mongos \ "CCFLAGS=-march=armv8-a+crc -Wno-nonnull-compare -Wno-format-truncation -Wno-noexcept-type" \ --wiredtiger=on \ --mmapv1=on # Install MongoDB strip -s mongo* sudo cp -a mongo mongod mongos /usr/bin/ sudo useradd -M -s /bin/false mongodb sudo mkdir /var/lib/mongodb /var/log/mongodb /var/run/mongodb sudo chown mongodb:mongodb /var/lib/mongodb /var/log/mongodb /var/run/mongodb sudo cp -a ./debian/mongod.conf /etc/ sudo cp -a ./debian/mongod.service /etc/systemd/system/ sudo systemctl start mongod |
Orion の実行方法
MongoDB と Orion を起動します。curl localhost:1026/version コマンドを実行して、 起動が成功したことを確認します。
1 2 |
sudo systemctl start mongod sudo systemctl start contextBroker.service |