============================================ 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 @@ - ----------------------- 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 の タグの直下に以下を追加する。 :: setCharacterEncodingFilter /metacat * 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 のトップページが 表示されるかどうか確認する。