將 Sun ONE Application Server 作為 Solaris 安裝的一部分來安裝時,會有數個問題與 Application Server 啟動相關:
在 Solaris 系統啟動時,所有應用程式伺服器實例與管理伺服器實例都會自動啟動。 在許多環境中,並非所有實例均應在 Solaris 系統啟動時自動啟動。 啟動所有定義的實例會對系統中可用的記憶體產生不良影響。
在應用程式伺服器實例與管理伺服器實例自動啟動時,系統會以超級使用者的身份執行每個實例的啟動程序檔。 執行非超級使用者所有的實例啟動程序檔可以透過修改實例層啟動程序檔,將超級使用者存取權授與非超級使用者。
在安裝 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 系統啟動時啟動。 由於系統啟動與關閉程序檔是以超級使用者的身份來執行的,因此每個應用程式伺服器與管理伺服器實例的啟動程序檔也會以超級使用者的身份來執行。 實例層啟動程序檔名為 startserv,位於 instance-dir/bin/startserv 中。 由於實例可以由超級使用者以外的使用者所有,因此非超級使用者可以修改 startserv 程序檔,以超級使用者的身份執行指令。
如果某個實例使用的是特權網路通訊埠,則必須以超級使用者的身份來執行此實例的 startserv 程序檔。 然而,通常會在實例配置中設定以使用者身份運行, 以迫使實例在由超級使用者進行初始啟動後以特定使用者的身份來運行。
解決方法:根據您的環境,執行以下解決方法之一:
如果環境不要求所有應用程式伺服器實例與管理伺服器實例以超級使用者的身份來啟動,則可在 /etc/init.d/appserv 程序檔中將 asadmin start-appserv 與 asadmin stop-appserv 指令的執行變更為註釋。
如果環境要求在一個或多個管理網域中啟動特定管理網域或特定實例,您可以修改或建立程序檔以自動執行該程序。 請注意,特定管理網域包含每個網域的管理伺服器實例與所有應用程式伺服器實例。
請執行以下其中一個步驟︰
修改 /etc/init.d/appserv 程序檔以啟動相關網域或實例。
定義符合環境需要的新 /etc/rc*.d/ 程序檔。
啟動注意事項:當修改 Solaris 軟體啟動程序檔以自動啟動特定應用程式伺服器管理網域或特定應用程式伺服器實例時,請考量以下內容:
啟動特定網域 – 如果您要以超級使用者的身份啟動特定管理網域的管理伺服器實例與所有應用程式伺服器實例, 請如下所示修改 /etc/rc*.d/ 程序檔:
case "$1" in 'start') /usr/sbin/asadmin start-domain --domain production-domain ;; 'stop') /usr/sbin/asadmin stop-domain --domain production-domain ;;
以非超級使用者身份啟動特定應用程式伺服器實例 – 修改 /etc/rc*.d/ 程序檔以配合使用 su 指令和 -c 選項。
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" ;;
如需有關 startup 和 shutdown 指令 (可透過 asadmin 指令行介面取得) 的更多資訊,請參閱位於 http://docs.sun.com/db/prod/s1.asse 的「Sun ONE Application Server 7 管理員指南」。