
ラズパイをタイル配信だけ行うサーバーにしてみます。
目的:リクエストがキャッシュにあれば配信、なければ何もしない。
データベースとosm2pgsqlが正常にインストールされていないと、タイルの有効期限などを決めるexpireメソッドが機能しないと考えられる?あるいは、たとえデータベースがあっても更新されなければ、タイルexpiryは無効?mod_tileのソースを読んでみる必要ありですが…..。
OpenStreetMapのタイルサーバーですがデータベースを持たないタイプです、やってみます。
ラズパイは3でも4でもどっちでもいいです。
MicroSD設定
MicroSDは16GBを使用
Desktop環境は不要です。以下の設定もすべてSSHで接続したCUIでまかなえます。
新規にtileserverというユーザーを作成してログインしておいてください。
以下の設定の場合、MicroSDの消費は9GBちょっとです。
サーバー構成
1:Softwareインストール
さまざまな依存関係を最初にインストールしておきます。
以下はUbuntu 18.04がターゲットです、20.04の場合はコチラのページをご参照ください。
2:Apache HTTP Serverをインストール
Apacheがインストールされたかチェック
It works! が表示されればOK。
PHPもインストールしておく場合
最新版は7.4です、お好みの問題ですが7.4の場合は以下のバージョン番号を書き換えてください。
3:mapnikをインストール
mod_tileのインストールに必要です。
Ubuntu 20.04の場合はコチラのページをご参照ください。
4:mod_tileとrenderdインストール
mod_tileをインストールします。
「mod_tile」は、タイルのリクエストを処理するApacheモジュールです。
「renderd」は、「mod_tile」がタイルを要求したときに実際にタイルをレンダリングするデーモンです。
今回はrenderdはインストールされますが何もしません。
mod_tileのソースをコンパイル
5:Apacheの構成
Apacheに「mod_tile」について通知する必要があります。
mod_tile.confを新規に作成
以下を追記
mod_tileを起動
次に、Apacheに「レンダリング」について通知する必要があります。
今回はレンダリングしませんが、この設定は必要です。
000-default.confをnanoなどのテキストエディターで編集します。
「ServerAdmin」行と「DocumentRoot」行の間に次を追加します。
Apacheを2回リロードします。
(Apacheは、実行時に再構成すると「混乱」するため、2回実行する必要があります)
6:外部データストレージ用のマウントポイント作成
タイルデータが保存されている外部ストレージをマウント
ストレージ(NAS)にはTileというフォルダーを作成し、ここにデータが保存されるものとします。
サンプルデータ(700MBくらいのZIP)は4sharedにアップしています。
東京23区近辺のデータです。だいたいこのへん。
ダウンロードしてTileフォルダーにコピーしておきます。
サンプルデータは1GBもないので、USBメモリにコピーしてもいいかもしれません。
このTileフォルダー(NAS)やUSBメモリーにマウントして使います。
マウントの方法はここを参照
配信確認用htmlファイル作成
タイルを表示するために、mod_tileの「extras」フォルダーにある「sample_leaflet.html」というHTMLファイルを使ってみます。
Webのドキュメントルートは/var/www/htmlですので、ここにコピーします。
sample_leaflet.htmlはLeafletライブラリを使った地図表示用のWebアプリです。
lf.htmlという名前にしてみます。
編集してIPアドレスなどを変更します。
2か所変更
以下にアクセス
http://<IPアドレス>/lf.html
上記の東京23区付近のエリアにアクセスしてレベル18まで表示されればOK。
レベル16ならこんな風に見えます。
ズームボタンは表示されるものの、グレイの画面のままの場合
sudo chmod -R a+x /var/lib/mod_tile
で、リロードしてみてください。
Web配信はWi-Fiでも有線でもどちらでもいいですが、Wi-Fiの場合タイル配信の精度が低下する場合があります(レベル17や18のタイルが配信されない)。
Wi-Fi状態をチェック
iwconfigは引数無しで実行すると状態を表示してくれます。
RateやLinkの質が低下した場合は、イーサネットケーブル接続に切り替えます。
Wi-Fi 停止
ケーブル接続
Wi-Fi 再開する場合(ケーブルは接続したまま)
レンダリングについてはこのページ参照
レンダリング実行時間はラズパイよりJetson Nanoの方が若干はやいような気がします。
render_list関数はCPUのみ使うそうですので、GPUの恩恵は何もないはずなんですが(^^)。
このページではタイルデータを外部ストレージに置いて、これをマウントして使用していますが、場合によってはMicroSDに直に置いた方がいい場合もあるでしょう。
そういう場合のデータサイズ(日本全体)の例
z 0 ~17 ー> 105GB (491990 Files、125647 Folders)
z 18 ー> 74.6GB (1009236 Files、254891 Folders)
最後にレスポンスですが、これはWebサービスプラットフォームとしてのラズパイやJetsonといったシングルボードコンピュータの能力の問題になります。
タイルデータがNASにあろうと本家(https://tile.openstreetmap.org)にあろうと関係ないです(^^)。
表示の速度は端末の能力の問題です(スマホよりPCの方が機敏です)。
インターネット環境が無い(使えない/使わない)場合のアドホックな構成も準備中
OSMタイルサーバーにしたラズパイをWi-Fiのアクセスポイントにしてみる
シングルボードコンピュータでOpenstreetMapのデータを使ってタイルデータの作成(レンダリング)をしてみましょう。
シングルボードコンピューターにOpenStreetMapのタイルサーバーを立ててみる
USBストレージに小分けしたデータを抜き差ししながら、こまめに使う
ラズパイ起動後にUSBストレージを挿入したら自動で検知して、マウントする
Leave a Reply