a13698822086 发表于 2015-8-7 10:34:55

Tomcat学习--配置tomcat

1.重定向web应用
  tomcat提供统一的配置文件%CATALINA%\conf\server.xml。在该文件配置信息会在整个tomcat部属的所有应用上生效,但同时它也带来一个问题,就是如果有进行tomcat版本的更新可能导致相应的server.xml配置信息被覆盖。如何做到当前tomcat配置对所有部属在此之上的应用配置相同,但又不会因为更新tomcat等原因导致配置信息被覆盖呢?答案就是CATALINA_BASE环境变量。Tomcat在部属应用时会按照%CATALINA_BASE%\conf下的配置文件启动%CATALINA_HOME%下的tomcat应用。例如:



mkdirtomcatAppOne
cp -a $CATALINA_HOME\conf.

  创建tomcatAppOne目录,将tomcat安装目录下conf文件夹全部复制到tomcatAppOne下。
  随后,配置tomcatAppOne/conf/server.xml文件。例如将访问端口设置到8081



   

  随后,启设置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来进行,具体命令如下



iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -I OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 8080

  这两句命令的主要作用就是将所有http 80端口连接都重定向到8080端口,此外,还需要设置server.xml





  启动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及以上版本提供两种编译器选择:


[*]内置默认的eclipse JDT编译器
[*]使用Apache Ant来编译jsp,由于Ant默认采用JDK's JAVAC编译器,因此采用ANT编译jsp就等同于采用JAVAC
  如果希望采用ANT来替换JDT,具体的步骤如下:


[*]删除CATALINA_HOME\common\lib\jasper-compiler-jdt.jar文件
[*]将Ant下的ant.jar复制到common\lib下
[*]将jdk下的tool.jar复制到common\lib下
  操作完上述步骤后,启动tomcat,这当前将不在使用JDT而是ANT来编译jsp了。

4.安全性(Security)
  tomcat通过server.xml下的Realm与web.xml的来限制用于对tomcat内资源的访问。


[*]
Realms
  简单地讲,Realm就是用户,密码及角色所组成的配置信息。Tomcat提供四种不同Realm:
    1.UserDatabaseRealm
  UserDatabaseRealm通过加载配置在静态文件的信息来控制资源访问,该方式只会在tomcata启动时刻加载,因此无法在tomcat运行期间动态修改。tomcat提供conf/tomcat-users.xml来配置用户,密码,角色之间的关系













  通过在server.xml配置对应的UserDatabaseRealm来载入上述文件






  由于UserDatabaseRealm无法在运行时修改及明文存放密码等缘故,现实中使用该方式的应用较少。
    2.JDBCRealm
  JDBCRealm主要通过数据库来存储用户,密码和角色关系,相对UserDatabaseRealm,好处在于可以运行时修改。





  通过制定用户,密码和角色相关表单,来设置访问控制。JDBCRealm虽然可以动态修改,但是由于数据库连接信息仍然是以明文形式存储,因此安全性方面还是不足
  3.JNDIRealm
  通过LDAP方式来设置控制信息.
  4.JAASRealm
  通过使用Java Authentication and Authorization Service来配置控制信息。
  配置完毕Realm后,还需要在web.xml配置相应的才能起到控制作用。例如:






AAA

/member/*


member



BASIC
mmm



[*]Authentication
  Tomcat提供四种级别的安全性认证方式:
  1.Basic authentication
  认证的用户名及密码通过明文传输。设置方式




BASIC
mmm


   2.Digest authentication
  认证信息采用信息摘要方式传输,可使用MD5,SHA等摘要算法。设置如下




DIGEST
mmm


  server.xml中定义的Realm设置摘要算法





  3.Form Authentication
  通过表单提交认证信息




FORM
mmm

/login.html
/error.html



    4.Client-cert Authentication
  使用client-cert认证,当前连接必须采用HTTPS.


[*]Single Sign-On
  如果希望在访问资源尽可能的减少相同角色的密码输入,则可以通过在server.xml配置Single Sign-On来实现





  

  5.Session管理
  tomcat提供2种session持久化设置:


[*]StandardManager:默认,只有当tomcat正常推出时才会执行保存session到catalina_home/work/catalina/hostname/webapp-name/的session.ser文件内
[*]PersistenManager: 能实时保存session到指定的文件或者JDBC数据库中。
  此外,tomcat还提供通过web.xml配置session的过期时间(单位:分)




30


  
  
  
  
  
页: [1]
查看完整版本: Tomcat学习--配置tomcat