LoginSignup
4
8

More than 5 years have passed since last update.

ルート検索routinoをインストールする

Last updated at Posted at 2016-12-06

はじめに

AWS EC2 上にUbuntu-16.04LTS上に、OpenStreetMapのデータを使って、ルート検索を行う routino を動作させるまでの設定です。
(追記)最新の Ubuntu-18.04LTS の設定手順に合わせて、タイプミスやバージョン等の表記を変更しました。

サーバの準備

AWS EC2 インスタンスの場合

インスタンス作成

今回は、t2.medium タイプを選んで、AWSのコンソール画面から起動しました。タイプ選択は「カン」です。

(追記)サーバ設定後は、swapファイル(1GB)を追加した t2.micro でも、ルート検索そのものは動作しています。どこまで耐えられるかは不明。

初期ログイン

ubuntu系は、起動時に設定した鍵ペアを使い、ユーザubuntuでログインします。

ssh -i XXXX.pem ubuntu@[ip address]

routinoの設定

初期更新

ログイン後とりあえずアップデート

sudo apt-get update 
sudo apt-get upgrade
sudo apt-get dist-upgrade

ミドルウェア類のインストール

  • 開発系ツール類
sudo apt-get install gcc make libc6-dev libz-dev libbz2-dev
sudo apt-get install libwww-perl liburi-perl libjson-pp-perl unzip
sudo apt-get install emacs 

emacsは私の好みです。

  • Webサーバ類
apt-get install apache2 cgi.pm

この次にPostgres+PostGISをインストールしましたが routino には不要です.
サクッと、「routinoの設定」まですっ飛ばしてください


  • データベースのインストール

Postgres+PostGIS とデータ変換ツール osm2pgsql

sudo apt-get install postgresql postgis osm2pgsql

データベース初期設定

$ sudo -i -u postgres
$ psql
psql (9.5.5)
Type "help" for help.
postgres=# \du
  <ロールの確認>
postgres=# CREATE ROLE gis LOGIN CREATEDB PASSWORD 'postgis';
postgres=# CREATE DATABASE osm;

ローカルからのDB認証方法を変更

/etc/postgresql/9.5/main/pg_hba.conf
# "local" is for Unix domain socket connections only
##local   all             all                                     peer
local   all             all                                     md5
$ sudo /etc/init.d/postgresql restart

POSTGISテンプレート設定

psql -d template_postgis -f /usr/share/postgresql/9.5/contrib/postgis-2.2/postgis.sql
psql -d template_postgis -f /usr/share/postgresql/9.5/contrib/postgis-2.2/spatial_ref_sys.sql
psql -d template_postgis -f /usr/share/postgresql/9.5/contrib/postgis-2.2/postgis_comments.sql
psql -d template_postgis -f /usr/share/postgresql/9.5/contrib/postgis-2.2/rtpostgis.sql
psql -d template_postgis -f /usr/share/postgresql/9.5/contrib/postgis-2.2/raster_comments.sql
psql -d template_postgis -f /usr/share/postgresql/9.5/contrib/postgis-2.2/topology.sql
psql -d template_postgis -f /usr/share/postgresql/9.5/contrib/postgis-2.2/topology_comments.sql
psql -d osm -f /usr/share/postgresql/9.5/contrib/postgis-2.2/postgis.sql
psql -d osm -f /usr/share/postgresql/9.5/contrib/postgis-2.2/spatial_ref_sys.sql

この後、osm2pgsql でデータを登録


routino の設定

routino のビルド

http://www.routino.org/download/ から最新版をダウンロード

wget http://www.routino.org/download/routino-3.2.tgz

展開してビルド(コンパイル)

tar xvfz routino-3.2.tgz
cd routino-3.2/
make

routino の配置

公開するディレクトリにコピー

