用Solaris 10的SMF配置Tomcat為自動啟動
一、Solaris10中的SMF簡介
SMF是Service Management Facility 的縮寫,是Sun公司在其Solaris產品中提供的一種管理服務的新特性。3M(Manifest,Method,Milestone)是SMF中的3個主要組成部分。其中Manifest是一個xml檔案,用於定義服務的配置清單,主要包括服務的標識資訊,服務的啟動、停止方法,服務啟動和停止對其它服務或者系統資源的依賴關係等。Method是一個指令碼程式用來負責服務的啟動、停止、重新整理等工作。Milestone事實上與運行層級(run-level)相似。除此之外服務配置倉庫(service configuration repository),profile,快照(Snapshots)也是其很重要的組成部分。那麼SMF與傳統的Unix後台服務管理機制相比較有什麼突出的特點呢?
1、可以恢複由軟體故障、硬體故障、管理錯誤終止的服務
2、服務之間可以定義相互間的依賴關係
3、 它提供了比較全面的基於命令列的管理工具(svcs,svcadm,svccfg...)
4、根據依賴關係可以並發啟動服務,加快系統啟動的速度
5、引入服務配置庫,提供服務配置庫快照、備份、恢複功能
這些功能方便了服務的管理,服務的可用性,可維護性。SMF提供了一定程度的服務自愈性,它也是Solaris 10系統可預測自愈功能(Predictive Self-Healing)的一部分。更多有關SMF 的資訊請訪問http://docs.sun.com/app/docs/doc/817-1985/6mhm8o5rh?a=view。
正是因為SOLARIS10採用了現在SMF方式的後台服務管理機制,使得很多熟悉UNIX的用Run Control (即配置/etc/rcn.xx)指令碼方式來進行服務管理的工程師不瞭解如何在SOLARIS10 中來完成相同的工作。下面將給出一個簡單的例子來說明如何使用SMF來將tomcat作為一個自動啟動的後台服務。
二、將tomcat設定的系統服務
說明:本例中tomcat的安裝目錄是/export/mysoft/tomcat551/,實踐中需要根據實際安裝目錄替換
A.在SMF的manifast下面建立一個用於存放SMF設定檔的目錄。
#mkdir -p /var/svc/manifest/application/server/tomcat
B.Tomcat作為系統服務的設定檔,在A中建立的目錄下面建立一個tomcat.xml檔案,
此檔案內容應該包含如下內如:
<?xml version="1.0"?>
<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
<service_bundle type='manifest' name='Tomcat'>
<service name='application/server/tomcat' type='service' version='1'>
<single_instance />
<dependency
name='filesystem'
grouping='require_all'
restart_on='none'
type='service'>
<service_fmri value='svc:/system/filesystem/local' />
</dependency>
<exec_method
type='method'
name='start'
exec='/export/mysoft/tomcat551/bin/startup.sh'
timeout_seconds='300' />
<exec_method
type='method'
name='stop'
exec='/export/mysoft/tomcat551/bin/stop.sh'
timeout_seconds='300' />
<instance name='default' enabled='true' />
<stability value='Unstable' />
<template>
<common_name>
<loctext xml:lang='C'>Tomcat5.5</loctext>
</common_name>
</template>
</service>
</service_bundle>
C. 驗證並使此佈建服務生效。
#svccfg validate /var/svc/manifest/application/server/tomcat/tomcat.xml
D.將此服務匯入的系統服務倉庫。
#svccfg import /var/svc/manifest/application/server/tomcat/tomcat.xml
E.查看服務
# svcs tomcat
附錄:
A.SMF常用命令
-
命令 |
用途說明 |
其它說明 |
/usr/bin/svcs |
查看服務的狀態 |
用man 命令可以查看更多與這些命令相關的資訊 |
/usr/bin/svcadm |
用於管理服務執行個體 |
/usr/bin/svcprop |
擷取服務的配置屬性 |
/usr/sbin/svccfg |
匯入/匯出和修改服務的配置 |
/usr/sbin/inetadm |
發現並配置inetd控制的服務 |
/usr/sbin/inetconv |
講inetd.conf檔案配置轉換成SMF的 設定檔格式,以便匯入smf |
B.SMF使用到的目錄
-
目錄 |
存放檔案的說明 |
注釋 |
/etc/svc |
存放設定檔 |
|
/etc/svc/volatile |
用於存放服務的日值(在/var被掛載前) |
此目錄掛載於RAM中 |
/lib/svc/bin |
被SMF使用的二進位檔案 |
請不要手工執行這麼目錄下面的二進位檔案 |
/lib/svc/capture |
保留 |
|
/lib/svc/method |
存放一些可以執行的SMF 方法指令碼 |
|
/lib/svc/monitor |
保留,用於監控Method命令 |
|
/lib/svc/seed |
初始的SMF存放“倉庫” |
|
/lib/svc/share |
存放可以被Method指令碼引用的其它指令碼 |
|
/var/svc/log |
用於存放服務的日值檔案(/var被掛載後) |
|
/var/svc/manifests/* |
存放各種類型的配置資訊清單檔 |
建議不要修改Sun提供的系統預設配置資訊清單檔 |
/var/svc/manifests/site |
存放在某種特定情況下才特有的配置 資訊清單檔 |
|
/var/svc/profiles |
存放profile檔案 |
|
參考文檔:
http://docs.sun.com/app/docs/doc/817-1985/6mhm8o5rh?a=view
http://home.arcor.de/bnsmb/public/htdocs/My_Little_SMF_FAQ.html