概略
前回投稿した、H2Oにちょっと手を加えて、OpenStreetMap 用のタイルサーバにしてみた話の続き。
今回は、デモ環境を作る用のかんたんな shell script を書いたのでご紹介。
なお、出来上がるデモサイトは、基本的には昨日公開したここと同じものになるハズだ。
で、どうやって使う?
GitHub の INSTALL.md に簡単な説明を書いたので、そちらを見よう。
中で何をやっているかは、 スクリプト自体 のコメントに書いてある。
ここにスクリプト全部貼り付けて解説を書いていこうかとも思ったのだが、「DRY とゆう言葉をしらねーのかよこの static おじさんが!」と言われそうなのでやめる。
代わりに、スクリプト冒頭の長い説明だけ要約する:
想定環境
Debian jessie 64bit でしか試してない。
Ubuntu でも apt
のパッケージ名を調整すればいけるかも。ただ、特にフォント系のパッケージ名は違いが激しく、つらい。
RHEL 系は、主に gcc が古いとかの理由でつらみしかないかも。ただし試したわけではない。度胸でなんでもやってみるのも悪くない。
- ストレージ 50GB,
- メモリ 4GB,
- コア2
ぐらいはできれば欲しい。
インターネッツに公開する時の注意
- 22, 8080 以外のポートは開けるんじゃないぞ。絶対だぞ
- なくして困る自分のデータとかコードは置くな
これは雑なデモ環境であって、ガチな運用環境ではない。いいね?
下準備
一部の処理は "osm" という名前の一般ユーザ (このスクリプトの最初で useradd する) で実行する。
理由は、OpenStreetMap のツールチェインの一部が、このユーザ名を前提にハードコードしちゃってたりするため。
なので、あらかじめ
$ visudo
で、
Defaults timestamp_timeout=-1
osm ALL=(ALL:ALL) ALL
と書いておくこと。
このゆるふわすぎるアクセス権は、セットアップが終わったらなかったことにしてもかまわない。
主なデータの場所と、ファイルシステムについて
PostGIS の DB は /var/lib/postgresql/9.4/main
の下。これは apt
で入れた時のデフォルトがそうなっている。
タイル (画像ファイル) は /opt/osm/tiles
の下
- なので、
/opt
の空き容量は十分 (20~30GB ぐらい) 確保しよう, そして -
/opt
は ext4 ではなく、Btrfs のパーティション を切って、そこにmount
することを強く強く訴えていきたい。ナンデ?
Btrfs の薦め
なんでかというと、tiles/
の下にはすっごいたくさんのファイルができるからだ。
最大縮尺まで全部画像にすると、東京周辺だけでも .png ファイルが何百万個とか普通にいく。
ext4 でこれはキツいでしょ。もっと広い領域で何十億個とかになったら絶対無理でしょ。
一方、btrfs は、inode の数をフォーマット時に決めるということをしないし、
小さな画像 (地図はたいていそうだ) はメタデータ領域に詰めてくれる。やったね!
具体的な mkfs
と mount
のやり方は:
$ sudo sudo apt-get -qq install btrfs-tools
$ sudo mkfs.btrfs -O^extref -m single /dev/part/for/tiles
$ sudo vi /etc/fstab # fstab に下の行を追加:
/dev/part/for/tiles /opt btrfs auto,noexec,noatime,autodefrag,compress=lzo,space_cache 0 2
# ただし、ほぼ .png しか置かないので、"compress=lzo" あんまり意味ないかも。
おねがい
このいかにも static 加齢臭ただよう shell script を、Fabric とか Ansible とか Docker とか、イケてる DevOps だぜクラウドでインミュータブルインフラスツラッチャーだぜヒャッハーにしてくれる DevOps な人がほしいです。