debian に Tomcat の Geoserver をセットする

ようやく Tomcat で Geoserver を動かすことができたのでメモ。 本番環境では debian に直接設定する予定ですが、今回はテスト用にコンテナを用意しました。

インストール作業を行った debian は docker コンテナの debian 8.3 になります。 コンテナの 80 番ポートをホストの 8081 番へ、8080 番ポートを 8082 番へ接続するため次のようなコマンドでコンテナを起動します。

$ docker run -i -p 8082:8080 -p 8081:80 -t debian bash

ホストで他に動かしてるサービスがあるので 80 と 8080 が使えないとかってだけなんです。 80 もアクセスできるようにしてますが、特になくても大丈夫だと思います。

準備

コンテナに入ったら一般ユーザを用意します。

# apt-get update
# apt-get install sudo vim zip -y
# hash -r
# visudo
zoar    ALL=(ALL:ALL) ALL
# adduser zoar
Adding user `zoar' ...
Adding new group `zoar' (1000) ...
Adding new user `zoar' (1000) with group `zoar' ...
Creating home directory `/home/zoar' ...
Copying files from `/etc/skel' ...
# su zoar
$ cd ~

Java のインストール

Java のインストールは基本はこちらのブログです。 Launchpad.net の “WebUpd8” team にある Ubuntu 用のリポジトリをセットしてインストールです。
Technical details about this PPA をクリックするとリポジトリを利用するための設定例が出てくるのでその辺を利用します。

リポジトリを追加した時にリポジトリの公開鍵を信頼しておかないとファイルを取ってこれないので公開鍵をセットしておきます。Signing Key/ 以降の文字列を apt-key の --recv-keys に渡せば OK です。
Fingerprint 全部を渡してもイケるみたいですけど。

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys XXXXXXXX

セットしたら apt のソースにリポジトリを追加して Java をインストールします。

$ sudo sh -c "echo 'deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main' > /etc/apt/sources.list.d/webupd8team-java.list"
$ sudo sh -c "echo 'deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main' >> /etc/apt/sources.list.d/webupd8team-java.list"
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer -y

ライセンスに承諾するか聞かれるので承諾すればインストールが最後まで進みます。

Do you accept the Oracle Binary Code license terms? y

java -version でバージョンが帰ってくれば OK 。

Tomcat のインストール

実行用のログインしないユーザ tomcat を作成しておきます。

$ sudo adduser --system --shell /bin/bash --gecos 'Tomcat Java Servlet and JSP engine' --group --disabled-password --home /home/tomcat tomcat

Tomcat を落としてきて展開します。今回はなんとなく Tomcat 8 です。

$ mkdir ~/tmp
$ cd ~/tmp/
$ wget http://www.us.apache.org/dist/tomcat/tomcat-8/v8.0.32/bin/apache-tomcat-8.0.32.tar.gz
$ tar xvf apache-tomcat-8.0.32.tar.gz

適当な場所に移動して Tomcat をコントロールできるユーザを設定します。

$ sudo mv ~/tmp/apache-tomcat-8.0.32 /usr/share/tomcat8
$ sudo ln -s /usr/share/tomcat8 /usr/share/tomcat
$ vi /usr/share/tomcat/conf/tomcat-users.xml

ユーザの設定がコメントアウトされているので、その後ろ部分あたりにユーザとロールをセットします。
Tomcat の管理画面でユーザ認証が必要な場合はここでセットしたユーザ名、パスワードを使います。

  <role rolename="tomcat"/>
  <role rolename="manager-gui"/>
  <role rolename="admin-gui"/>
  <user username="tomcat" password="tomcat" roles="tomcat,manager-gui,admin-gui"/>

Tomcat 配下のファイルとディレクトリのオーナーをログインできないユーザとして追加しておいた tomcat に変更しておきます。

$ sudo chown -R tomcat:tomcat /usr/share/tomcat8

これで Tomcat を実行することができます。
tomcat ユーザで実行するので次のような感じのコマンドです。

$ sudo /bin/su - tomcat -c /usr/share/tomcat/bin/startup.sh

ブラウザから Docker ホストの 8082 にアクセスして Tomcat の画面が出てくれば OK です。

Geoserver を配置して利用可能にする

Geoserver のサイトにアクセスしてダウンロードのダイレクトリンクからダウンロードします。

$ wget http://downloads.sourceforge.net/project/geoserver/GeoServer/2.8.2/geoserver-2.8.2-war.zip
$ unzip geoserver-2.8.2-war.zip

war ファイルのパスを表示してコピーしておきます。

$ find `pwd` -name "geoserver.war"
/home/zoar/tmp/geoserver.war

ブラウザで表示してる Tomcat の画面に戻って Manager App をクリックして Tomcat Webアプリケーションマネージャにアクセスします。 ユーザ名とパスワードは両方とも tomcat-users.xml に記述した tomcat を使えばログインできます。

配備 にある サーバ上のWARファイル又はディレクトリの配備 を使って Geoserver を配備します。

f:id:k-side:20160315102954p:plain

コンテキストパス には /geoserverWARファイル又はディレクトリのURL には先ほど表示させた war ファイルのフルパスを入力して 配備 ボタンをクリックすれば OK。 Tomcat で war を展開するので若干時間がかかるかもしれませんが、しばらくすると アプリケーションの欄に /geoserver が表示されると思います。

表示された /geoserver をクリックして Geoserver の管理画面が表示されれば完了です。
後は Geoserver のデータディレクトリにファイルを配置して Geoerver の管理画面から読み込めば素敵な Web マップライフを送ることができます。
データディレクトリのパスは /usr/share/tomcat/webapps/geoserver/data/data/ になるんじゃないかな。