Qinhua Wang, 諮詢軟體工程師 Leigh Williamson, WebSphere 系統管理構架師
2005 年 6 月 設定文件(profile)這一新概念的引進,使得管理 IBM®WebSphere® Application Server 變得更加簡單。在 IBM WebSphere 開發者技術期刊上有一系列關於 WebSphere Application Server V6 系統管理功能重大改進的文章,作為此系列文章的第三部分,本文將講述系統設定檔。
引言
IBM WebSphere Application Server V6 相比先前的版本 5,在系統管理功能方面有許多重大改進。該系列文章將重點闡述
產品的系統管理功能的改進,每部分都將對某個具體的特性做詳細的闡述。本系列文章講述的內容目前包括:
本系列還將不斷增添新的文章。
什麼是系統設定檔?
WebSphere Application Server V6 引進了系統設定檔概念,目的是將產品二進位檔(binaries)與使用者資料抽離,並使使用者能定義多組使用者資料。
在 WebSphere Application Server 第 6 版之前,產品二進位檔和使用者資料都位於 WebSphere 安裝目錄下:
-
最終使用者流程可以對 WebSphere Application Server 產品二進位檔進行讀取操作,卻不能對其進行修改。
二進位檔只能透過產品維護更新(比如 fix 套件和 ifixes)和其他擴充 WebSphere 平台產品的安裝程式(也可認為是一種類型的產品維護)進行修改。
-
最終使用者擁有使用者資料,並可對其進行寫入的操作。
通常情況下,使用者資料包括系統設定檔、部署的應用程式、日誌檔和臨時工作區等,但是並不局限於這些。
之前,產品安裝程式常將產品二進位檔和 WebSphere 預設設定置於安裝目錄下,使用者透過產品提供的各種系統管理工具,自定義設定並部署應用程式。換句話說,之前的產品二進位檔和使用者資料混在一起,並只有一組使用者資料可以透過特定的 WebSphere 安裝來定義。
而另一方面,系統設定檔可以獲取磁片上的一組使用者資料和相關的執行時執行環境:WebSphere Application Server V6 系統設定檔由該檔案集合組成,該檔案集合由最終使用者所有,並且最終使用者可以對檔案集合進行寫入的操作,且該流程以最終使用者的身份執行。
在 UNIX® 和 Linux® 系統上,已建立的系統設定檔中所有檔案和目錄的組和所有者許可權都與執行實用程式來建立這個系統設定檔的使用者相同。可以認為 WebSphere 系統設定檔是"使用者資料分區",等同於 UNIX/Linux 作業系統環境中使用者的主目錄。
WebSphere Application Server V6 產品安裝程式將建立的檔案分別放在兩個隔開的環境中:一個用於安裝產品二進位檔,另一個用於建立初始系統設定檔。建立初始系統設定檔的位置與產品二進位檔安裝位置是分開的,且最終使用者可以對其進行設定。使用者還可以在安裝完成之後建立其他系統設定檔。所有透過 WebSphere Application Server 安裝建立的系統設定檔共用相同的產品二進位檔,且這些產品二進位檔是不能修改的。
V6 系統設定檔與 V5 實例的聯繫
如果您在之前使用過 wsinstance 實用程式,就會對系統設定檔的概念多少有些熟悉。在 WebSphere Application Server V5.1 中引入的 wsinstance 實用程式,使用者可以用其建立產品安裝的多個設定實例。系統設定檔是對該功能的擴充、增強和替換。
雖然看起來有些類似,這兩種功能之間還是有很多重要的區別:
- 版本 6 不支援初始的預設設定和產品二進位檔目錄混合。WebSphere Application Server V6 所有的操作環境都透過系統設定檔描述,且建立初始系統設定檔和之後建立所有系統設定檔的邏輯相同。
- 在版本 5 中,初始產品安裝會產生幾個目錄:直接位於安裝根目錄下的 config 目錄、logs 和 tranlog 目錄、temp 和 wstemp 目錄,這是最初的使用者區域,並且是 lib、java、bin 和 classes 目錄的同級目錄。雖然這符合邏輯,但當使用者建立存放系統檔案的唯讀檔,並同時為設定和生產執行時維護對這些檔案的讀和寫的能力時,這種結構會給使用者造成困難。版本 6 將產品二進位檔和所有的使用者資料實例進行明確的分離,並封裝在一個或是多個系統設定檔中。
- 系統設定檔特性還提供系統設定檔管理工具,該工具和其他所有系統管理工具整合在一起,使其比 wsinstance 實用程式更加成熟和完善。
建立您的第一個設定文件
 |
