Tomcat系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.htmlhtml
tomcat和大多數服務程序的管理不同,tomcat更適合使用圖形管理界面進行管理,例如在不中止tomcat的狀況下動態部署新的webapp或從新加載webapp。若是不使用圖形管理工具,tomcat雖然也能夠配置自動部署(autoDeploy="true"),但咱們卻沒法掌握它從新部署的時刻。java
圖形管理工具的官方手冊:Manager App HOW-TO。web
直接在瀏覽器中輸入tomcat所在機器的ip地址及其connector監聽端口,便可進入tomcat的圖形管理界面,也是歡迎界面。這個歡迎頁面是tomcat engine中的默認Host組件localhost提供的頁面,該資源的路徑爲$catalina_home/webapps/ROOT/index.jsp。apache
<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,添加相應權限的角色。tomcat
對於這兩個管理程序而言,總共有如下幾種預約義角色:其中後兩項角色是上一圖中"Host Manager"須要的角色。bash
對於使用manager-gui角色的用戶,強烈建議不要再爲其賦予manager-script和manager-jmx角色。app
這些角色名稱rolename已經預約義在各管理程序內的web.xml中:webapp
[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中配置便可。jsp
例如,使用預約義好的角色進行配置。
<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]
路徑進行復制。