NGSI-LDにも挑戦

Menu



データ仕様の現状と課題
スマートシティの標準規格(案)
データモデルのユースケース
ツール


Column
Link
用語集

Coppell

Technologies

3. PCへのインストール


 この章では、PCにFiwareを動かし操作する環境を作ります。その過程で、Entityの格納などの操作をしますが、この章ではその操作の紹介は細かくは説明しません。「ああ、そんな感じなんだ」と理解してもらうのが目的ですので、まずは説明していないところはおまじないぐらいに思って読み飛ばしてください。4章以降で少しずつ種明かししていきます。
 尚、「Fiwareを使って都市OSを動かしてみよう」をお読みになった方は、本章は3.6節まで殆ど同じです。違うのは、v2とLDではDockerに持ってくるImageだけが違う点です。また、Dockerなどのインストールを既に実行済みでしたら、再度やり直す必要はありません。


3.1.実行環境の全体像
2022年8月10日
 一般的にFiwareを動かす場合、右図のようにLinuxというOS上で動かします。その際に、cUrlやBashなどの一般的なツールは既にインストールされており、はFiwareに命令を発行するなどの目的で利用できます。Mongo-DBはFiwareのデータを蓄積してくれる、データベースと呼ばれるミドルウェアです。
 しかし、本書の読者にはLinuxに詳しくない方もいらっしゃるでしょうし、Linuxを動かすサーバを用意するのも大変です。そこで本書では、本図のようにWindows環境でLinuxを動かし、その上にDocker、更にDockerの上でFiwareの核であるOrionと呼ばれるContext Broker(注)と、Entityを格納するデータベースであるMongo-DBを動かします。Context Brokerの機能については、おいおい説明します。また、Docker上のOrionなどに命令を発行するために、Windows上でcUrlを動かします。

注: Entityを仲介するので、Entity Brokerと言った方が実情とあっていると思いますが、なぜかContext Brokerと呼びます。一般にはデータ仲介機能や単にBrokerと呼ばれることの方が多いです。

3.2.環境要件の確認
2022年4月9日
 Windowsの環境をチェックします。以下の条件に当てはまる背祖であることが必要です。とは言っても、筆者は8年前に買った薄型のノートPCでも動きましたので、大抵は動くのかもしれません。
  • Windows 10または11 Enterprise、Pro、または Education
    Windows上で仮想環境を動かす必要がありますが、Homeエディションではこれが動作しません。Homeエディションの場合は、[設定]->[更新とセキュリティ]->[ライセンス認証] の順に移動して、Windows  Home Edition を Windows Pro にアップグレードしてください。
  • 第2レベルのアドレス変換 (SLAT) の 64 ビット プロセッサ
  • VM モニター モード拡張機能 (Intel CPU 上の VT-c) の CPU サポート。
  • 最小 4 GB のメモリ


3.3.WSLのインストール
2022年4月9日
 ますば、WSL (Windows Subsystem for Linux) 2 backendをインストールします 。WSLは、仮想化技術を使って、Windowsとは別にLinuxを動かすものです。WSLを紹介するサイトによっては、手作業で仮想環境を設定する必要があるとの記載がありますが、筆者の経験ではWSLのインストール時に仮想環境も有効化される様で、特にコマンドを打たなくてもインストールだけでWSLが動きました。WSLが動くとUbuntuというLinuxが起動されます。
 インストールはコマンドプロンプトかPowerShellで実施します。コマンドプロンプトの場合、まずコマンドプロンプトを起動する際にadministratorモードで起動します。右上の例のように、コマンドプロンプトは[スタート]->[Windowsシステムツール]で見つかりますが、コマンドプロンプトのアイコン上で右クリックし[その他]->[管理者として実行]で起動すればadministratorモードになります。
そこで、右図の様に"wsl --install"と打てはインストールが始まります。
Windowsを再起動すると、Ubuntuが自動的に立ち上がり、インストールが継続されます。

最後にLinuxのユーザ名とパスワードの指定を求められます。小文字だけの様なので、小文字で適当な文字列を打ち込むとユーザ名になります。筆者の場合は"harry"としましたので、この後に出てくる事例ではコマンドプロンプトにharryが出てきます。

余談ですが、WSLのファイルをWindowsから参照するときは、エクスプローラーで、"\\wsl$"というフォルダを参照します。フォルダのパスを書く場所に\\wsl$と打ち込んでEnterキーを押すと、下図の様にWSLのルートディレクトリが参照できます。
また、WSLではWindowsとUbuntuは、仮想ネットワークでつながれています。windowsとUbuntuは、別々のIPアドレスを持っています。Ubuntuから見たWindowsのIPアドレスはUbuntuで以下のコマンドを打つことによりわかります。

cat /etc/resolv.conf
harry@MSI:~$ cat /etc/resolv.conf
# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateResolvConf = false
nameserver 172.18.80.1
harry@MSI:~$
この様に、nameserverの右側(下線部)がWindowsのIPアドレスです。この例では、172.27.144.1です。
 また、Ubuntu側のIPアドレスは、以下のコマンドでわかります。

ip addr
harry@MSI:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
   inet 127.0.0.1/8 scope host lo
      valid_lft forever preferred_lft forever
   inet6 ::1/128 scope host
      valid_lft forever preferred_lft forever
2: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN group default qlen 1000
   link/ether 1e:c9:76:d4:09:47 brd ff:ff:ff:ff:ff:ff
3: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
   link/ether 62:34:a4:ff:9b:34 brd ff:ff:ff:ff:ff:ff
4: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
   link/ipip 0.0.0.0 brd 0.0.0.0
5: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
   link/sit 0.0.0.0 brd 0.0.0.0
6: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
   link/ether 00:15:5d:bb:72:01 brd ff:ff:ff:ff:ff:ff
   inet 172.18.88.46/20 brd 172.18.95.255 scope global eth0
      valid_lft forever preferred_lft forever
   inet6 fe80::215:5dff:febb:7201/64 scope link
      valid_lft forever preferred_lft forever
harry@MSI:~$
"eth0"の中の"inet"の行の一つ目のIPアドレス(下線部)がUbuntuのIPアドレスです。この例では、172.18.88.46です。但し、windowsからubuntu側のプログラムをアクセスする際には、IPアドレスを気にする必要はなく、"localhost"と記述すると、Windowsが自動的に処理して、Ubuntu上のアプリケーションにもアクセスしてくれます。したがって、あたかも同じOS上で動いているかのようにアクセスする事が出来ます。この処理はwindows側からUbuntu側にアクセスする際にだけ適用され、逆にUbuntu側からWindows側をアクセスする際には適用されませんので、Ubuntuからアクセスする際には、IPアドレスを明記する必要があります。尚、これらのIPアドレスはPCを再起動すると変わってしまいます。