在安裝之後建立您的第一個系統設定檔
如果在產品安裝時沒有建立您的第一個系統設定檔,那麼您可以直接使用 PCT 工具在產品安裝之後進行建立。該工具是位於 <WAS_INSTALL_DIRECTORY>/bin/ProfileCreator 目錄中名為 pct<platform> 的可執行檔;例如,在 Windows®平台上可執行檔將稱為 pctwindows.exe。您也可以用它來建立多個系統設定檔。 |
|
在上文提到,WebSphere Application Server 安裝程式將所有的產品二進位檔置於使用者指定的安裝目錄下。安裝程式呼叫 GUI 系統設定檔建立工具(PCT)來建立初始設定文件。PCT 精靈將幫助您建立初始系統設定檔。
圖 1 是 PCT 工具的螢幕截圖。該圖中展示系統設定檔的名稱、系統設定檔所在的目錄、節點名稱、主機名稱以及其他相關資訊。該工具還為系統設定檔提供一組預設埠,必要時可以對其進行修改;預設埠不能分配給同一台伺服器上 WebSphere Application Server 已經在使用的系統設定檔,以避免和其他任何埠衝突。該工具也不提供 WebSphere Application Server 之外的服務所使用的埠。
圖 1. 設定文件建立工具
在預設情況下,建立的系統設定檔位於 <WAS_INSTALL_DIRECTORY>/profiles/<PROFILE_NAME> 目錄下,您還可以在 PCT 提示時自定義系統設定檔的位置。系統設定檔可以位於檔系統中的任何位置,只要最終使用者擁有在該位置建立目錄和檔的足夠許可權。
如果正在使用 WebSphere Application Server Network Deployment(ND),您還將收到提示,選擇預先定義的三種系統設定檔類型中的一種。其中兩種類型都只可用於 ND 環境。(我們將在稍後描述如何使用這類設定文件類型建立 ND 環境)。
|
設定文件類型
|
定義
| |
Application Server
| 為 WebSphere Application Server、WebSphere Application Server Express 和 WebSphere Application Server Network Deployment 定義獨立的應用伺服器環境。該系統設定檔包含預設的應用伺服器定義。 | |
部署管理器
| 定義部署管理器環境。該設定文件類型包含預設的管理器定義,且只可用於 WebSphere Application Server ND。 | |
自定義
| 定義一個不包含應用程式定義的空管理節點。在建立系統設定檔時,系統設定檔建立工具將為您提供一個選項,將已建立的自定義系統設定檔自動與作為管理節點的部署管理器相連,這樣使用者可以在節點上加入資源和自定義的伺服器定義。 |
使用 WebSphere 系統設定檔
要使用之前建立的系統設定檔,需要呼叫 <PROFILE_DIRECTORY>/bin 目錄中提供的命令。該目錄中的命令和 <WAS_INSTALL_DIRECTORY>/bin 目錄中的命令名稱相同。如果之前您使用的是 WebSphere Applation Server V5 產品,對這些命令就並不陌生了。可以按照以前在 V5 中的方法使用 <PROFILE_DIRECTORY>/bin 目錄下的命令。唯一的區別是這些命令只能在這個指定的系統設定檔上使用。例如,要在 Windows 上啟動透過這個系統設定檔定義的應用伺服器,您可以使用 startServer 命令:
<PROFILE_DIRECTORY>\bin\startServer.bat server1
|
同樣,如果想停止使用伺服器,您可以使用 stopServer 命令:
<PROFILE_DIRECTORY>\bin\stopServer.bat server1
|
(參見 WebSphere Application Server 資訊中心 獲取這些命令的更多詳細內容)。
透過管理控制台啟動伺服器以及安裝在該伺服器上的應用程式之後,您可能還不知道日誌檔和安裝的應用程式在哪。要回答這些問題,我們可以先檢查該系統設定檔的目錄結構:在系統設定檔目錄下您可以看見除了 bin 子目錄之外的其他子目錄的清單。該表格詳細描述了這些子目錄及其內容:
|
子目錄
|
內容
| |
bin
| 該組命令可以在建立的系統設定檔上使用。這些命令和 <WAS_INSTALL_DIRECTORY>/bin 目錄下的命令名稱相同,但是只能在這個系統設定檔上使用。 | |
config
| 用於 WebSphere Application Server 流程(借助於這個系統設定檔而執行)的一組設定文件。如果該系統設定檔是部署管理器系統設定檔,那麼它將包含整個單元的設定文件。其中還可能包含與該部署管理器相連的其他系統設定檔的設定。 | |
databases
| Cloudscape® 資料庫。 | |
etc
| 密鑰檔和憑證(至少包括與產品捆綁的初始密鑰檔和憑證)。 | |
installableApps
| 可安裝應用程式的預設位置。 | |
installedApps
| 已安裝並擴充的應用程式二進位檔 | |
installedConnectors
| 已安裝的 JCA Resource Adapter 庫。 | |
logs
| 所有類型的日誌檔,例如 SystemOut.log、tranlog、FFDC、activity.log 等等。 | |
properties
| 各種屬性檔,其中包含 V5 中相同的屬性檔,但這些屬性檔只適用與當前系統設定檔。 | |
temp
| 臨時工作目錄 | |
tranlog
| 預設事務日誌目錄。 | |
wstemp
| 設定修改的臨時工作區。如在版本 5 中一樣,在使用者決定將設定更改保存到設定儲存庫之前,系統設定檔上的設定修改將在臨時工作區進行。在修改被保存之前,該目錄將保存對當前系統設定檔的臨時設定修改。 |
這些子目錄將獲取系統設定檔實例的全部內容。當最終使用者啟用定義在系統設定檔 bin 目錄下的任意命令時,所啟用的流程只修改該系統設定檔的使用者資料,並不會更改其他系統設定檔實例的任何產品二進位檔或是使用者資料。
用系統設定檔設定 Network Deployment 環境
在 WebSphere Application Server V5 中,建立 Network Deployment 環境需要執行多個步驟。為了便於比較,現在將大致的步驟介紹如下:
- 設定部署管理器,該步驟將在安裝 WebSphere Application Server ND 產品流程中完成。
- 啟動部署管理器。
- 設定節點,該步驟透過在相同或是不同的主機上安裝 WebSphere Application Server 產品來完成。當節點在同一個主機上時,安裝目錄應該不同於部署管理器的安裝目錄,這是因為它們是兩個不同的產品安裝。換而言之,部署管理器和節點不能共用相同的產品二進位檔,即使兩者區別甚微。
- 透過
addNode 命令將節點和部署管理器相連。該步驟將建立基本 ND 環境,且使該節點作為 ND 環境的組成部分。
- 之後,您可以迭代步驟 3 和步驟 4 來加入其他節點,自定義設定,已經將應用程式部署至 Network Deployment 環境中。
在 WebSphere Application Server V6 中,設定 ND 環境的基礎步驟大致相同,但是透過系統設定檔的支援將更加的有效和方便。要建立部署管理器,您需要在之前安裝 WebSphere Application Server ND。然後:
- 啟用前面描述的 PCT 工具。
- 在 PCT 精靈的第一步,選擇系統設定檔類型。選擇部署管理器系統設定檔類型,剩下的步驟按照與 V5 中相同的步驟進行。
- 請注意該部署管理器系統設定檔使用的埠,因為之後您將需要該埠數,加入其他節點至部署管理器。既然您正在建立新的系統設定檔,在之前的部分介紹的內容在此都是適用的。
- 要啟用已建立的部署管理器,轉至 <DMGR_PROFILE_DIRECTORY>/bin 子目錄並執行
startManager 命令。例如,在 Windows 平台上,您可以執行
<DMGR_PROFILE_DIRECTORY>\bin\startManager.bat
|
命令。
在版本 5 中,WebSphere Application Server ND 只建立部署管理器,而 WebSphere Application Server Base 或 Express 建立節點。在版本 6 中,ND 可以建立部署管理器和應用程式伺服器,無需其他的安裝程式。在版本 6 中,您可以使用相同的產品安裝,建立同一個系統設定檔類型(或是不同系統設定檔類型)的多個實例。這樣,您可以在部署管理器節點和其他節點之間共用產品二進位檔。那麼,建立節點最經濟的方式就是再次啟用 PCT 工具,用應用伺服器類型來建立應用伺服器系統設定檔,然後執行 addNode 命令將新的節點聯結到部署管理器設定文件。
還有要注意的事項是,您還需要呼叫節點系統設定檔 bin 目錄下的 addNode 命令,比如 <NODE_PROFILE_DIRECTORY>\bin\addNode.bat。如果您執行 <INSTALL_DIRECTORY>/bin 目錄下的命令,結果可能會出乎您的預料。接下來,我們將具體的描述在相同安裝目錄下有多個系統設定檔時,如何適當地呼叫 <INSTALL_DIRECTORY>/bin 目錄下的 addNode 命令。
如果不想在節點和部署管理器之間共用產品二進位檔,或是需要從另一台主機加入節點,那麼您還可以在其他產品安裝中建立節點。您只要首先安裝 WebSphere Application Server ND,按照以上針對版本 6 中所描述的步驟進行就可以實現。
除了自定義系統設定檔類型不包含任何伺服器定義之外,它和應用程式伺服器系統設定檔類型十分類似。因此,該系統設定檔類型不能獨立使用,應該在建立以後聯接到 ND 單元。
使您的系統設定檔成為預設系統設定檔
至此,您已經可以設定單個伺服器和 ND 環境,並對系統設定檔有了更深入的了解。但是,如果在大多數情況下,您只在特定的安裝目錄下建立一個系統設定檔,且不想到其他的目錄層呼叫命令,那麼您可以使用預設系統設定檔。
您可以在建立系統設定檔時,將其標記為安裝目錄下的預設系統設定檔,如圖 1 所示。即在 <INSTALL_DIRECTORY>/bin 目錄下呼叫命令時,它們會自動在您定義的預設系統設定檔上執行。這樣您可以更輕鬆的呼叫命令,進而帶來了極大的方便。系統設定檔的所有使用者資料仍保存在系統設定檔目錄下。
然而,在相同安裝目錄中有多個系統設定檔時,即使仍然可以應用預設系統設定檔,但這並不是好辦法。因為在整個產品安裝中只能有一個預設的系統設定檔。如果您再另外標記其他的系統設定檔作為預設檔,那麼該檔將覆蓋最初標記的系統設定檔,原先的設定將被取消。在多個系統設定檔共存時,追蹤哪個檔是預設系統設定檔會導致混亂的情況發生。
使用多個系統設定檔
如果您經常在相同的產品安裝下的多個系統設定檔之間來回切換,您或許將疲於將當前工作目錄從一個系統設定檔位址的 bin 目錄更改到另一個。此時,可以呼叫 <INSTALLATION_DIRECTORY>/bin 目錄下的命令並透過 profileName 選項明確指定進行操作的系統設定檔。
例如,如果想要在 Windows 平台上啟動 myProfile1 系統設定檔定義的伺服器,以及 myProfile2 系統設定檔定義的伺服器,您可以使用以下命令:
<INSTALLATION_DIRECTORY>\bin\startServer.bat server1 -profileName myProfile1
<INSTALLATION_DIRECTORY>\bin\startServer.bat server1 -profileName myProfile2
|
管理設定文件
除 GUI PCT 精靈之外,WebSphere Application Server V6 還為設定文件管理提供了命令列工具,稱為 wasprofile。不僅可以使用 wasprofile 實用程式建立其他的系統設定檔,也可以透過該工具管理產品安裝下的多個系統設定檔。該命令位於 <INSTALLATION_DIRECTORY>/bin 目錄下,您可以在 WebSphere Application Server 資訊中心找到完整的命令參考資訊。還提供了可使用的各種不同樣式和選項的命令範例。命令列中還可以使用幫助選項,如下圖所示:
.\wasprofile.bat -help
The available modes are: create, augment, delete, unaugment,
deleteAll, listProfiles, getName, getPath, validateRegistry,
validateAndUpdateRegistry, help
For detailed help on each mode enter: -<mode> -help. For
example, -create -help.
命令列參數區分大小寫。
|
wasprofile 命令的基本語法為:
.\wasprofile.bat -<mode> -<option> value -<option> value
|
第一個參數通常是樣式。之後的參數是特定於樣式的選項和它們的值。這些選項不分先後順序,所以您可以以任意次序指定。您可以為特定的樣式獲取合適的選項並透過幫助選項了解其語法,該幫助選項適用於任何樣式。例如,要獲取 "create" 樣式的詳細選項,可以使用:
.\wasprofile.bat -create -help
|
您可能經常需要用到的樣式包括:
-
create 建立系統設定檔,功能和系統設定檔建立工具相同。
-
delete刪除某個指定的系統設定檔。
-
deleteAll刪除產品安裝下的所有系統設定檔。
-
listProfiles 列出所有的系統設定檔。
-
getName當給定系統設定檔位置時,獲取該系統設定檔案名。
-
getPath功能和 getName 相反,在給定系統設定檔案名時,獲取該系統設定檔的位置。
如果您感興趣的話,還有其他的樣式:
- WebSphere Application Server 使用註冊表來保持對產品安裝下所有系統設定檔的追蹤。如果 wasprofile 命令的執行發生意外失敗,註冊表有時會以不一致的狀態終止。雖然很少見,但如果您擔心會出現這樣的情況,當系統設定檔註冊表處於一致狀態時,可以使用 validateRegistry 樣式進行檢查。
- 如果 validateRegistry 報告了任何不一致狀況,那麼您可以使用 validateAndUpdateRegistry 樣式來解決。
- 您不會用到的樣式包括 augment 和 unaugment。這些樣式都只被其他的 WebSphere 產品所使用。
當執行 wasprofile 命令時,該命令將日誌檔置於 <INSTALL_DIRECTORY>/logs 目錄中,並通常將其取名為 XXX_<PROFILE_NAME>.log。在<PROFILE_DIRECTORY>/logs 目錄下,您還將找到其他日誌檔。
複製系統設定檔設定
WebSphere Application Server V6 可以在應用伺服器系統設定檔之間複製設定。您可以在相同或是不同的主機環境中的相同或是不同產品安裝下的兩個應用伺服器系統設定檔之間使用該功能。一般而言,您可以使用該功能在不同的平台間複製系統設定檔設定只要您沒有在設定中加入 OS-specific 系統屬性。例外的情況是,如果 z/OS 的設定和分散式平台系統設定檔不相容,那麼您就不能在這些平台之間複製設定。另一個限制是,該性能只對應用伺服器系統設定檔生效,而不能用於 ND 系統設定檔。
要複製系統設定檔設定,您需要:
- 執行 wsadmin 中的
exportWasprofile 命令,將應用伺服器系統設定檔設定匯出到系統設定檔案檔中。例如,下圖所示的命令闡明了如何將當前系統設定檔的設定匯出至系統設定檔案檔 c:\work\myProfile1.car:
wsadmin>$AdminTask exportWasprofile {-archive c:\work\myProfile1.car}
|
- 執行 wsadmin 中的
importWasprofile 命令將該系統設定檔案檔匯入至另一個應用伺服器系統設定檔。如果目標系統設定檔不存在,需要首先建立。要執行 importWasprofile 命令,先啟動目標系統設定檔上的 wsadmin。例如,如果想匯入設定至系統設定檔 myProfile2,先使用
<INSTALL_DIRECTORY>\bin\wsadmin.bat -profileName myProfile2
|
命令啟動 wsadmin。
- 在啟動 wsadmin 後,執行
importWasprofile 命令來匯入該設定。例如,您可以透過 JACL 命令:
wsadmin>$AdminTask importWasprofile {-archive c:\work\myProfile1.car}
|
,來匯入先前匯出的系統設定檔案檔。
importWasprofile 命令可以複製原系統設定檔的全部設定。這些設定包括伺服器設定和部署在伺服器上的應用程式。該命令並不將檔案中的設定與目標系統設定檔合併,而是替換了目標系統設定檔的整個設定。它只描述與現有目標系統設定檔相關的資訊,例如安裝目錄、主機名、伺服器名和埠。該命令只複製 WebSphere Application Server 設定。如果您的應用程式依賴於 WebSphere Application Server 以外的產品(例如資料庫或是訊息傳遞產品),您還需要其他的步驟來複製這些環境。
與其它的 wsadmin 腳本命令一樣,exportWasprofile 和 importWasprofile 命令也在 Jython 中可用。WebSphere Application Server 資訊中心有關於 AdminTask 腳本命令以及以上兩種特定命令的更多資訊。
複製伺服器設定
在 WebSphere Application Server V6 中,您同樣可以在多個系統設定檔之間複製自定義的伺服器設定(無需在其上部署應用程式)。同複製系統設定檔設定般,可以在相同或是不同的主機環境中,不同或是相同的產品安裝下使用該功能。一般而言,只要沒有在伺服器設定中加入 OS-specific 系統屬性,您可以使用該功能在不同的平台之間複製伺服器設定。例外的情況是,如果 z/OS 和分散式平台系統設定檔不相容,那麼您就不能在這些平台之間複製伺服器設定。
。
雖然兩種複製功能之間有雷同之處,但是仍然存在一些區別:
- 當複製設定時,伺服器設定複製不包括部署在伺服器上的應用程式。
- 伺服器設定複製功能對應用伺服器和 ND 系統設定檔同樣有效。
要複製伺服器設定:
- 執行 wsadmin 中的
exportServer 命令,將伺服器設定匯出至系統設定檔案。比如,下圖的命令闡明了如何將當前系統設定檔的設定匯出至 JACL 中的系統設定檔案 c:\work\myServer.car。(當對單個伺服器系統設定檔執行該操作時,無需 nodeName 和 serverName 選項。)
wsadmin>$AdminTask exportServer {-nodeName myNode -serverName myServer -archive c:\work\myServer.car}
|
- 使用 wsadmin 中的
importServer 命令,將該系統設定檔案匯入到另一個系統設定檔。要執行該命令,先啟動目標系統設定檔上的 wsadmin。例如,如果想將伺服器 myServer 的設定匯入到系統設定檔 myProfile2,可以使用
<INSTALL_DIRECTORY>\bin\wsadmin.bat -profileName myProfile2
|
命令來啟動 wsadmin。
- 當啟動 wsadmin 後,執行
importServer 命令來匯入設定。例如,您可以透過以下所示的 JACL 命令將匯出的伺服器設定匯入至 myProfile2 系統設定檔中的名為 anotherNode 的節點。如果沒有使用 serverName 選項,那麼系統設定檔案中的伺服器名稱將被用作匯入的伺服器的名稱。
wsadmin>$AdminTask importServer {-node anotherNode -serverName myNewServer -archive c:\work\myServer.car}
|
importServer 命令可以透過自定義的設定建立新的伺服器,該自定義設定基於檔案中定義的伺服器設定。該命令和覆蓋伺服器設定的 importWasprofile 命令不同。由於對應用伺服器系統設定檔沒有建立新伺服器這項功能,因此雖然您可以在應用伺服器和 ND 系統設定檔上執行 exportServer 命令,但 importServer 命令只可用於 ND 設定文件。
同樣,與其他 wsadmin 腳本一樣,這些命令在 Jython 中同樣有效。參見 WebSphere Application Server 資訊中心獲取更多相關的詳細資訊。
結論
WebSphere Application Server V6 引入了系統設定檔的概念,將產品二進位檔和使用者資料抽離;系統設定檔由一組使用者資料及其執行時執行環境組成。本文描述了如何在基礎應用伺服器以及 Network Deployment(ND)環境中建立、使用和管理系統設定檔,以及如何在系統設定檔之間複製設定的機制。雖然版本 6 的系統設定檔概念是全新的,使用者學習起來會遇到一些困難,但系統設定檔可以讓使用者更有效更靈活地使用 WebSphere 產品,並能更輕鬆和方便的建立 ND 環境。本文試圖幫助讀者解決學習流程中的難點,讓讀者更快地掌握系統設定檔特性並在環境中實現它們。
參考資料
作者簡介  | |
Qinhua Wang 是 IBM 的諮詢軟體工程師,她在德克薩斯州 Austin 市的 WebSphere Application Server 開發機構工作。自開發 WebSphere Application Server Version 3.5 以來,她一直是 WebSphere 系統管理組的最主要開發人員之一。Qinhua Wang 工作重點是 WebSphere 設定。 |
 | |
Leigh Williamson 是 IBM Software Development 實驗室的 Senior Technical Staff Member 軟體工程師,該實驗室位於德克薩斯州的 Austin 市。作為一名 WebSphere Application Server 的系統管理構架師,他目前主管 WebSphere 產品管理性能的改進工作。 |
對本文的評價
|