tomcat 算是最知名的java容器了,windows下安装使用tomcat 7其实并不易,本文以windows 2008R2 x64为例。
1、下载安装JDK,设置JAVA_HOME (略)
2、下载tomcat 7
由于我们是x64系统,所以需要下载x64位版本的tomcat,如果是x86版本的,内存使用有4G限制,其它限制暂未知。
这里下载到D盘根目录,正确的下载版本如下:
http://mirrors.ustc.edu.cn/apache/tomcat/tomcat-7/v7.0.70/bin/apache-tomcat-7.0.70-windows-x64.zip
2、右键将压缩包解压至D盘根目录,给tomcat实例取个好的名字,建议以业务+端口命名。比如tomcat7-site1-8080
3、基本调整
a、修改D:\tomcat7-site1-8080\conf\server.xml ,修改
设置的内容主要是伪装header,设置字符集,gzip压缩。
(如果tomcat前面还有nginx,gzip则不必开启,开启gzip一般可以将前端页面加载速度至少提升一倍)
b、创建文件
d:\tomcat7-site1-8080\lib\org\apache\catalina\util\ServerInfo.properties
内容如下
server.info=Apache Tomcat
c、设置JAVA_OPTS参数,编辑D:\tomcat7-site1-8080\bin\catalina.bat,大约185行,
set "JAVA_OPTS=-server -Xms1024M -Xmx1024M -XX:PermSize=64M -XX:MaxPermSize=128m"
更多参数请根据需要添加。
4、开启tomcat
将你的应用程序放入D:\tomcat7-site1-8080\webapps ,双击D:\tomcat7-site1-8080\bin\startup.bat ,不出意外,会有一个cmd界面显示tomcat详细信息。用浏览器访问本地8080端口,会显示tomcat欢迎页面。
5、防火墙
为了能让别人访问tomcat,必须在“windows防火墙-高级设置”里放行8080端口(略)
小结
你以为这样就部署完了吗?大概也是为什么tomcat那么容易的原因。一切都因为tomcat在前台运行。
我说下tomcat在前台运行的部署方式遗留的几个问题:
a、屏幕有限,报错日志缺乏,排障困难
b、操作系统重启后无法自动启动,必须人工登录,然后双击startup.bat才行
(PS:windows有自动更新且需要重启的恶劣特性)
c、运行多个tomcat,运维难度大,哪个是哪个傻傻分不清,新手根本不知道需要双击哪几个startup.bat
---------------------------万恶的分割线--------------------------------------
解决方案是必须让tomcat在后台运行,并且随操作系统启动。相应的好处如下:
1、tomcat日志以文件形式保存,方便查找
2、随操作系统启动,不怕宕机
3、tomcat后台服务挂了,一定程度上可以自动修复,见tomcat服务“属性-恢复”选项
具体办法如下:
1、编辑文件D:\tomcat7-site1-8080\bin\service.bat,文件末尾,大约163、164行,
原文如下:
--JvmMs 128 ^--JvmMx 256
修改为:
--JvmOptions "-XX:PermSize=64m;-XX:MaxPermSize=128m" ^ --JvmSs 512 ^ --JvmMs 1024 ^ --JvmMx 1024
这里设置的是JVM内存参数,可根据需要调整,默认128m和256m,如果你只有一个tomcat实例,双击tomcat7w.exe会弹出一个对话框,也可以设置JVM参数。
很多人用startup.bat可以正常启动,利用windows服务却无法正常启动的原因正是在此。因为windows服务并不读取catalina.bat 里面的JAVA_OPTS 。
2、安装tomcat服务,在cmd命令行逐行输入下面的命令:
d:cd d:\tomcat7-site1-8080\binservice install tomcat7-site1-8080net start tomcat7-site1-8080
其实service install 即可,默认名称是Tomcat7,但是多个tomcat实例的话,就会导致服务名称冲突,所以前文预先指定了一个名字,强烈建议以业务名称+端口号命名,比如tomcat7-site1-8080,tomcat7-app2-8081
一定要先修改service.bat再安装tomcat服务,否则需要先卸载tomcat服务,然后重新安装tomcat服务。
在cmd命令行逐行输入下面的命令:
d:cd d:\tomcat7-site1-8080\binnet stop tomcat7-site1-8080service remove tomcat7-site1-8080
tomcat服务默认是手动启动的,运行命令services.msc进入windows 服务,让tomcat服务开机自动启动,不详述。
tomcat后台服务的进程名字叫tomcat7.exe,如果tomcat在前台运行,那么进程叫java.exe
3、开启多个tomcat实例
a、将tomcat目录复制一份出来,修改server.xml里的端口,不与别的实例冲突即可
b、安装tomcat服务同上,服务名称不与别的实例冲突即可
全文完。