tomcat
Java web 环境搭建
# 一、初识 Tomcat
Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。Tomcat 是 Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行 tomcat 时,它实际上作为一个与 Apache 独立的进程单独运行的。
# 二、Java web 环境:Nginx+JDK+Tomcat+MySQL
a. 所有服务部署在同一个主机上,也可分开部署 b. Nginx 默认开启的是 80 端口,用来接收用户的 web 请求 c. Tomcat 默认开启的是 8080 端口,用来接收 Nginx 转发过来的 web 请求
# 三、环境部署流程
1.安装 JDK(java 解析器) 1、首先安装 gcc
yum -y install gcc
2、将软件包上传、解压、并移至指定位置
mv 解压缩目录 /usr/local/jdk1.7
3、配置 JDK 的环境变量
vim /etc/profile
#添加以下内容 export JAVA_HOME=/usr/local/jdk1.7 export JAVA_BIN=/usr/local/jdk1.7/bin export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
source /etc/profile
4、查看 java 是否安装成功
java -version
2.安装 tomcat 1、将软件包上传、解压、并复制到指定目录下
cp -a 解压目录 /usr/local/tomcat 2、配置 Tomcat 的环境变量
2、配置 Tomcat 的环境变量
vim /etc/profile
export TOMCAT_HOME=/usr/local/tomcat export PATH=$PATH:$TOMCAT_HOME/bin
source /etc/profile
3、将 tomcat 的启动脚本赋予执行权限
chmod +x /usr/local/tomcat/bin/* 4、开启 tomcat
4、开启 tomcat
/usr/local/tomcat/bin/catalina.sh start
netstat -antp #查看端口,确认是否启动
5、在客户端访问页面进行测试 192.168.10.20:8080
四、部署 JAVA 的 WAR 包
1、在 /usr/local/tomcat/conf/server.xml 配置文件中的 server 区域中添加标红内容
2、将 war 包拷贝到 webapps 目录中
cp -a test.war /usr/local/tomcat/webapps/ 4、删除网站的 ROOT 目录
rm -rf ROOT 4、重启 tomcat 服务
3、删除网站的 ROOT 目录
rm -rf ROOT
4、重启 tomcat 服务
/usr/local/tomcat/bin/catalina.sh stop
/usr/local/tomcat/bin/catalina.sh start
5、测试 使用客户端浏览访问 Nginx 服务的端口
注意:原本的 tomcat 使用 8080 端口进行访问,也可以将端口修改为 80 使用 IP 直接访问,修改 /usr/local/tomcat/conf/server.xml 配置中的 8080 改变为 80(切记不要和其他 web 服务器冲突)
五、创建多个 tomcat 实例(拓展)
1、首先将 tomcat 进行停止
/usr/local/tomcat/bin/catalina.sh stop 2、拷贝原来的 Tomcat 到另外一个目录,如 tomcat-2,清除 logs 目录
2、拷贝原来的 Tomcat 到另外一个目录,如 tomcat-2,清除 logs 目录
cp -a tomcat/ tomcat-2
rm -rf tomcat-2/logs/*
3、修改 Tomcat-2 中的/conf/server.xml 文件,把 shutdown 和 Connector 端口修改成另外的数值, 关闭端口修改为 8006,连接端口修改为 8090
4、修改 startup.sh 和 shutdown.sh 文件 在第一行均加入:export CATALINA_HOME=/usr/local/tomcat-2 5、启动 tomcat
/usr/local/tomcat/bin/catalina.sh start
/usr/local/tomcat-2/bin/catalina.sh start
netstat -antp #查看 8080 和 8090 端口是否正常启动
6、查看结果 浏览 http://192.168.10.20:8080 浏览 http://192.168.10.20:8090 可以直接将 8090 写入配置好的 Nginx 负载均衡中
JSP WebApp目录结构 主页配置:默认按以下顺序查找主页文件index.html,index.htm、index.jsp WEB-INF/:当前WebApp的私有资源路径,通常存储当前应用使用的web.xml和context.xml配置文件 META-INF/:类似于WEB-INF,也是配置信息,浏览器无法访问 classes/:类文件,当前webapp需要的类 lib/:当前应用依赖的jar包
基于部署实现WEB的管理
http://192.168.200.237:8090/manager/status
vim conf/tomcat-users.xml
#加下面两行,指定用户和密码
# centos6启动脚本
#!/bin/bash
#
# tomcat startup script for the Tomcat server
#
# chkconfig: 345 80 20
# description: start the tomcat deamon
#
# Source function library
. /etc/rc.d/init.d/functions
prog=tomcat
export JAVA_HOME=/opt/jdk
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
export CATALANA_HOME=/opt/tomcat8
tomcat_port=8080
case "$1" in
start)
tomcat_PID=`netstat -nptl | grep $tomcat_port | awk '{print $7}'`
if [ "$tomcat_PID" != "" ]
then
echo "Tomcat had started"
echo "Tomcat_PID="${tomcat_PID}
echo "if you want to restart Tomcat,please excute restart command!"
else
echo "Starting Tomcat..."
$CATALANA_HOME/bin/startup.sh
fi
;;
stop)
tomcat_PID=`netstat -nptl | grep $tomcat_port | awk '{print $7}'`
if [ "$tomcat_PID" != "" ]
then
echo "Stopping Tomcat..."
$CATALANA_HOME/bin/shutdown.sh
else
echo "Tomcat hadn't started,please excute start command!"
fi
;;
restart)
#获取tomcat的进程ID
#TomcatID=$(ps -ef |grep tomcat |grep -w $CATALANA_HOME|grep -v 'grep'|awk '{print $2}')
tomcat_PID=`netstat -nptl | grep $tomcat_port | awk '{print $7}'`
#echo "tomcat_PID="$tomcat_PID
if [ "$tomcat_PID" != "" ]
then
echo "Tomcat had started,we will stopping Tomcat and Starting Tomcat next 2 second..."
echo "Stopping Tomcat..."
$CATALANA_HOME/bin/shutdown.sh
echo ""
echo "...............waiting 2 second.................."
echo ""
sleep 2
echo -n "Starting Tomcat..."
$CATALANA_HOME/bin/startup.sh
else
echo "Tomcat hadn't starting"
echo -n "Starting Tomcat..."
$CATALANA_HOME/bin/startup.sh
fi
;;
*)
echo "Usage: $prog {start|stop|restart}"
;;
esac
exit 0
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# systemctl 启动脚本
[Unit]
Description=Tomcat
#After=syslog.target network.target remote-fs.target nss-lookup.target
After=syslog.target network.target
[Service]
Type=forking
Environment="JAVA_HOME=/opt/jdk"
ExecStart=/opt/tomcat8/bin/startup.sh
ExecStop=/opt/tomcat8/bin/shutdown.sh
PrivateTmp=true
User=root
Group=root
[Install]
WantedBy=multi-user.target
2
3
4
5
6
7
8
9
10
11
12
13
14
# tomcat参数优化
tomcat进行参数性能优化,具体优化的地方如下:
Linux内核的优化
服务器资源配置的优化
Tomcat参数优化
配置负载集群优化
这里着重讲解tomcat 参数的优化:server.xml文件,关闭DNS 查询、配置最大并发等参数。 maxThreads:tomcat 起动的最大线程数,即同时处理的任务个数,默认值为200 acceptCount:当 tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为 100 当然这些值都不是越大越好,需要根据实际情况来设定。可以基于测试的基础上来不断的调优分析。
打开/conf/server.xml
配置多个 tomcat 实例,方法也很简单,只需要在服务器上 cp 多个 tomcat,然后修改三个端口和发布目录即可,然后分别启动即可。
为了提升整个网站的性能,还需要在 tomcat 前面架设 nginx web 反向代理服务器,用以提高用户高速访问。
linux修改TOMCAT_HOME/bin/catalina.sh
JAVA_OPTS="-server -Xms32g -Xmx32g -XX:NewSize= -XX:MaxNewSize= " -server:服务器模式 -Xms:堆内存初始化大小 -Xmx:堆内存空间上限 -XX:NewSize=:新生代空间初始化大小 -XX:MaxNewSize=:新生代空间最大值
JAVA_OPTS="-server -Xms4g -Xmx4g -Xss512k -Xmn1g -XX:CMSInitiatingOccupancyFraction=65 -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:PermSize=128m -XX:MaxPermSize=512m -XX:CMSFullGCsBeforeCompaction=5 -XX:+ExplicitGCInvokesConcurrent -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods"
常用属性: maxThreads:最大线程数,默认200 minSpareThreads:最小空闲线程数 maxSpareThreads:最大空闲线程数 acceptCount:当启动线程满了之后,等待队列的最大长度,默认100 URIEncoding:URI地址编码格式,中文建议使用UTF-8 enableLookups:是否启用客户端主机名的DNS反向解析,缺省禁用,建议禁用,就使用客户端IP就行 compression:是否启用传输压缩机制,建议“on",CPU和流量的平衡 compressionMinSize:启用压缩传输的数据流最小值,单位是字节 compressableMimeType:定义启用压缩功能的MIME