將 Sun ONE Application Server 作為 Solaris 安裝的一部分來進行安裝時,會有數個問題與 Application Server 啟動相關聯:
在 Solaris 系統啟動時,所有應用程式伺服器實例與管理伺服器實例都會自動啟動。 在許多環境中,並非所有實例均應在 Solaris 系統啟動時自動啟動。 啟動所有定義的實例會影響系統中可用的記憶體。
在應用程式伺服器實例與管理伺服器實例自動啟動時,會以 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 使用者可以修改 startserv 程序檔,以 root 使用者的身份執行指令。
如果某個實例使用的是特權網路連接埠,則必須以 root 使用者的身份來執行此實例的 startserv 程序檔。 然而,通常會在實例配置中設定 run as user, 以迫使實例在由 root使用者進行初始啟動後以特定使用者的身份來執行。
解決方法:依據您的環境,執行以下其中一種解決方法:
如果環境不要求所有應用程式伺服器與管理伺服器實例以 root 使用者的身份來啟動,則可在 /etc/init.d/appserv 程序檔中將 asadmin start-appserv 與 asadmin stop-appserv 指令變更為註釋。
如果環境要求在一個或多個管理網域中啟動特定管理網域或特定實例,您可以修改或建立程序檔以自動執行該程序。 請注意,特定管理網域包含每個網域的管理伺服器實例與所有應用程式伺服器實例。
修改 /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 使用者身份啟動特定應用程式伺服器實例 – 修改 /etc/rc*.d/ 程序檔以使用帶有- c 選項的 su 指令。
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" ;;
請參閱「Sun ONE Application Server 7 Administrator's Guide」,以取得有關 startup 和 shutdown 指令 (可透過 asadmin 指令行介面使用) 的更多資訊。