tomcat和大多數服務程式的管理不一樣,tomcat更適合使用圖形管理界面進行管理,例如在不停止tomcat的情況下動態部署新的webapp或重新載入webapp。如果不使用圖形管理工具,tomcat雖然也可以配置自動部署(autoDeploy="true"),但我們卻無法掌握它重新部署的時刻。 ...
tomcat和大多數服務程式的管理不一樣,tomcat更適合使用圖形管理界面進行管理,例如在不停止tomcat的情況下動態部署新的webapp或重新載入webapp。如果不使用圖形管理工具,tomcat雖然也可以配置自動部署(autoDeploy="true"),但我們卻無法掌握它重新部署的時刻。
圖形管理工具的官方手冊:Manager App HOW-TO。
直接在瀏覽器中輸入tomcat所在機器的ip地址及其connector監聽埠,即可進入tomcat的圖形管理界面,也是歡迎界面。這個歡迎頁面是tomcat engine中的預設Host組件localhost提供的頁面,該資源的路徑為$catalina_home/webapps/ROOT/index.jsp。
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
這3個按鈕對應的是tomcat預設就安裝好的3個管理工具:狀態查看工具、webapp管理工具(非常重要)和虛擬主機管理工具。其中前2個工具都由名為manager的webapp提供,第三個工具由名為host-manager的webapp提供,因此後文將認為只提供了兩個管理程式:manager和host-manager。它們的路徑都在webapps目錄下。
[root@xuexi tomcat]# ls webapps/
docs examples host-manager manager ROOT
點擊這3個按鈕,分別可以進入對應的管理界面。但第一次點擊,會出現"403 Access denied"錯誤,並提示要去配置conf/tomcat-users.xml,添加相應許可權的角色。
對於這兩個管理程式而言,總共有以下幾種預定義角色:其中後兩項角色是上一圖中"Host Manager"需要的角色。
- manager-gui - allows access to the HTML GUI and the status pages
- manager-script - allows access to the text interface and the status pages
- manager-jmx - allows access to the JMX proxy and the status pages
- manager-status - allows access to the status pages only
- admin-gui - allows access to the HTML GUI
- admin-script - allows access to the text interface
對於使用manager-gui角色的用戶,強烈建議不要再為其賦予manager-script和manager-jmx角色。
這些角色名稱rolename已經預定義在各管理程式內的web.xml中:
[root@xuexi tomcat]# grep 'role-name' webapps/manager/WEB-INF/web.xml
<role-name>manager-gui</role-name>
<role-name>manager-script</role-name>
<role-name>manager-jmx</role-name>
<role-name>manager-gui</role-name>
<role-name>manager-script</role-name>
<role-name>manager-jmx</role-name>
<role-name>manager-status</role-name>
<role-name>manager-gui</role-name>
<role-name>manager-script</role-name>
<role-name>manager-jmx</role-name>
<role-name>manager-status</role-name>
[root@xuexi tomcat]# grep 'role-name' webapps/host-manager/WEB-INF/web.xml
<role-name>admin-script</role-name>
<role-name>admin-gui</role-name>
<role-name>admin-gui</role-name>
<role-name>admin-script</role-name>
因此,在各管理程式的身份驗證文件中可以直接引用這幾個名稱。那麼如何配置身份驗證,使得只有通過驗證的用戶才能使用這些管理工具?根據前面的錯誤頁面提示,只需在$catalina_home/conf/tomcat-user.xml中配置即可。
例如,使用預定義好的角色進行配置。
<user username="malongshuai" password="123456" roles="manager-gui,admin-gui"/>
再重啟tomcat即可。但是,這樣的配置在tomcat 7版本能成功,在tomcat8上不會成功。查看catalina.home下的.RUNING文件,提示如下內容:
For example, the standard manager web application can be kept in
CATALINA_HOME/webapps/manager and loaded into CATALINA_BASE by using
the following trick:
* Copy the CATALINA_HOME/webapps/manager/META-INF/context.xml
file as CATALINA_BASE/conf/Catalina/localhost/manager.xml
* Add docBase attribute as shown below.
The file will look like the following:
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="${catalina.home}/webapps/manager"
antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.0\.0\.1" />
</Context>
它要求我們將CATALINA_HOME/webapps/manager/META-INF/context.xml複製到CATALINA_BASE/conf/Catalina/localhost/manager.xml,並修改其內容。既然知道了操作過程,所以在tomcat 8中也就不用去複製了,這裡直接創建文件並向裡面寫入內容即可,註意文件名一定不能錯誤。
[root@xuexi tomcat]# mkdir -p conf/Catalina/localhost
[root@xuexi tomcat]# cat conf/Catalina/localhost/manager.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="${catalina.home}/webapps/manager"
antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="^.*$" />
</Context>
此處allow定義的是允許所有主機訪問此管理狀態頁面。還可以使用allow="127\.0\.0\.1"
定義只有本機才能訪問,allow="192\.168\.100.*"
定義只有192.168.100網段的主機才能訪問。
定義了manager.xml文件後,也僅能訪問前兩個頁面,因為前兩個頁面是manager程式提供的,訪問時需要在uri中使用/manager,或直接點擊上面的按鈕。以下是管理webapp的圖形管理工具頁面,從圖中可以看出,可以輕鬆管理某個webapp的啟動、停止、部署、重新部署、部署本地項目等。
第三個頁面是管理虛擬主機的圖形頁面,訪問時的uri部分是/host-manager。但要使用它,也需要將context.xml複製到特定路徑下,並修改一點內容。如下:
[root@xuexi tomcat]# cp conf/Catalina/localhost/manager.xml conf/Catalina/localhost/host-manager.xml
[root@xuexi tomcat]# sed -i s/manager/host-manager/ conf/Catalina/localhost/host-manager.xml
下圖是虛擬主機的管理頁面。
以上是將文件manager.xml或host-manager.xml複製到CATALINA_BASE/conf/Catalina/localhost/下,這是管理所有虛擬主機,如果想要單獨管理某虛擬主機,則可以將文件按照$CATALINA_BASE/conf/[enginename]/[hostname]
路徑進行複製。
回到Linux系列文章大綱:http://www.cnblogs.com/f-ck-need-u/p/7048359.html
回到網站架構系列文章大綱:http://www.cnblogs.com/f-ck-need-u/p/7576137.html
回到資料庫系列文章大綱:http://www.cnblogs.com/f-ck-need-u/p/7586194.html
轉載請註明出處:http://www.cnblogs.com/f-ck-need-u/p/8409723.html
註:若您覺得這篇文章還不錯請點擊右下角推薦,您的支持能激發作者更大的寫作熱情,非常感謝!