Tomcat作为一个高性能web容器,需要jdk支持 我们接下来在linux下部署配置tomcat。
1,安装与配置Tomcat,首先配置jdk环境。配置jdk 查看系统是否安装java环境:
[root@centos1 ~]# java -version
java version "1.7.0_45"
OpenJDK Runtime Environment (rhel-2.4.3.3.el6-x86_64 u45-b15)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)
2,有的话我们将其卸载默认java环境
[root@centos1 ~]# yum remove java -y
3,同步一下时间:
[root@centos1 ~]# ntpdate 202.120.2.101
7 Apr 14:41:25 ntpdate[2603]: adjust time server 202.120.2.101 offset -0.220100 sec
4,解压jdk压缩包
cd /usr/local/ tar -zxvf jdk1.7.0_45.tar.gz
5,配置环境变量
vi /etc/profile # 在文件最后加上以下配置 # jdk evn JAVA_HOME=/usr/local/jdk1.7.0_45 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME export PATH export CLASSPATH #保存退出后执行下面的命令,使其生效 source /etc/profile
6,验证jdk是否安装成功
java -version java version "1.7.0_45" Java(TM) SE Runtime Environment (build 1.7.0_45-b18) Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
7,安装tomcat 解压tomcat压缩包
cd /usr/local/ tar -zxvf apache-tomcat-7.0.61.tar.gz # 解压成功后得到 apache-tomcat-7.0.61 文件夹,更名为tomcat7 mv apache-tomcat-7.0.61 tomcat7
8,配置环境变量
vi /etc/profile #在文件最后加上以下配置 #tomcat evn CATALINA_HOME=/usr/local/tomcat7 export CATALINA_HOME #保存退出后执行下面的命令,使其生效 source /etc/profile
9,配置tomcat bin下的catalina.sh文件
#进入tomcat的bin目录 cd $CATALINA_HOME/bin vi catalina.sh #找到 # OS specific support,然后在这行下面添加以下配置 # OS specific support. $var _must_ be set to either true or false. CATALINA_HOME=/usr/local/tomcat7 JAVA_HOME=/usr/local/jdk1.7.0_45 #保存退出
10,配置tomcat服务
cd $CATALINA_HOME/bin cp catalina.sh /etc/init.d/tomcat
11, 测试是否成功
[root@centos1 ~]# service tomcat stop
Using CATALINA_BASE: /usr/local/tomcat7
Using CATALINA_HOME: /usr/local/tomcat7
Using CATALINA_TMPDIR: /usr/local/tomcat7/temp
Using JRE_HOME: /usr/local/jdk1.8.0_111
Using CLASSPATH: /usr/local/tomcat7/bin/bootstrap.jar:/usr/local/tomcat7/bin/tomcat-juli.jar
(注 tomcat安装完毕)
12,接下来配置一个虚拟主机。 打开:[root@centos1 ~]# vim /usr/local/tomcat7/conf/server.xml
在文件最后加上定义虚拟主机:
unpackWARs="false" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
把默认8080端口改成80,保存退出
13,创建目录文件进行测试
[root@centos1 ~]# mkdir -pv /test/app
编辑:[root@centos1 app]# vim /test/app/index.jsp
Now time is: <%=new java.util.Date()%>
14,关闭重启服务,
service tomcat stop
service tomcat start
15,进行访问测试:curl -x localhost:80 www.test.com
16.接下来配置tocmat的的优化并发。
jvm 调优 以下是1G物理内存的配置,打开; vim /usr/local/tomcat7/bin/catalina.sh
JAVA_OPTS="-server -Xms512M -Xmx512M -Xss256K"
-server: 一定要作为第一个参数,在多个CPU时性能佳
-Xms: 初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些
-Xmx: java heap最大值,使用的最大内存
Xms 与 Xmx 两个值是分配JVM的最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半。
-Xss: 每个线程的Stack大小
17,32G物理内存配置
JAVA_OPTS="-server -Xms20480m -Xmx20480m -Xss1024K"
18.Tomcat 运行模式有三种,分别是。bio nio apr 生产环境建议使用apr,大幅度提高性能。
安装apr以及 tomcat-native
[root@centos1 ~]# yum -y install apr apr-devel
19,进入tomcat/bin目录 cd /usr/local/tomcat7/bin/
tar xzfv tomcat-native.tar.gz
cd tomcat-native-1.1.32-src/jni/native/
./configure --with-apr=/usr/bin/apr-1-config
make && make install
安装成功提示如下信息;
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/apr/lib
20,安装成功还需要对tomcat设置环境变量。在catalina.sh文件中增加一行:
CATALINA_OPTS="-Djava.library.path=/usr/local/apr/lib"
21,替换Connector内容如下:
protocol="org.apache.coyote.http11.Http11AprProtocol"
executor="tomcatThreadPool"
compression="on"
compressionMinSize="2048"
maxThreads="30000" 最大线程数,决定了服务器响应客户端的请求的数
minSpareThreads="512" 初始化时创建的线程数
maxSpareThreads="2048" 一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
enableLookups="false" 禁用反向dns查询
redirectPort="8443"
acceptCount="35000" 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理
debug="0"
connectionTimeout="40000" 连接超时时长
disableUploadTimeout="true" URIEncoding="UTF-8" useBodyEncodingForURI="true" />
22,启动tomcat看日志
[root@centos4 ~]# cat /usr/local/tomcat/logs/catalina.out | grep library
INFO: Loaded APR based Apache Tomcat Native library 1.1.30 using APR version 1.3.9.
说明已经支持APR模式运行了。
24,优化网络参数
修改/etc/sysctl.conf 末尾增加以下内容
kernel.shmall = 4294967296
net.core.netdev_max_backlog = 32768
net.core.somaxconn = 32768
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 65536
25,保存退出,执行sysctl -p 生效