sudo mkdir /var/www/routino/www
sudo cp -a web/* /var/www/routino/www
sudo chown -R www-data:www-data /var/www/routino

leaflet/OpenLayersのインストール。

いずれも install.sh は古いので編集が必要です。

  • leaflet

routino-3.2 では、leafletのレガシーバージョン 0.7.7 を指定していて、install.sh を実行するだけです。

$ sudo ./install.sh

1.0.2 にしてしまいましたが、ルート検索結果の線が表示されないようです。0.7.3 に戻せば大丈夫かもしれません。(未確認)

  • OpenLayers

こちらは OpenLayers 2 を使います。

/var/www/routino/www/openlayers/install.sh
#!/bin/sh -x
version=2.13.1
# Download the file.
#wget http://openlayers.org/download/OpenLayers-$version.tar.gz
wget https://github.com/openlayers/ol2/releases/download/release-${version}/OpenLayers-${version}.tar.gz
# Uncompress it.
tar -xzf OpenLayers-$version.tar.gz
# Create a custom OpenLayers file
(cd OpenLayers-$version/build && python build.py ../../routino.cfg && cp OpenLayers.js ..)
# Copy the files.
cp -p  OpenLayers-$version/OpenLayers.js .
cp -pr OpenLayers-$version/img .
cp -pr OpenLayers-$version/theme .
# Delete the remainder
rm -rf OpenLayers-$version

OpenStreetMap データダウンロード&データ変換

日本全域のデータをダウンロードしてroutinoが扱えるように変換します。

下記のスクリプトを用意しておけば、データの更新は簡単です。もっとも、別のディレクトリで作成してコピーする手順にしないと、データ変換中は検索に失敗します。

/var/www/routino/data/create_japan.sh
#!/bin/sh -x
# This script can download from the GeoFabrik server.

# EDIT THIS to set the names of the files to download from GeoFabrik.
files="asia/japan-latest.osm.pbf"
server="download.geofabrik.de"

# Download the files
for file in $files; do
   wget -N http://$server/$file
done

# Process the data
../bin/planetsplitter --errorlog *.osm.pbf

地図パラメータ設定

デフォルトのままだとイギリス近辺しか表示されないので、表示範囲を変更します。
設定ファイル:/var/www/routino/www/routino/mapprops.js

$ diff mapprops.js mapprops.js.ORIG
17,18c17,18
< //  westedge:  -11.0,          // Minimum longitude (degrees)
< //  eastedge:    2.0,          // Maximum longitude (degrees)
---
>   westedge:  -11.0,          // Minimum longitude (degrees)
>   eastedge:    2.0,          // Maximum longitude (degrees)
20,21c20,21
< //  southedge:  49.5,          // Minimum latitude (degrees)
< //  northedge:  61.0,          // Maximum latitude (degrees)
---
>   southedge:  49.5,          // Minimum latitude (degrees)
>   northedge:  61.0,          // Maximum latitude (degrees)
23,29c23,24
<   westedge:  128.0,          // Minimum longitude (degrees)
<   eastedge:  145.0,          // Maximum longitude (degrees)
<   southedge:  26.0,          // Minimum latitude (degrees)
<   northedge:  45.5,          // Maximum latitude (degrees)
<
<   zoomout:       6,          // Minimum zoom
<   zoomin:       18,          // Maximum zoom
---
>   zoomout:       4,          // Minimum zoom
>   zoomin:       15,          // Maximum zoom

apacheの設定

まず、環境に応じて、apacheの設定ファイルの ServerAdmin / ServerName などを適切に設定してください。

つぎにCGIを有効化します。(Ubuntuの場合)

$ sudo a2enmod cgid

routinoに関する設定を行います。、VirtualHost を使ったサンプルですが、単にroutinoの設定をまとめて移設しやすくするために使っているだけです。

/etc/apache2/sites-available/routino.conf
###
#       for routine
#       hostname: routino.sample.com
####
<VirtualHost *:80>
    ServerAdmin admin@zsample.com
    ServerName routino.sample.com
    DocumentRoot /var/www/routino/www/

    <Directory /var/www/routino/www>
       AllowOverride None
       Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
       AddHandler cgi-script .cgi
   </Directory>

   CustomLog ${APACHE_LOG_DIR}/routino.access.log combined
   ErrorLog ${APACHE_LOG_DIR}/routino.error.log
   ServerSignature Off
</VirtualHost>

設定ファイルを反映させ、apacheを再起動

$ sudo ln -s /etc/apache2/sites-available/routino.conf /etc/apache2/sites-enabled/routino.conf
$ sudo systemctl restart apache2

(追記)1行目のシンボリックリンク作成は、a2ensite を使ったほうが便利。

動作確認

ブラウザでアクセスし本家( http://www.routino.org/uk/ ) と同様の画面が表示されることを確認する。
ルート検索ができない場合は、CGIが動作しない設定になっている、あるいは、OSMデータ変換に失敗しているなどの可能性が考えられる。

参考

4
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
8