大概是這學期開學沒多久吧,4月份的時候,爲了學習javaEE,裝了Tomcat。過了這麼久早就忘記用戶名和密碼了,因此沒法進入Tomcat的管理界面。百度(其實我也很想用google)了一堆,幾乎都是修改用戶配置文件,多是版本的差別,對於我這個版本都沒有太大用處。其實只要按照tomcat的提示一步步去作就能夠解決,前提是英語基礎要好,其實技術文章比文學做品和四級考試好懂多了,語言很直白,歷來不拐彎抹角。html
下面是解決這個問題的步驟:java
1、找到Tomcat配置文件的位置,修改tomcat-users.xmllinux
個人配置文件在D:\Program Files\Apache Software Foundation\Tomcat 8.0\conf。在這個目錄下存放了全部有關Tomcat的配置文件,包括 content.xml,server.xml,web.xml,tomcat-users.xml,每一個配置文件都有本身的做用,咱們須要修改的是跟用戶相關的tomcat-users.xml。web
打開tomcat-users.xml配置文件(我省略了部分註釋):apache
1 <?xml version='1.0' encoding='cp936'?>
2 <tomcat-users xmlns="http://tomcat.apache.org/xml"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
5 version="1.0">
6 <!--
7 NOTE: By default, no user is included in the "manager-gui" role required 8 to operate the "/manager/html" web application. If you wish to use this app, 9 you must define such a user - the username and password are arbitrary. 10 -->
11 <!--
12 NOTE: The sample user and role entries below are wrapped in a comment 13 and thus are ignored when reading this file. Do not forget to remove 14 <!.. ..> that surrounds them. 15 -->
16 <role rolename="tomcat"/>
17 <role rolename="role1"/>
18 <user username="tomcat" password="tomcat" roles="tomcat"/>
19 <user username="both" password="tomcat" roles="tomcat,role1"/>
20 <user username="role1" password="tomcat" roles="role1"/>
21 </tomcat-users>
配置文件裏7-11行的註釋說的很清楚:默認狀況下沒有用戶包括在能夠操做"/manager/html"頁面的"manager-gui"的角色中,若是你想開啓這種應用,你能夠定義一個這樣的用戶,用戶名和密碼隨意。因而我添加了幾行代碼,修改後的配置文件是這樣的:瀏覽器
1 <?xml version='1.0' encoding='cp936'?> 2 <tomcat-users xmlns="http://tomcat.apache.org/xml" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd" 5 version="1.0"> 6 <!-- 7 NOTE: By default, no user is included in the "manager-gui" role required 8 to operate the "/manager/html" web application. If you wish to use this app, 9 you must define such a user - the username and password are arbitrary. 10 --> 11 <!-- 12 NOTE: The sample user and role entries below are wrapped in a comment 13 and thus are ignored when reading this file. Do not forget to remove 14 <!.. ..> that surrounds them. 15 --> 16 <role rolename="tomcat"/> 17 <role rolename="role1"/> 18 <user username="tomcat" password="tomcat" roles="tomcat"/> 19 <user username="both" password="tomcat" roles="tomcat,role1"/> 20 <user username="role1" password="tomcat" roles="role1"/>
21 <role rolename="manager-gui"/> 22 <user username="admin" password="admin" roles="admin-gui"/> 23 </tomcat-users>
添加了 <role rolename="manager-gui"/> <user username="admin" password="admin" roles="manager-gui"/> 這兩行代碼後就添加了一個角色manager-gui,而且添加了一個用戶,用戶名是admin,密碼是admin,角色是manager-gui,記得修改完後要Ctrl+S保存一下。
tomcat
2、重啓Tomcatapp
命令行怎麼重啓我還不太清楚,之後轉移到linux平臺的時候更多的確定仍是用命令行,姑且先用圖形化工具吧。不過它好像沒提供restart選項,我只好先stop service,再start。從新啓動的時候,tomcat會從新讀取xml配置文件,這時剛纔具備管理員權限的用戶就被添加進去了。在瀏覽器輸入192.168.1.106:8080,瀏覽器會訪問默認頁面工具
在這個頁面的右辺有3個按鈕,咱們剛纔的配置只會對第1個和第2個按鈕起做用,點擊這兩個button,輸入用戶名和密碼就能夠訪問/manage/html 和/manage/status頁面了學習
3、遇到的新問題
然而若是點擊第1個或者第3個按鈕,就會出現下面的狀況:
在這個報錯頁面裏已經給出了詳細的解決方案,若是英文水平還能夠而且願意靜下心來看一看,就知道怎麼解決這個問題了。剛纔咱們添加了一個manager-gui的角色,而且添加了一個具備這種角色相應權限的用戶。此次咱們只須要再添加一個admin-gui角色,並添加這樣一個屬於這種角色的用戶就能夠了。我在原來的配置文件裏又添加了39,40兩行代碼:
修改後保存,此次,重啓Tomcat,就能夠訪問原來403禁止訪問的/host-manager/html頁面了
4、最終的解決之道
然而,顧此失彼, 雖然/host-manager/html頁面能夠訪問了,可是原來的兩個頁面卻被403forbidden了,我思考了一下子,以爲問題仍是出在配置文件上。在剛纔的方法中,我添加了兩個名字相同的用戶admin(暫且不論他們的密碼是否相同),分別賦予他們不一樣的角色,可是tomcat在處理這個信息的時候會覆蓋這個前一條配置信息,tomcat會覺得你想修改這個用戶的角色,把他從manager-gui改成admin-gui。若是我當時在建立角色爲admin-gui的用戶是名字不和manager-gui角色的用戶名相同,好比取名admin2,這樣在登陸/host-manager/html頁面時用admin2的用戶名登陸,並輸入相應的密碼就不會403forbidden了。可是要記兩個用戶名和密碼很麻煩,怎麼辦呢?
從配置文件前面的部分 <user username="tomcat" password="tomcat" roles="tomcat"/><user username="both" password="tomcat" roles="tomcat,role1"/>能夠看出,這樣就給一個用戶同時賦予兩種角色了。因而我將配置文件修改爲了這樣:<role rolename="admin-gui"/> <user username="admin" password="admin" roles="admin-gui,manager-gui"/> 保存後重啓tomcat,此次終於奏效了。
5、感悟
遇到問題的時候,文檔或者配置文件自己就是最好的資料,要善於模仿文檔的書寫方式試着去猜想並理解每一個參數的含義,同時必定要具有必定的英語閱讀理解能力。