目次
- Ubuntu 16.04 で OpenStreetMap タイルサーバを構築 – 1 –
- Ubuntu 16.04 で OpenStreetMap タイルサーバを構築 – 1.5 –
- Ubuntu 16.04 で OpenStreetMap タイルサーバを構築 – 2 –
- Ubuntu 16.04 で OpenStreetMap タイルサーバを構築 – 3 – <–いまここ
- Ubuntu 16.04 で OpenStreetMap タイルサーバを構築 – 4 –
OpenStreetMap タイルサーバを構築 第3回
で、今回も
元の内容はこちらから をほぼそのままやっています。
https://www.linuxbabe.com/linux-server/openstreetmap-tile-server-ubuntu-16-04
元記事の 更新日2016/07/22 By: Xiao Guoan 氏
ステップ5 :
mod_tile のインストール
mod_tileはタイルを提供するために必要とされるApacheモジュールです。
現在のところ、Ubuntuのためのバイナリパッケージは利用可能ではありません。
GitHubのリポジトリからそれをコンパイルすることができます。
先にコンパイルするのに必要なファイル類をインストールします。
sudo apt install git autoconf libtool libmapnik-dev apache2-dev
その後に、GitHupのリポジトリからクローンします。
git clone https://github.com/openstreetmap/mod_tile.git cd mod_tile/
コンパイルして インストールします。
./autogen.sh ./configure make sudo make install sudo make install-mod_tile
ステップ6:
Mapnik スタイルシートの生成
必要なパッケージをインストールします。
sudo apt install curl unzip gdal-bin mapnik-utils node-carto
osm ユーザーに切り替えます。
su - osm
Carto ディレクトリへ移動します。
cd openstreetmap-carto-2.41.0/
シェープファイルを取得します。
./get-shapefiles.sh
Mapnik xml スタイルシートをビルドします。
carto project.mml > style.xml
osm ユーザーから抜けます。
exit
ステップ7:
renderd 設定
renderd config ファイルを 編集します。
sudo vi /usr/local/etc/renderd.conf
[default] の項目で、XML と HOST の値を変更します。
XML=/home/osm/openstreetmap-carto-2.41.0/style.xml HOST=localhost
[mapnik]
の項目で、plugins_dir の値を変更します。
plugins_dir=/usr/lib/mapnik/3.0/input/
ファイルを保存します。
サンプルの init スクリプトをコピーして、renderd のinit スクリプトをインストールします。
sudo cp mod_tile/debian/renderd.init /etc/init.d/renderd
実効権限を与えます。
sudo chmod a+x /etc/init.d/renderd
init スクリプトを編集します。
sudo vi /etc/init.d/renderd
次の変数を変更します。
DAEMON=/usr/local/bin/$NAME DAEMON_ARGS="-c /usr/local/etc/renderd.conf" RUNASUSER=osm
ファイルを保存します。.
次のディレクトリを作成しosmユーザーを所有者とします。
sudo mkdir -p /var/lib/mod_tile sudo chown osm:osm /var/lib/mod_tile
renderd サービスをスタートします。
sudo systemctl daemon-reload sudo systemctl start renderd
ここまでは問題なし
sudo systemctl enable renderd
とやったら
renderd.service is not a native service, redirecting to systemd-sysv-install Executing /lib/systemd/systemd-sysv-install enable renderd
と表示されるので
sudo /lib/systemd/systemd-sysv-install enable renderd
としておいた。
ステップ8:
apache コンフィグ
apache web サーバをインストールします。
sudo apt install apache2
モジュールロードファイルを作成します。
sudo vi /etc/apache2/mods-available/mod_tile.load
ファイルに次の行を貼り付けます。
LoadModule tile_module /usr/lib/apache2/modules/mod_tile.so
シンボリックリンクを作成します。
sudo ln -s /etc/apache2/mods-available/mod_tile.load /etc/apache2/mods-enabled/
デフォルトのバーチャルホスト conf ファイルを編集します。
sudo vi /etc/apache2/sites-enabled/000-default.conf
の行の後に
LoadTileConfigFile /usr/local/etc/renderd.conf ModTileRenderdSocketName /var/run/renderd/renderd.sock # Timeout before giving up for a tile to be rendered ModTileRequestTimeout 0 # Timeout before giving up for a tile to be rendered that is otherwise missing ModTileMissingRequestTimeout 30
ファイルを保存して閉じます。 apache を再起動します。
sudo systemctl restart apache2
次にあなたのブラウザのアドレスバーに入力します。
your-server-ip/osm_tiles/0/0/0.png
あなたは世界地図のタイルが表示されるはずです。 おめでとう!あなたは成功し、独自のOSMタイルサーバを構築しました。
あなたのタイル張りのWeb地図を表示します
タイル張りのWebマップはまた、 OpenStreetMapの用語でスリッピーマップとして知られています。
OpenLayerとリーフレット:あなたのタイルサーバー用に使用できる2つのフリーでオープンソースのJavaScriptマップ・ライブラリがあります。
リーフレットの利点は、使い方が簡単で、マップをモバイル対応になるということです。
OpenLayer
OpenLayerであなたのスリッピーマップを表示するには、最初のWebフォルダを作成します。
次に JavaScript と CSS を openlayer.org から ダウロードして web ルートフォルダに展開します。
続いて、index.html ファイルを作成します。
sudo vi /var/www/osm/index.html
次のテキストファイルを貼り付け 赤文字のところを適当な内容に書き換えます。
<!DOCTYPE html> <html> <head> <title>Accessible Map</title> <link rel="stylesheet" href="http://your-ip/ol.css" type="text/css"> <script src="http://your-ip/ol.js"> </script> a.skiplink { position: absolute; clip: rect(1px, 1px, 1px, 1px); padding: 0; border: 0; height: 1px; width: 1px; overflow: hidden; } a.skiplink:focus { clip: auto; height: auto; width: auto; background-color: #fff; padding: 0.3em; } #map:focus { outline: #4A74A8 solid 0.15em; } </style> </head> <body> <a class="skiplink" href="#map">Go to map</a> <div id="map" class="map" tabindex="0"></div> <button id="zoom-out">Zoom out</button> <button id="zoom-in">Zoom in</button> <script> var map = new ol.Map({ layers: [ new ol.layer.Tile({ source: new ol.source.OSM({ url: 'http://your-ip/osm_tiles/{z}/{x}/{y}.png' }) }) ], target: 'map', controls: ol.control.defaults({ attributionOptions: /** @type {olx.control.AttributionOptions} */ ({ collapsible: false }) }), view: new ol.View({ center: [244780.24508882355, 7386452.183179816], zoom:5 }) }); document.getElementById('zoom-out').onclick = function() { var view = map.getView(); var zoom = view.getZoom(); view.setZoom(zoom - 1); }; document.getElementById('zoom-in').onclick = function() { var view = map.getView(); var zoom = view.getZoom(); view.setZoom(zoom + 1); }; </script> </body> </html>
ファイルを保存して閉じます。
今、あなたはブラウザでサーバのIPアドレスを入力してスリッピーマップを表示することができます。 と思ったのですが、 バーチャルホストの設定直していないので、まだ表示されないですね。
sudo vi /etc/apache2/sites-enabled/000-default.conf
DocumentRoot /var/www/osm
に書き換えて
ファイルを保存して閉じます。 apache を再起動します。
sudo systemctl restart apache2
今、あなたはブラウザでサーバのIPアドレスを入力してスリッピーマップを表示することができます。
次に
Leaflet
cd /var/www/osm
に JavaScript と CSS を leftletjs.com からダウンロードして web ルートフォルダに配置します。
続いて、index2.html ファイルを作成します。
sudo vi index2.html
次のテキストファイルを貼り付け 赤文字のところを適当な内容に書き換えます。
<html> <head> <title>My first osm</title> <link rel="stylesheet" type="text/css" href="leaflet.css"/> <script type="text/javascript" src="leaflet.js"></script> <style> #map{width:100%;height:100%} </style> </head> <body> <div id="map"></div> <script> var map = L.map('map').setView([53.555,9.899],5); L.tileLayer('http://your-ip/osm_tiles/{z}/{x}/{y}.png',{maxZoom:18}).addTo(map); </script> </body> </html>
こっちの方がするする 動く感じですね。

ただ
こんな感じでトーフが並んでます。
代わりにその場でレンダリングのタイルは、 render_listコマンドを使用プリレンダリング。 プリレンダリングされたタイルは、/var/lib/mod_tile ディレクトリにキャッシュされます。 -zおよび-Zフラグは、ズームレベルを指定します。
render_list -m default -a -z 0 -Z 10
このチュートリアルはMiles B. Dyson 氏の助言でできるようになったそうです。
タグ: OpenStreetMap, OSM, タイルサーバ