ラズパイにOpenStreetMapの最小構成タイル配信サーバをセットアップ


ラズパイをタイル配信だけ行うサーバーにしてみます。

目的:リクエストがキャッシュにあれば配信、なければ何もしない。

データベースと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ストレージを挿入したら自動で検知して、マウントする

 


 

Be the first to comment

Leave a Reply

Your email address will not be published.


*