Tomcat学习--配置tomcat
1.重定向web應用
tomcat提供統一的配置文件%CATALINA%\conf\server.xml。在該文件配置信息會在整個tomcat部屬的所有應用上生效,但同時它也帶來一個問題,就是如果有進行tomcat版本的更新可能導致相應的server.xml配置信息被覆蓋。如何做到當前tomcat配置對所有部屬在此之上的應用配置相同,但又不會因為更新tomcat等原因導致配置信息被覆蓋呢?答案就是CATALINA_BASE環境變量。Tomcat在部屬應用時會按照%CATALINA_BASE%\conf下的配置文件啟動%CATALINA_HOME%下的tomcat應用。例如:
mkdir tomcatAppOne cp -a $CATALINA_HOME\conf .創建tomcatAppOne目錄,將tomcat安裝目錄下conf文件夾全部復制到tomcatAppOne下。
隨后,配置tomcatAppOne/conf/server.xml文件。例如將訪問端口設置到8081
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />隨后,啟設置CATALINA_BASE環境變量并啟動tomcat
set CATALINA_BASE=d:/tomcatAppOne catalina start在相應的啟動輸出信息內可以看到,當前tomcat已經使用tomcatAppOne下的server.xml配置的8081端口監聽Http請求了。
2.變更Http監聽端口8080為80
- tomcat默認監聽HTTP請求的端口是8080,這主要 由于默認HTTP 80端口又可能被其他應用使用才故意為之。若想將其修改為默認端口,可以通過conf/server.xml文件來進行
設置完畢后啟動應用,tomcat這會監聽80端口的HTTP請求。
- 不過設置80端口有一個缺點,就是想要開啟80端口,用戶必須具有root權限(端口號小于1024的,開啟都需要具有root權限)。如果用戶沒有root權限,則可以通過設置iptables來進行,具體命令如下
這兩句命令的主要作用就是將所有http 80端口連接都重定向到8080端口,此外,還需要設置server.xml
<Connector port="8080" protocol="HTTP/1.1" proxyPort=80connectionTimeout="20000" redirectPort="8443" />啟動tomcat,此時所有80端口的http連接都將有8080端口來處理了。
3.變更tomcat內置的jsp編譯器
tomcat 5.5及以上版本默認的使用內置的Eclipse JDT編譯器來編譯jsp.Eclipse JDT的作用與JDK提供的javac功能上是一致的。但這兩者之間還是存在一個區別:Eclipse JDT由于發布時間的關系,可能對java最新的一些特性并不完全支持。因此,某些情況下希望將tomcat內置的JDT編譯器替換成jdk的javac。在tomcat 5.5及以上版本提供兩種編譯器選擇:
如果希望采用ANT來替換JDT,具體的步驟如下:
操作完上述步驟后,啟動tomcat,這當前將不在使用JDT而是ANT來編譯jsp了。
4.安全性(Security)
tomcat通過server.xml下的Realm與web.xml的<security-constraint>來限制用于對tomcat內資源的訪問。
-
Realms
簡單地講,Realm就是用戶,密碼及角色所組成的配置信息。Tomcat提供四種不同Realm:
1.UserDatabaseRealm
UserDatabaseRealm通過加載配置在靜態文件的信息來控制資源訪問,該方式只會在tomcata啟動時刻加載,因此無法在tomcat運行期間動態修改。tomcat提供conf/tomcat-users.xml來配置用戶,密碼,角色之間的關系
<tomcat-users> <!--NOTE: By default, no user is included in the "manager" role requiredto operate the "/manager" web application. If you wish to use this app,you must define such a user - the username and password are arbitrary. --> <!--NOTE: The sample user and role entries below are wrapped in a commentand thus are ignored when reading this file. Do not forget to remove<!.. ..> that surrounds them. --><role rolename="tomcat"/><role rolename="role1"/><user username="tomcat" password="tomcat" roles="tomcat"/><user username="both" password="tomcat" roles="tomcat,role1"/><user username="role1" password="tomcat" roles="role1"/></tomcat-users>通過在server.xml配置對應的UserDatabaseRealm來載入上述文件
<Resource name="UserDatabase" auth="Container"type="org.apache.catalina.UserDatabase"description="User database that can be updated and saved"factory="org.apache.catalina.users.MemoryUserDatabaseFactory"pathname="conf/tomcat-users.xml" /><Realm className="org.apache.catalina.realm.UserDatabaseRealm"resourceName="UserDatabase"/>由于UserDatabaseRealm無法在運行時修改及明文存放密碼等緣故,現實中使用該方式的應用較少。
2.JDBCRealm
JDBCRealm主要通過數據庫來存儲用戶,密碼和角色關系,相對UserDatabaseRealm,好處在于可以運行時修改。
<Realm class="org.apache.catalina.realm.JDBCRealm"driverName="com.mysql.jdbc.Driver"connectionUrl="jdbc:mysql://localhost/yy"connectionName="xxx"connectionPassword="1111"userTable="users" userCredCol="passwd"userRoleTable="roles" roleNameCol="role"userNameCol="name" />通過制定用戶,密碼和角色相關表單,來設置訪問控制。JDBCRealm雖然可以動態修改,但是由于數據庫連接信息仍然是以明文形式存儲,因此安全性方面還是不足
3.JNDIRealm
通過LDAP方式來設置控制信息.
4.JAASRealm
通過使用Java Authentication and Authorization Service來配置控制信息。
配置完畢Realm后,還需要在web.xml配置相應的<security-constraint>才能起到控制作用。例如:
<security-constraint><web-resource-collection><web-resource-name>AAA</web-resource-name><url-pattern>/member/*</url-pattern></web-resource-collection><auth-constraint><role-name>member</role-name></auth-constraint> </security-constraint><login-config><auth-method>BASIC</auth-method><realm-name>mmm<realm-name> </login-config>- Authentication
Tomcat提供四種級別的安全性認證方式:
1.Basic authentication
認證的用戶名及密碼通過明文傳輸。設置方式
<login-config><auth-method>BASIC</auth-method><realm-name>mmm<realm-name> </login-config>2.Digest authentication
認證信息采用信息摘要方式傳輸,可使用MD5,SHA等摘要算法。設置如下
<login-config><auth-method>DIGEST</auth-method><realm-name>mmm<realm-name> </login-config>server.xml中定義的Realm設置摘要算法
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"resourceName="UserDatabase" digest="MD5" />3.Form Authentication
通過表單提交認證信息
<login-config><auth-method>FORM</auth-method><realm-name>mmm<realm-name><form-login-config><form-login-page>/login.html</form-login-page><form-error-page>/error.html</form-error-page></form-login-config> </login-config>4.Client-cert Authentication
? 使用client-cert認證,當前連接必須采用HTTPS.
- Single Sign-On
如果希望在訪問資源盡可能的減少相同角色的密碼輸入,則可以通過在server.xml配置Single Sign-On來實現
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
5.Session管理
tomcat提供2種session持久化設置:
此外,tomcat還提供通過web.xml配置session的過期時間(單位:分)
<session-config><session-timeout>30</session-timeout></session-config>
?
?
?
?
轉載于:https://www.cnblogs.com/kittymao/archive/2012/02/29/2372547.html
總結
以上是生活随笔為你收集整理的Tomcat学习--配置tomcat的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jQuery EasyUI API 中文
- 下一篇: ios公司开发者账号申请分享攻略