2008年 11月 27日 木曜日
今回は、JavaES 5 Update 1 の Access Manager (バージョン 7.1) を Solaris 10 Update 6 (Solaris 10 の最新のアップデートリリース) 上で、Glassfish に配備する際に注意すべきことについて書きたいと思います。
説明のために、具体的なシナリオとして、以下のような手順でインストール、設定、配備を行うことにします。
# mkdir /export/DSEE # cp DSEE.6.3.Solaris10-X86_AMD64-full.tar.gz /export/DSEE # cat DSEE.6.3.Solaris10-X86_AMD64-full.tar.gz | gunzip | tar xf -解凍後は、このような感じになっているはずです。
# ls /export/DSEE DSEE_Directory_Editor DSEE_Identity_Synchronization_for_Windows DSEE_ZIP_Distribution LICENSE.txt Legal README.txt #DSEE 6.3 をインストールします。(ここでは、Directory Editor と Identity Sync 以外の全てのコンポーネントをインストールします。)
# cd DSEE_ZIP_Distribution/ # ./dsee_deploy install -i /opt/dsee63 英語のライセンステキストが表示されるので、最後まで表示されるまでリターンキーを押し、 Do you accept the license terms ?これで、/opt/dsee63 に、DSEE6.3に含まれているディレクトリサーバーなどがインストールされました。 Access Manager の配備用に、インスタンスの作成、起動およびサフィックスの作成を済ませておきます。: に対して、「yes」と入力。
# cd /opt/dsee63 # ./dsadm create /export/dsins1 # ./dsadm start /export/dsins1 # ./dsconf create-suffix dc=example,dc=com # ./dsconf import /opt/dsee63/ds6/ldif/Example.ldif dc=example,dc=com(ここでは念のため、空のサフィックス dc=example,dc=com を作ったあとに、Example.ldif をインポートしています。)
: : Creating the agent security materials in /etc/opt/SUNWmfwk/config/security Cannot find property: [cacao.embedded]. Cannot find property: [cacao.embedded]. Cannot find property: [cacao.embedded]. Cannot find property: [cacao.embedded]. Cannot find property: [cacao.embedded]. Cannot find property: [cacao.embedded]. No Java runtime found. Error : Calling [genkey] Cleaning up config in /etc/opt/SUNWmfwk/config amconfig : Looking for registered module... Cannot find property: [cacao.embedded]. Cannot find property: [cacao.embedded]. Cannot find property: [cacao.embedded]. Cannot find property: [cacao.embedded]. : :先ほど説明しましたように、JavaES 5 U1 によって、Cacao が古いリビジョンに入れ替わってしまってます。そのため、cacaoadm のコマンドが動きません。 試しに、以下のコマンドを実行してみてください。
# cacaoadm status Cannot find property: [cacao.embedded].こんな結果が返ってくるはずです。
# patchadd 123896-05 : (中略) : Patch 123896-05 has been successfully installed. See /var/sadm/patch/123896-05/log for details Patch packages installed: SUNWcacaort #試しにさきほどと同じコマンドを実行してみます。
# cacaoadm status default instance is DISABLED at system startup. default instance is not running.今度はこのようにステータス情報が正しく返ってくるはずです。
amconfig 実行前のファイル:
<parameter>
<param-name>RevisionNumber</param-name>
<param-value>AM_VERSION</param-value>
</parameter>
<!--
The InstalledProduct's Installation Date in milliseconds.
-->
<parameter>
<param-name>InstallDate</param-name>
<param-value>AM_INSTDATE</param-value>
</parameter>
amconfig 実行後のファイル:
-->
<parameter>
<param-name>RevisionNumber</param-name>
<param-value>7.1,REV=06.12.15.12.35</param-value>
</parameter>
<!--
The InstalledProduct's Installation Date in milliseconds.
-->
<parameter>
<param-name>InstallDate</param-name>
<param-value>11月 27 2008 13:36</param-value>
</parameter>
ここで、InstallDate の日付の文字列に「月」という日本語が含まれています。これがちょっとくせものです。
INSTDATE=11月 27 2008 13:36
<?xml version='1.0' encoding='utf-8'?>という風に、"このファイルは UTF-8 エンコーディングで書かれてますよ。" と宣言されています。
Cannot execute command deploy: Invalid byte 1 of 1-byte UTF-8 sequence.
<?xml version='1.0' encoding='eucJP'?>
: : Deploying Node Agent in Cacao from descriptor '/etc/opt/SUNWmfwk/xml/com.sun.mfwk.xml' Registering Node Agent in Cacao from descriptor '/etc/opt/SUNWmfwk/xml/com.sun.mfwk.xml' amconfig : Looking for registered module... amconfig : Registration successful ! amconfig : Restarting cacao. Please wait... amconfig : Restart of cacao was successful ! #
< AS_NSS="/opt/SUNWappserver/lib" > AS_NSS="/usr/lib/mps/secv1:/opt/SUNWappserver/lib"
[#|2008-11-27T15:51:42.027+0900|SEVERE|sun-appserver9.1|javax.enterprise.system.container.web|_ThreadID=10;_ThreadName=main;_RequestID=dd8f3ed3-c2f2-4847-bed0-c89e2003d13a;|WEB0207: 仮想サーバー server で Web コンテキスト StandardEngine[com.sun.appserv].StandardHost[server].StandardContext[/amserver] の起動中にエラーが発生しました LifecycleException: java.lang.UnsatisfiedLinkError: no jss4 in java.library.path
2007年 6月 20日 水曜日
iim_server.conference.history.maxstanzas = 15 iim_server.conference.history.maxstanzas.default = 10
2007年 6月 19日 火曜日 # vi /opt/sun/calendar/config/ics.conf caldb.serveralarms = "1" ←"no" を 1 に変更 caldb.serveralarms.url = "enp:///ics/customalarm" ← コメントはずす caldb.serveralarms.contenttype = "text/calendar"←コメントはずして、"text/xml" を "text/calendar" に変更変更が終わったら、CS を再起動します。
# /opt/sun/calendar/sbin/stop-cal # /opt/sun/calendar/sbin/start-calこれで、準備完了です。次に以下の操作を行います。
2007年 6月 15日 金曜日 changetype: modify add : mailAlternateAddress mailAlternateAddress: imtest1@japan.sun.com mailAlternateAddress: imtest1 dn: uid=imtest1,ou=people,o=tgc,dc=japan,dc=sun,dc=com changetype: modify replace : mail mail: imtest1@dione.japan.sun.comこのあと、以下のコマンドを実行して、MS を再起動します。
/opt/sun/messaging/sbin/imsimta cnbuild /opt/sun/messaging/sbin/imsimta restart /opt/sun/messaging/sbin/stop-msg /opt/sun/messaging/sbin/start-msg次に、/opt/sun/im/config/iim.conf ファイルに、次の行を追加します。
iim.mail.charset="iso-2022-jp"これは、メールを iso-2022-jp エンコーディングで送信することを意味します。ここには、他のエンコーディングを指定してもかまいません。(何も指定しないと、US-ASCii で送信するため、日本語が文字化けしてしまうので注意してください。)
2007年 6月 14日 木曜日
2007年 6月 13日 水曜日
# cd /opt/sun/comms/dssetup/sbin
# perl comm_dssetup.pl
:
(中略)
:
There are 3 possible schema types:
1 - schema 1 for systems with iMS 5.x data
1.5 - schema 2 compatibility for systems with iMS 5.x data
that has been converted with commdirmig
2 - schema 2 native for systems using Access Manager
Please enter the Schema Type (1, 1.5, 2) [2]: 2
:
基本的に、デフォルトで提示されてるオプションを受け入れていけば、問題なくセットアップが終わります。
cd /opt/sun/messaging/sbin ./configure -nodisplay : (中略) UNIX グループを入力 [mail]: mailgrp : (中略) : ポストマスターのメールアドレスを入力 [] admin@japan.sun.com : (中略) : 組織 DN を入力 [o=japan.sun.com,dc=japan,dc=sun,dc=com] o=tgc,dc=japan,dc=sun,dc=com : ポートがコンフリクトするという旨の warning が出ますが、 これは、MS のデフォルトポートが 80 になっていて、 先にインストールした WS のポートと重複してるためです。 これは、あとで解決することにして、まずは configure による設定を完了させます。完了したら、さきほどのポート番号のコンフリクトの問題を解消します。 ここでは、MS のポートを 8100 に変更します。
# ./configutil -o service.http.port -v 8100 OK SET次に、dcroot を dc=japan,dc=sun,dc=com にセットします。
# ./configutil -o service.dcroot -v dc=japan,dc=sun,dc=com OK SET # ./configutil -o local.webmail.sso.enable -v 1 # ./configutil -o service.http.ipsecurity -v nosendmail も止めます。
/etc/init.d/sendmail stopulimit を 20000 に設定しておきます。(file descriptor 関連のエラー対策)
# ulimit -n 20000最後に、DOMAIN_UPLEVEL を 3 にして、ビルドします。
# echo "DOMAIN_UPLEVEL=3" >> /opt/sun/messaging/config/option.dat # ./imsimta cnbuild # ./imsimta restartこれで、MS の設定は完了です。サーバーを起動します。
# ./start-msgエラーがなく、起動が完了したら、http://host:8100 にアクセスして、admin アカウントでログインしてみてください。
# cd /opt/sun/calendar/sbin # ./csconfigurator.sh -nodisplay : (中略) : カレンダ管理者の電子メールアドレス [root@japan.sun.com]: admin@japan.sun.com : (中略) : ランタイム設定 サービスポート [80] 8103 :セットアップが終わったら、ics.conf 内でいくつか手で修正すべき箇所があるので、それを行います。このファイルは、/etc/opt/sun/calendar/config/ にあります。
修正すべき箇所 service.http.ui.enable = "y" service.dcroot = "dc=japan,dc=sun,dc=com"修正が終わったら、サーバーを起動します。
# ./start-cal確認のため、http://host:8103 に admin アカウントでログインしてみてください。 次のような画面が表示されれば、OK です。
# cd /opt/sun/comms/commcli/sbin
# ./config-commda -nodisplay
:
Access Manager のホスト名とポート番号を入力してください
ホスト名 [dione.japan.sun.com] {"<" 戻る, "!" 終了}:
ポート [8080] {"<" 戻る, "!" 終了}: 80
:
WEB、WEB7、APP7 または APP8 を入力し、web コンテナを指定します (WEB、WEB7、APP7 または APP8) [WEB]
{"<" 戻る, "!" 終了}? WEB7
:
組織 DN を入力 [o=japan.sun.com,dc=japan,dc=sun,dc=com] {"<" 戻る, "!" 終了} o=tgc,dc=japan,dc=sun,dc=com
:
設定が終わったら、WS を再起動します。
# cd /opt/sun/comms/commcli/bin # ./commadmin domain modify -D admin -w admin's password -n japan.sun.com -p 80 -d japan.sun.com -S mail,cal -H hostnameそして、次のコマンドで o=tgc 以下に、テスト用のユーザーを作成します。 ここでは、imtest1, imtest2, imadmin と 3 つのユーザーを作成しておきます。
# ./commadmin user create -D admin -w admin's password -p 80 -d japan.sun.com -F firstname -L lastname -l imtest1 -W imtest1's password -S mail,cal -k legacy -A preferredlanguage:ja -A preferredlocale:ja (imtest2, imadmin も同じようにして作成する)
2007年 6月 08日 金曜日
JavaES 5 からローカライズパッケージは、従来のような日本語パッケージ、ドイツ語パッケージ・・・といった言語単位ではなく、ローカライズ言語一括で一つのパッケージとして提供されるようになりました。
そのため、インストーラでインストールする際に、従来のように、日本語のみを選んでインストールすることはできません。
英語のみをインストールするか、英語+ローカライズ言語すべてをインストールするかの
二者択一となります。
もし、何らかの事情で、英語と日本語以外の他の言語のファイルはじゃまなので削除したい、という場合には、いったんローカライズ言語を一括してインストールしたあとで、
日本語以外のローカライズ言語のファイルを除去する必要があります。
ここでは、一例として、Solaris platform 上で、Access Manager を対象にして
他の言語ファイルを除去する手順を説明します。
DELLANG="de es fr ko zh zh_CN zh_TW zh_HK it sv" export DELLANG
# # for i in $DELLANG; do rm -f mobile_auth_jsps_$i.jar; done
# cd locale # for i in $DELLANG; do rm -f *_$i.properties; done # rm -rf zh zh_* ko ko.UTF-8 ko_* fr fr.UTF-8 fr_FR* es.UTF-8 es es_ES* de de.UTF-8 de_DE*
# cd /opt/SUNWam/web-src # for i in $DELLANG; do rm -rf */com_sun_web_ui/html/$i; rm -rf */html/$i; rm -f */WEB-INF/lib/cc_$i.jar; rm -rf services/config/auth/default_$i; done
# for i in $DELLANG; do rm -f *_$i.properties; done
# for i in $DELLANG; do rm -f *_$i.properties; done
# for i in $DELLANG; do rm -rf docs_$i*; done
# for i in $DELLANG; do rm -f *_$i.xml *_$i.properties; done
# for i in $DELLANG; do rm -f *_$i.xml; done
# for i in $DELLANG; do rm -f *_$i.sxw *_$i.txt; done # rm -f *_zh*.sxw *_cn.txt *_tw.txt
# cp amsamplesilent amsamplesilent.jaonly # chmod 644 amsamplesilent.jaonly
書き換えたり、コメントをはずしたりすることが必要な箇所のみ記載。 DEPLOY_LEVEL=21 SERVER_NAME=eomer.japan.sun.com SERVER_HOST=$SERVER_NAME SERVER_HOST=80 ADMIN_PORT=8989 DS_HOST=eomer.japan.sun.com DS_DIRMGRPASSWD=adminadmin ROOT_SUFFIX="dc=sun,dc=com" ADMINPASSWD=adminadmin AMLDAPUSERPASSWD=admin123 WEB_CONTAINER=WS AM_REALM=disabled (realm mode でインストールしていれば true そうじゃなければ false)
# amconfig -s amsamplesilent.jaonly
# /var/opt/SUNWwbsvr7/https-/bin/stopserv # /var/opt/SUNWwbsvr7/https- /bin/startserv
2007年 2月 22日 木曜日 仕事柄、JES をインストールすることは日常茶飯事なのですが、
ほとんどが、Solaris や Linux が対象プラットフォームでして、
めったに Windows にインストールすることはありません。
(ちなみに、HP-UX へのインストールはしたことないです。マシンがないので^^
しかし、最近、ある用件で、幾度となく Windows 上に JES をインストールする
機会があり、これまで経験してきた Solaris/Linux 上へのインストールと比べると
便利な面、不便な面両方あるなぁと改めて気づきました。
○便利な面。
最小労力ですべて事が進む。
インストール時に自動設定を選んだ場合、製品選択や、管理IDとパスワードの入力を
除けば、何の値も入力することなく、インストーラーが製品のインストールから、
設定まですべてやってくれます。すごい楽チンです(^^)
●不便な面
融通が利かない(苦笑)
たとえば、Access Manager をインストールするのに、
Directory Server は他のマシン上のものを使うからインストールする必要がない場合、
これが、Solaris/Linux の JES インストーラーなら、
製品選択で、Access Manager を選び、Directory Server は選ばずとも、
「今すぐ設定」を選ぶことができ、外部の Directory Server を指定することで、
インストール&設定を済ませることができます。
ところが、Windows 版の場合、自動設定でインストールしたいのなら、
Access Manager を選択した時点で、Directory Server の選択も強要されてしまい、
それがいやなら、手動設定の道をたどるしかないはめになります。。。
別のシナリオとしては、Application Server や Directory Server は
自動設定でインストールしたいが、
Access Manager は、都合により手動設定でインストールしたい場合があるとします。
Solaris/Linux 版なら、最初に Application Server と Directory Server を
「今すぐ設定」でインストールし、もう一度インストーラーを起動して、
今度は Access Manager を「あとで設定」でインストールすることができます。
ところが、Windows 版では、一度「自動設定」でインストールしちゃうと、
次にインストーラーを起動したあときも「自動設定」が強要されてしまいます。
もし、いずれかの製品を手動設定でインストールしたいのなら、
最初からすべての製品を手動設定でインストールしなければならないのです。
逆に、最初に「手動設定」である製品をインストールすると、
次からも「手動設定」でインストールすることになります。。。
Windows 版のインストーラーは、なるべくユーザーに手間隙かけさせない、
入力・選択事項を極力少なくするという設計方針になってるんだとは思いますが、
ここまで徹底されちゃうと、もう少し融通きかせてよと言いたくなっちゃいますね。
JES に大きくかかわってる者として、あまり身内のことをとやかく言うのもなんですが(苦笑)
もうまもなくリリースされる JES release 5 では変わることはないですが、
将来のリリースに向けて、もう少し柔軟性に富んだ動作をしてくれるように、
改善要求でも出しておこうかな・・・・
2006年 2月 04日 土曜日 Access Manager(以下 AM) を2台(もしくはそれ以上の複数)のマシンに配備して、 双方を1つのマシンに配備した Directory Server(以下 DS) とつないで使用する… つまり、DS を共有する形で、AM を複数のマシンに配備したいケースってありますよね。
最近、私もお客さまからのサポートコールで、実際にこのケースにおけるトラブルと 格闘しておりまして、最終的には開発チームからのヘルプなどにより、 無事に配備することができました。 結局は、設定不備が原因であり、いくつかのポイントに注意して設定を行えば 問題なく行えるということがわかりました。そこで、そのときに苦労した経験をもとに、 今後はスムーズに設定、配備が行えるように、実際に行う操作などを細かく書きながら、具体的な手順書を記しておこうと思います。
ここでは、次のような簡単な配備シナリオを想定して、以下話をすすめていきます。
3. 2台目のマシンに コンポーネントをインストールする
4. 2台目のマシンの AM の設定を行う
4.1 amsamplesilent のカスタマイズ
amsamplesilent ファイルには、Access Manager をどこに配備するか、どのマシンの Directory Server と共存させるか、など、設定に必要な情報が色々と書かれています。ここでは、AM を WS に配備することを想定して、ファイルのどこを書き換えればいいかを説明します。 (逆にいえば、ここで触れてないものは、インストール時にデフォルトを選択している限り、現存の値をそのまま使って大丈夫ということです。)
ファイルを上から見ていって、まずは以下のブロックのところを修正していきます。修正する前はこんな風になってるはずです。先頭の # はコメントを意味するので、# をはずします。
#SERVER_NAME=example -> AM を設定するホスト名を書く。 #SERVER_HOST=$SERVER_NAME.sun.com -> 上記ホスト名をFQDN 形式で書く #SERVER_PORT=58080 -> AM の配備コンテナのポート番号 #ADMIN_PORT=4849 -> AM の配備コンテナの管理ポート番号 #DS_HOST=example.sun.com -> DS のホスト名(FQDN形式) #DS_DIRMGRPASSWD=11111111 -> DS の admin パスワード #ROOT_SUFFIX="dc=sun,dc=com" -> DS のルートサフィックス #ADMINPASSWD=11111111 -> AM の amadmin のパスワード #AMLDAPUSERPASSWD=00000000 -> amldapuser のパスワード #COOKIE_DOMAIN=.sun.com -> クッキードメイン。 (1台目のマシンに、AM をインストールした際に、JES installer の、AM設定画面(4/6) にて設定した値とあわせておけば間違いないでしょう。) #AM_ENC_PWD="" -> 1台目のマシンの AMConfig.properties の am.encryption.pwd の値と同じにする。 #NEW_OWNER=root -> これは、そのままでよい。 #NEW_GROUP=other -> Solaris ならそのまま、Linux なら、root #PAM_SERVICE_NAME=other -> Solaris ならそのまま、Linux なら、password とする。 #WEB_CONTAINER=AS8 -> 配備コンテナを指定。WS なので、WS6 を指定。
たとえばこんな感じになります。
SERVER_NAME=host2 SERVER_HOST=host2.japan.sun.com SERVER_PORT=80 ADMIN_PORT=8888 DS_HOST=host1.japan.sun.com DS_DIRMGRPASSWD=adminadmin ROOT_SUFFIX="dc=japan,dc=sun,dc=com" ADMINPASSWD=adminadmin AMLDAPUSERPASSWD=admin123 COOKIE_DOMAIN=.sun.com AM_ENC_PWD="+DumXHpKF72p4WHSmg+FhqpKNGi4dAYv" NEW_OWNER=root NEW_GROUP=other PAM_SERVICE_NAME=other WEB_CONTAINER=WS6
参考までに、App Server に配備するのなら、こんな風になります。(ポート番号関連と、WEB_CONTAINER の値が変わる)
SERVER_NAME=host2 SERVER_HOST=host2.japan.sun.com SERVER_PORT=8080 ADMIN_PORT=4849 DS_HOST=host1.japan.sun.com DS_DIRMGRPASSWD=adminadmin ROOT_SUFFIX="dc=japan,dc=sun,dc=com" ADMINPASSWD=adminadmin AMLDAPUSERPASSWD=admin123 COOKIE_DOMAIN=.sun.com AM_ENC_PWD="+DumXHpKF72p4WHSmg+FhqpKNGi4dAYv" NEW_OWNER=root NEW_GROUP=other PAM_SERVICE_NAME=other WEB_CONTAINER=AS8
さらに、ファイルを見ていくと、以下の行が目にはいるはずです。
DIRECTORY_MODE=1
"1"は、新しくディレクトリを作成して、AM を設定するときの値です。今回は、すでに host1 に存在するディレクトリデータを共有するわけですから、この値を書き換える必要があります。正しい値は "4" です。
DIRECTORY_MODE=4
さらにファイルを下に見ていくと、以下の行が目にはいるはずです。
AM_REALM=enabled
これは、AM をレルムモードで設定することを意味しています。ここでは、MS などの comms product との互換を考えて、レガシーモードでの設定を想定してますので、この値を "disabled" にします。
AM_REALM=disabled
さらにファイルを下に見ていくと、以下の行が目にはいるはずです。
NEW_INSTANCE=false
注意!: この値は、同一のマシンに、2つ目の(もしくはそれ以降の)AM を設定する場合に "true" とする必要があります。ここでは、host2 には、1つしか AM を設定しませんので、false のままでOkです。(デフォルトが false なので、書き換える必要なし)
最後に、以下のブロックが WS 関連になります。もし、Linux を使用の場合は、WS61_HOME の値のみ /opt/sun/webserver にする必要があります(デフォルトディレクトリにインストールした場合)。その他の値はそのままでOKです。 Solaris を使用の場合は、このブロックは変更の必要はありません。
WS61_INSTANCE=https-$SERVER_HOST WS61_HOME=/opt/SUNWwbsvr WS61_PROTOCOL=$SERVER_PROTOCOL WS61_HOST=$SERVER_HOST WS61_PORT=$SERVER_PORT WS61_ADMINPORT=$ADMIN_PORT WS61_ADMIN="admin"
これで、amsamplesilent を今回の配備シナリオ用に書き換えることができましたので、実際に設定を行います。
4.2 スクリプトを使って、AM を設定する。
amsamplesilent ファイルと同じディレクトリに、amconfig コマンドがあります。引数に、さきほどカスタマイズした amsamplesilent ファイルを指定し(念のため絶対パスで指定して下さい)、設定を実行します。
# ./amconfig -s /opt/SUNWam/bin/amsamplesilent設定が終わったら、WS と AM サーバーを再起動します。これで、すべて完了しました。
Posted by hanaki
( 2月 04日 2006年, 11:14:35 午前 JST )
Permalink
投稿されたコメント [0]