Metacat 2.3.0 セットアップ手順 (基本機能)¶
OS の設定¶
Metacat 用の特別な設定は必要ない。
ここでは、OS のクリーンインストール後、 作業の便のために bash と vim と curl をインストールした。
# pkg
# pkg install bash
# pkg install vim
# pkg install curl
ミドルウェア等¶
必要なものは、
- Apache httpd 2.4 (2.2 でも良い)
- Java 6
- Tomcat 6 (7 だと何故か動作がおかしい)
- PostgreSQL 9
- OpenLDAP
順次インストールする。
Apache httpd 2.4
# pkg install apache24
Java 6
# pkg install openjdk6 /etc/fstab に以下を追加 fdesc /dev/fd fdescfs rw 0 0 proc /proc procfs rw 0 0 # mount -a
Tomcat 6
# pkg install tomcat
PostgreSQL 9
# pkg install postgresql93-server
OpenLDAP
# pkg instal openldap24-server
/etc/rc.conf に以下を追加。
apache24_enable="YES" postgresql_enable="YES" tomcat60_enable="YES" slapd_enable="YES" slapd_flags='-h "ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://0.0.0.0/"' slapd_sockets="/var/run/openldap/ldapi"
デフォルトの Java VM 設定では tomcat がメモリエラーを吐くことがある。 /usr/local/apache-tomcat-6.0/logs/stdout.log に、
java.lang.OutOfMemoryError: PermGen space
が出現するようであれば、 Java VM のメモリ設定を明示的に指定する。 /etc/rc.conf に下記を追加。
tomcat60_java_opts="-Xmx256m -XX:MaxPermSize=128m"
postgres の設定¶
取り敢えず起動。
# service postgresql initdb # service postgresql start
データベースとユーザ(ロール)を作成する。ここでは、
DB名 metacat ユーザ名 mcpguser パスワード mcpgpass とする。
# su pgsql $ psql postgres postgres=# create database metacat; postgres=# create role mcpguser with login unencrypted password 'mcpgpass'; postgres=# grant all on database metacat to mcpguser;
バスワードを囲む引用符はシングルクォート記号を用いること。 ダブルクォート記号を用いると syntax error が出る。 私もよく間違えるので、念のため。
ここでは localhost 内限定のアクセスのため pg_hba.conf は修正する必要はない。
ldap¶
あらかじめ、LDAP の基本ドメインと管理者、Metacat 管理者の DN を決めておく。 ここでは仮に
基本ドメイン dc=mydomain,dc=tld LDAP 管理者 DN cn=Manager,dc=mydomain,dc=tld LDAP 管理者 パスワード ldapadminpass Metacat 管理者 uid=mcadmin,dc=mydomain,dc=tld
とする。
起動の前に設定ファイル /usr/local/etc/openldap/slapd.conf を修正する。
--- slapd.conf.default 2014-02-06 16:28:09.000000000 +0900 +++ slapd.conf 2014-02-14 16:21:38.000000000 +0900 @@ -3,6 +3,8 @@ # This file should NOT be world readable. # include /usr/local/etc/openldap/schema/core.schema +include /usr/local/etc/openldap/schema/cosine.schema +include /usr/local/etc/openldap/schema/inetorgperson.schema # Define global ACLs to disable default read access. @@ -51,12 +53,12 @@ ####################################################################### database bdb -suffix "dc=my-domain,dc=com" -rootdn "cn=Manager,dc=my-domain,dc=com" +suffix "dc=mydomain,dc=tld" +rootdn "cn=Manager,dc=mydomain,dc=tld" # Cleartext passwords, especially for the rootdn, should # be avoid. See slappasswd(8) and slapd.conf(5) for details. # Use of strong authentication encouraged. -rootpw secret +rootpw ldapadminpass # The database directory MUST exist prior to running slapd AND # should only be accessible by the slapd and slap tools. # Mode 700 recommended.
起動する。
# service slapd start
下記の LDIF データを含むファイルを作成する。 そのファイル名はここでは mcadmin.ldif とする。
dn: dc=mydomain,dc=tld objectClass: dcObject objectClass: organization dc: mydomain o: mydomain.tld dn: uid=mcadmin, dc=mydomain, dc=tld objectClass: inetOrgPerson uid: metacat-manager cn: Metacat Manager sn: Manager title: Manager account for Metacat
LDIF データを投入する。
# ldapadd -h localhost -D "cn=Manager,dc=mydomain,dc=tld" -W -f mcadmin.ldif (LDAP 管理者パスワードを入力する)
Metacat 管理者にパスワードを発行する。
# ldappasswd -h localhost -D "cn=Manager,dc=mydomain,dc=tld" -W "uid=mcadmin,dc=mydomain,dc=tld" (LDAP 管理者パスワードを入力する) (Metacat 管理者アカウントにバスワードが自動発行される。 画面に出力されたパスワードをメモしておくこと。)
Apache httpd の設定¶
Tomcat 用リバースプロキシを設定する。
必要なモジュールを有効化する。
/usr/local/etc/apache24/httpd.conf 内の
- mod_proxy
- mod_proxy_ajp
の LoadModule 行のコメントを外す。
リバースプロキシ用設定ファイルを作成する。ここでは
/usr/local/etc/apache24/Includes/metacat.conf
とする。そのファイルに下記の内容を設定する。
ProxyPass /metacat ajp://localhost:8009/metacat ProxyPassReverse /metacat ajp://localhost:8009/metacat ProxyPass /geoserver ajp://localhost:8009/geoserver ProxyPassReverse /geoserver ajp://localhost:8009/geoserver
apache24 を起動する。
# service apache24 start
Tomcat6 の設定¶
最近のバージョンでは setCharacterEncodingFilter が使用可能。 日本語のメタデータを検索する場合はこのフィルタを使用する必要がある (Metacat はデフォルトでは検索文字列をすべて Latin-1 だと解釈してしまうので、 Metacat 内部で日本語検索文字列が文字化けする)。
このフィルタはデフォルトでコメントアウトされているので、 /usr/local/apache-tomcat-6.0/conf/web.xml のコメントを外す。
--- web.xml.sample 2014-02-14 16:09:24.000000000 +0900
+++ web.xml 2014-02-14 16:11:16.000000000 +0900
@@ -424,7 +424,6 @@
<!-- A filter that sets character encoding that is used to decode -->
<!-- parameters in a POST request -->
-<!--
<filter>
<filter-name>setCharacterEncodingFilter</filter-name>
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
@@ -433,7 +432,6 @@
<param-value>UTF-8</param-value>
</init-param>
</filter>
--->
<!-- A filter that triggers request parameters parsing and rejects the -->
Metacat をデプロイする¶
Metacat の作業領域を作成する。
# mkdir /var/metacat # chown www:www /var/metacat
Metacat の配布ファイルを取得して、内容物を Tomcat に配備する。
# curl -O http://knb.ecoinformatics.org/software/dist/metacat-bin-2.3.0.tar.gz # tar xzf metacat-bin-2.3.0.tar.gz # cp metacat.war /usr/local/apache-tomcat-6.0/webapps # cp geoserver.war /usr/local/apache-tomcat-6.0/webapps
Tomcat 起動。
# service tomcat6 start
Metacat 設定¶
http://hostname/metacat/ にアクセスすると自動的に 設定ページが表示される。
Backup Directory Configuration ページ
/var/metacat が正しく作成されていれば、このページはスキップされる かも知れない。
もし表示された場合は、/var/metacat の書き込み権限等を確認して、 フォームの入力欄に “/var/metacat” と入力して、 Save をクリックする。
Authentication Configuration ページ
以下の項目を設定する。他の項目はそのままにする。
項目 設定 Authentication URL ldap://localhost:389/ Authentication Secure URL ldap://localhost:389/ Authentication Base dc=mydomain,dc=tld Metacat Administrators uid=mcadmin,dc=mydomain,dc=tld Administrator Login ページ
ldappasswd コマンド実行時に表示されたパスワードを入力する。
Metacat Configuration ページ
“unconfigured” と赤字で表示されている項目を設定して行く。
右端の列の “Configure Now” を上から順番にクリックする。
各リンク先のページの設定は以下の通り。
Metacat Properties Configuration ページ
以下の項目を設定する。他の項目はそのままで良い。
項目 設定 Database Username ここでは mcpguser Database Password ここでは mcpgpass Server Name OSのネットワーク設定に基づき適切に設定する Database Install/Upgrade Utility ページ
“Continue” をクリック
Geoserver Configuration
何も変更せずに Update をクリック
DataONE Configuration
“Enable DataONE Service” のチェックを外して “Bypass” をクリック
すべての項目が “configured” か “bypassed” に変わっていれば 設定完了。
Metacat の微調整¶
日本語検索用フィルタの追加
/usr/local/apache-tomcat-6.0/webapps/metacat/WEB-INF/web.xml の <web-app> タグの直下に以下を追加する。
<filter-mapping> <filter-name>setCharacterEncodingFilter</filter-name> <url-pattern>/metacat</url-pattern> </filter-mapping>
geoserver 用の設定が一部おかしいので修正する。 修正するファイルは /usr/local/apache-tomcat-6.0/webapps/metacat/style/common/spatial/map.js。
--- map.js.orig 2014-02-14 16:01:44.000000000 +0900 +++ map.js 2014-02-14 16:01:58.000000000 +0900 @@ -33,7 +33,7 @@ // {layers: 'Bathymetry,Countries,Topography,Hillshading,Coastlines,Waterbodies,Inundated,Rivers,Streams,Builtup+areas,Railroads,Highways,Roads,Trails,Borders,Cities,Settlements,Airports'} ); //map.addLayers([demis, ol_wms, world_borders, metacat_points, metacat_bounds]); - map.addLayers([ol_wms, world_borders, metacat_points, metacat_bounds]); + map.addLayers([world_borders, metacat_points, metacat_bounds]); // perhaps a skin has added more layers if (additionalLayers) {
tomcat を再起動する。
# service tomcat6 restart
確認¶
http://hostname/metacat/ にアクセスして、Metacat のトップページが 表示されるかどうか確認する。