2017年2月27日月曜日

AWSでRDSを使ってOpenStreetMapを動かす

OpenStreetMap(OSM)をインストールすることになったのでメモ。

環境 AWS
OSとインスタンス:Ubuntu 14系 t1.micro
DB: RDS Postgres 9.5.4 t2.medium 汎用SSD 100GB

DB以外はこちらのやり方でインストール。
http://dev.classmethod.jp/cloud/aws/install-openstreetmap-on-ec2-ubuntu14_04/

1.PostGISのセットアップ


ここに書いてあることをそのまま実行するだけ。
http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.html#Appendix.PostgreSQL.CommonDBATasks.PostGIS

ここまでできたら、完了です。

mydb1=> select topology.createtopology('my_new_topo',26986,0.5);
 createtopology
----------------
              1
(1 row) 

2.必要なパッケージ一式を入れる

wget http://download.geofabrik.de/asia/japan-latest.osm.pbf から実施してください。

pbfをダウンロードしてPostgresへのインポートはこちらのコマンド。
osm2pgsql --slim -C 1024 -U RDS構築時に指定したユーザ名 -d RDS構築時に指定したDB名 -H hogehoge.ap-northeast-1.rds.amazonaws.com -W japan-latest.osm.pbf

Postgresもローカルで動いてしまうので止めておく。自動起動もOFFにしておく。
/etc/init.d/postgresql stop

3.Apacheの設定変更

PATH:/etc/apache2/sites-available/tileserver_site.conf
ModTileRequestTimeoutとModTileMissingRequestTimeout辺りは100000ぐらいにしておく。

4.render.confの編集

[renderd]
stats_file=/var/run/renderd/renderd.stats
socketname=/var/run/renderd/renderd.sock
num_threads=4
tile_dir=/var/lib/mod_tile
[mapnik]
plugins_dir=/usr/lib/mapnik/2.2/input
font_dir=/usr/share/fonts/truetype/
font_dir_recurse=true
[default]
XML=/etc/mapnik-osm-carto-data/osm.xml
#HTCPHOST=proxy.openstreetmap.org
#TILESIZE=512
#** config options used by mod_tile only, but not renderd **
URI=/osm/
DESCRIPTION=This is the standard osm mapnik style
#ATTRIBUTION=&copy;<a href=\"http://www.openstreetmap.org/\">OpenStreetMap</a> and <a href=\"http://wiki.openstreetmap.org/w\
iki/Contributors\">contributors</a>, <a href=\"http://opendatacommons.org/licenses/odbl/\">OdBL</a>
#HOST=tile.openstreetmap.org
#SERVER_ALIAS=http://a.tile.openstreetmap.org
#SERVER_ALIAS=http://b.tile.openstreetmap.org
#MINZOOM=0
#MAXZOOM=18

5.osm.xmlの編集
PATH:/etc/mapnik-osm-carto-data/osm.xml

cp /etc/mapnik-osm-carto-data/osm.xml /etc/mapnik-osm-carto-data/osm.xml.org

DB名をgis以外にした場合は[CDATA[gis]]の部分を全行変更を行う。(私の場合はqgis)
<Parameter name="dbname"><![CDATA[qgis]]></Parameter>
host、user、passwordを[CDATA[qgis]]のある行全てに追加する。

最終的にはこんな感じに。
<Parameter name="dbname"><![CDATA[qgis]]></Parameter>
<Parameter name="host">hoge.ap-northeast-1.rds.amazonaws.com</Parameter>
<Parameter name="user">postgres-rds-user-name</Parameter>
<Parameter name="password">postgres-rds-password</Parameter>

vimの置換であえれば以下のような感じになります。

:%s/<Parameter name="dbname"><\!\[CDATA\[gis\]\]><\/Parameter>/<Parameter name="dbname"><\!\[CDATA\[qgis\]\]><\/Parameter>^M<Parameter name="host">qgis.cujnmxvgwxsn.ap-northea
st-1.rds.amazonaws.com<\/Parameter>^M<Parameter name="user">postgresadmin<\/Parameter>^M<Parameter name="password">19mk>HVej<\/Parameter>/g
※^Mの部分はvimのCtrl+v,Ctrl+で入力すること。


5.もろもろ再起動
/etc/init.d/apache2 restart
/etc/init.d/renderd restart

6.ログを確認
PATH:/var/log/syslog

この辺りのエラーがでているとosm.xmlのDB接続周りに漏れがあります。
An error occurred while loading the map layer 'default': Postgis Plugin: could not connect to server: No such file or directory#012#011Is the server running locally and accepting#012#011connections on Unix domain socket 


7.アクセスする
http://hogehoge.aws.com/osm/

動かないな-と思ってたら、すごい倍率で海を見ているだけでした。
ちゃんとブログを読んで
// Start position for the map (hardcoded here for simplicity)
// 東京の辺りを指定
        var lat=35.685;
        var lon=139.745;
        var zoom=11;

は入れましょう。。。。

後、Chromeだとうまく動きませんでした。

0 件のコメント:

コメントを投稿