1.1 JDK安装
在64位操作系统中下载64位的JDK,直接安装。
1.2 Tomcat配置
1.2.1 下载解压
下载apache-tomcat-8.5.15-windows-x64.zip,直接解压到某个分区即可。在解压后的bin目录中,有4个重要的脚本文件:
1.2.2 启动配置
1.2.2.1 简单启动
在catalina.bat中的setlocal下面添加两行,配置java环境。
之后就可以将startup.bat和shutdown.bat两个文件发送快捷方式到桌面,然后直接双击快捷方式启动或关闭Tomcat程序。
1.2.2.2 安装为服务启动
在控制台下进入tomcat目录,过程如下:
在《开始》上按鼠标右键菜单
选择《命令提示符(管理员)》,进入管理员权限的命令行控制台:
命令行控制台
假设前面tomcat解压目录为:
则在控制台中输入:
cd /d d:\apache-tomcat-8.5.15\bin
比较命令执行前后的《当前目录》
继续在控制台中输入:
service.bat install tomcat8
就可以在系统中安装一个名为tomcat8的系统服务:
成功完成服务的安装
可以在计算机管理的服务项中查看到《Apache Tomcat 8.5 tomcat8》系统服务。
查看系统服务
继续在命令行控制台中输入:
net start tomcat8
命令行启动tomcat8服务
可以使用
net stop tomcat8
关闭tomcat服务。
命令行停止服务
当然,有安装就有删除,同样在命令行控制台下,可以执行:
Service.bat remove tomcat8
移除指定名称的tomcat8r的系统服务。
1.2.3 配置manager
从Tomcat 7开始,有4种管理角色:
1)manager-gui 可以访问HTML GUI和状态页
2)manager-script 允许访问文本接口和状态面
3)manager-jmx 允许访问JMX代理和状态面
4)manager-status 只允许访问状态页
如果需要通过tomcat的manager/html页面登录管理tomcat,则需要修改tomcat-users.xml文件,在其中添加相应的角色的用户。
配置好manager-gui角色的用户名和密码后,可以登录管理后台。如下图
为了安全,在生产环境中,应该关闭此项配置,即不允许任何用户登录manager页面。或者直接删除tomcat中与后台管理相关的部分
1.2.4 清理tomcat自带项目
Tomcat解压后,默认是自带了示例、管理等项目,可以通过网页直接访问。在生产环境中,为了避免不必要的安全隐患,应该删除掉这些项目。
1.2.5 修改Tomcat WEB端口
Tomcat默认监听8080端口,对于App项目,并不提供给普通的浏览器使用,最好改一下端口,这样至少增加一点猜测识别的难度。
1.2.6 禁止显示目录列表
如果浏览器端能够列出WEB服务器端的文件列表。将带来重大安全隐患。因此需要在conf/web.xml文件中通过init-param项禁止列目录的行为。
在Tomcat 8中,默认就是禁止的。低版本中应该手工修改此配置文件禁止。
1.2.7 服务降权
在生产环境中,不建议Tomcat拥有管理员权限。而应该使用普通用户身份运行Tomcat。
创建一个普通用户,为其设置密码,将其密码策略设置为“密码永不过期”,比如我们创建的用户为tomcat。然后修改tomcat安装文件夹的访问权限,为tomcat赋予Tomcat文件夹的读、写、执行的访问权限,赋予Tomcat对WebApps文件夹的只读访问权限,如果某些Web应用程序需要写访问权限,单独为其授予对那个文件夹的写访问权限。
选中tomcat解压所在目录,右键属性中,添加tomcat用户可以访问目录,仅限只给中间三项,如下图。
另外对webapps目录也执行类似操作,但只赋予tomcat用户对web文件夹的只读访问权限。如果某些目录需要读写,则单独赋与tomcat用户对指定目录的写访问权限。
之后,可以配置Tomcat服务的登录属性。
使用tomcat帐户登录,即以tomcat帐户运行该服务。这样就使得tomcat服务的权限较低,即使被攻击,也增加了进一步控制系统的难度。
重启服务后生效。
如果是命令行启动,则修改启动命令为:
runas /user:tomcat startup.bat / tomcat8.exe
测试时,这种方式没有通过,执行startup.bat时一闪而过了。执行tomcat8.exe时,提示需要提升。
1.2.8 关闭war包的自动部署
war包的自动部署非常方便,但是也容易被攻击者利用,用于在系统中安装木马或攻击工具。可以关闭war包的自动部署功能。
将框中的两个true都改成false,则tomcat不会自动解包和自动部署war文件及其中的项目。
在关闭自动部署的条件下,要完成项目的部署可以有几种选择。
1)先自动部署完成,再关闭自动部署
2)手动解压war包,并将其中的内容复制到webapps目录下与项目同名的目录中。
应用程序部署和tomcat启动不能使用同一个用户。
1.2.9 修改连接协议
修改连接器协议,默认是HTTP/1.1,该默认设置不能支持过高的并发量,不然会出现io错误。方法是修改conf/server.xml将<Connector port="8080" protocol="HTTP/1.1"修改为<Connectorport="8080"protocol="org.apache.coyote.http11.Http11NioProtocol"
1.2.10 优化jar包
优化jar包,如果一个jar文件出现在多个WEB应用中的话,可以将该jar文件统一放到一个目录下,以 避免被tomcat 多次加载,耗用内存占用。方法是修改conf目录下的catalina.properties文件,将其中的加载jar包位置的配置项增加一个共享位置:
原始内容 common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar" 后面增加: "${catalina.home}/share/lib/*.jar" |
然后将共用的jar文件放到tomcat下share目录里的lib文件夹里即可。
1.2.11 设置大的JVM内存
有时候服务器有很大的内容,如果不设置tomcat,则可能只利用了其中很小一部分内存。为了修改jvm内存,可以编辑bin/catalina.bat,增加代码:
set JAVA_OPTS=-Xms512m -Xmx4096m -XX:PermSize=128M -XX:MaxPermSize=256m |
这里设置的Xmx为4G内存,如果安装的不是64位的JDK,那么在设置最大内存的时候,就会提示不支持。所以操作系统和jdk应该用64位版本。
1.2.12 设置tomcat最大并发数
修改conf目录下的server.xml文件,修改Connector配置。
<Connector port="80" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" maxThreads="1000" minSpareThreads="100" maxSpareThreads="300" acceptCount="100" redirectPort="8443" URIEncoding="GBK" useBodyEncodingForURI="true" /> |
1.2.13 禁用tomcat资源缓存
默认tomcat会缓存资源,当并发过高时,会导致警告提示,影响性能。如果确定不需要缓存资源,可以项目的META-INF目录下的context.xml文件中,在context中增加:
<Resources cachingAllowed="false"></Resources> |