Sun ONE Application Server を Solaris インストールの一部としてインストールした場合、アプリケーションサーバーの起動時に次の問題が考えられます。
Solaris システムの起動時に、アプリケーションサーバーのインスタンスおよび管理サーバーのインスタンスがすべて自動的に開始されます。多くの環境では、Solaris システムの起動時にすべてのインスタンスを自動的に開始することは期待されていません。定義されたインスタンスをすべて開始すると、システムで使用可能なメモリーに悪影響を及ぼす場合があります。
アプリケーションサーバーインスタンスおよび管理サーバーインスタンスを自動的に開始すると、各インスタンスの起動スクリプトが root で実行されます。root 以外のユーザー所有のインスタンス起動スクリプトを実行する際、インスタンスレベルの起動スクリプトを変更することで、root 以外のユーザーによる root ユーザーへのアクセスを可能にできます。
Sun ONE Application Server のインストール時に /etc/init.d/appserv スクリプトおよび /etc/rc*.d/ ディレクトリ内の S84appserv および K05appserv スクリプトへのシンボリックリンクがインストールされます。これらのスクリプトにより、アプリケーションサーバーインストールの一部として定義されたアプリケーションサーバーインスタンスおよび管理サーバーインスタンスすべてが、Solaris システムの起動および停止時に自動的に開始および停止されます。
/etc/init.d/appserv スクリプトには、次のコードが含まれます。
case "$1" in 'start') /usr/sbin/asadmin start-appserv ;; 'stop') /usr/sbin/asadmin stop-appserv ;;
asadmin start-appserv コマンドを実行すると、すべての管理ドメインで定義された管理サーバーインスタンスおよびアプリケーションサーバーインスタンスが、Solaris システムの起動時に開始されます。システムの起動スクリプトおよび停止スクリプトは root で実行されるため、各アプリケーションサーバーインスタンスおよび管理サーバーインスタンスの起動スクリプトも root で実行されます。インスタンスレベルの起動スクリプトの名前は startserv で、instance-dir/bin/startserv に存在します。root 以外のユーザーがインスタンスを所有可能であるため、コマンドを root ユーザーで実行するように、root 以外のユーザーが startserv スクリプトを変更できます。
インスタンスで特権設定されたネットワークポートが使用される場合、インスタンスの startserv スクリプトを root で実行する必要があります。ただし、一般的には、インスタンスの構成内で run as user (実行するユーザー) を設定します。これは、root ユーザーによるインスタンスの初回起動後に、指定されたユーザーでインスタンスが実行されるようにするためです。
回避方法: 環境に応じて、次のいずれかを実行します。
すべてのアプリケーションサーバーインスタンスおよび管理サーバーインスタンスを root で開始する必要がない環境では、/etc/init.d/appserv スクリプトの asadmin start-appserv コマンドおよび asadmin stop-appserv コマンドの実行をコメントにします。
特定の管理ドメイン、または 1 つ以上の管理ドメイン内の特定のインスタンスを開始する必要のある環境では、スクリプトを変更または作成してこの処理を自動化できます。ここで言う「特定の管理ドメイン」には、各ドメイン内の管理サーバーインスタンスおよびすべてのアプリケーションサーバーインスタンスが含まれます。
該当するドメインまたはインスタンスを開始するように /etc/init.d/appserv スクリプトを変更します。
使用する環境の要件を満たす /etc/rc*.d/ スクリプトを新しく定義します。
起動時の考慮事項: 指定したアプリケーションサーバー管理ドメインまたはアプリケーションサーバーインスタンスが自動的に開始されるように、Solaris ソフトウェアの起動スクリプトを変更する場合、以下を考慮してください。
特定のドメインを開始する – 管理サーバーインスタンスおよび特定の管理ドメインのすべてのアプリケーションサーバーインスタンスを rootユーザーで開始するには、/etc/rc*.d/ スクリプトを次のように変更します。
case "$1" in 'start') /usr/sbin/asadmin start-domain --domain production-domain ;; 'stop') /usr/sbin/asadmin stop-domain --domain production-domain ;;
特定のアプリケーションサーバーインスタンスを root 以外のユーザーで開始する – -c オプションを指定して su コマンドを実行するように /etc/rc*.d/ スクリプトを変更します。
case "$1" in 'start') su - usera -c "/usr/sbin/asadmin start-instance --domain test-domain instance-a" su - userb -c "/usr/sbin/asadmin start-instance --domain test-domain instance-b" ;; 'stop') su - usera -c "/usr/sbin/asadmin stop-instance --domain test-domain instance-a" su - userb -c "/usr/sbin/asadmin stop-instance --domain test-domain instance-b" ;;
asadmin コマンド行インタフェースで使用可能な startup コマンドおよび shutdown コマンドの詳細は、『Sun ONE Application Server 7 管理者ガイド』を参照してください。