apache+tomcat安装配置
一、tomcat环境结构/原理JDK(java sdk) java的开发工具包
--|JAVA基础API: .java源程序编译成.class字节码文件
--|JAVA编译器(jre):jre调用JVM将.class字节码文件编译成机器可识别执行的程序(执行java程序)
--|JVM:java虚拟机,有独立的控制器,内存域…..
--|大量的java工具
JVM堆内存(java对象的活动空间)
--|永久存储区:存储JVM自己的类和方法对象
--|新生区(JVM生成的所在新对象放在新生区中,类的诞生、成长、消亡的区域)
----|伊甸区Eden space:类被new出来
----|幸存区Survivor space
------|survivor 0区
------|Survivor 1区
--|老年区:一旦对象经历了一定数量和垃圾收集循环后,便进入此区域。
JVM垃圾回收过程:
当伊甸园的空间用完时,程序又需要创建对象,JVM的垃圾回收器将对伊甸园区进行垃圾回收,将伊甸园区中的不再被其他对象所引用的对象进行销毁。然后将伊甸园中的剩余对象移动到幸存0区。若幸存0区也满了,再对该区进行垃圾回收,然后移动到1区。那如果1区也满了呢?再移动到老年区。原理:
1. JVM垃圾回收机制与GC性能调优
垃圾回收主要是对新生区与老年区块内存进行回收。
1)GC流程:
Young generation=eden + survivor
当Eden区满触发young GCyoung GC去掉一部分没用的object,把老的还被引用的object发到survivor里,等下几次GC后,survivor再放到old里面当old满触发full GC(很消耗内存),把old,young里大部分垃圾回收掉,这个时候用户线和都会被block.
2)性能调优:
JVM堆的大小决定了GC的运行时间。如果JVM堆的大小超过一定的限度,那么GC的运行时间会很长。
对象生存的时间越长,GC需要的回收时间也越长,影响了回收速度。
大多数对象都是短命的,所以,最好能让这些对象的生存期在GC的一次运行周期内
应用程序中,建立与释放对象的速度决定了垃圾收集的频率
如果GC一次运行周期超过3-5秒,这会很影响应用程序的运行,如果可以,应该减少JVM堆的大小了。
前辈经验之谈:通常情况下,JVM堆的大小应为物理内存的80%。
2. Apache与tomcat的整合
Apache只支持静态网页,tomcat是支持java程序的容器,本身可以做web server但是在处理静态页面时没有apache迅速。
Apache2.2版本后,出现的两种连接器http-proxy和proxy-ajp模块,apache的proxy(代理)模块可以实现双向代理,连接器的实现原理:
http-proxy模块:只需打开tomcat的http功能,然后用apache的proxy代理功能将动态请求交给tomcat处理,而静态数据交给apache自身就可以了
proxy-ajp模块:是专门为tomcat整合所开发的,通过ajp协议专门代理对tomcat的请求.二、环境安装(apache+tomcat+jdk)
源码安装包统一存放路径:/usr/local/src/…
必备安装包:
apche: http://mirrors.tuna.tsinghua.edu.cn/apache/httpd/httpd-2.2.24.tar.gz
TOMCAT: http://mirrors.cnnic.cn/apache/tomcat/tomcat-6/v6.0.36/bin/apache-tomcat-6.0.36.tar.gz
JDK: http://download.chinaunix.net/down.php?id=33932&ResourceID=61&site=1按需可选包:
memcache:
https://github.com/downloads/libevent/libevent/libevent-2.0.13-stable.tar.gz
http://memcached.org/ memcached-1.4.15.tar.gz
apache-ant:
http://archive.apache.org/dist/ant/binaries/apache-ant-1.6.5-bin.tar.gz1、apache安装:略
2、jdk,tomcat包安装直接解压,解压目录路径添加至环境变量中即可.
# cd /usr/local/src/
# chmod +x jdk-6u26-dlj-linux-amd64.bin
# ./jdk-6u26-dlj-linux-amd64.bin
# cd jdk1.6.0_26/
# mkdir -p /usr/local/java
# mv jdk1.6.0_26 ../java/
# vi /etc/profile 添加环境变量
#add java enviroment varaible
export JAVA_HOME=/usr/local/java/jdk1.6.0_26
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin# source /etc/profile
# java --version
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object
如果出错解决如下:
# cd jdk1.6.0_26/lib/
# unpack200 tools.pack tools.jar
# cd ../jre/lib/
# unpack200 rt.pack rt.jar
# java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)
查看验证:
# echo $JAVA_HOME
/usr/local/java/jdk1.6.0_26
# echo $PATH
/usr/local/java/jdk1.6.0_26/bin:/usr/local/java/jdk1.6.0_26/jre/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin#tar -zxvf apache-tomcat-6.0.36.tar.gz
#mv apache-tomcat-6.0.36 /usr/local/tomcat
# ./bin/startup.sh 直接执行tomcat启动脚本
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java/jdk1.6.0_26
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar
问题总结:
Could not find the main class: nagement.jmxremote.ssl=false.
环境变量问题,定义类,lib下可能没取到:
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$TOMCAT_HOME/bin:$ANT_HOME/bin:$JAVA_HOME/lib三、配置文件
apache与tomcat整合
1、apache配置说明: httpd.conf
apache与tomcat整合通过apache的proxy模块, Apache通过ajp协议与tomcat进行通信,ip地址和端口唯一确定了tomcat节点和配置的ajp接受端口。
ProxyPreserveHost on
ProxyPass /ssobalancer://sso lbmethod=bytraffic stickysession=jsessionid|JSESSIONID
<proxy balancer://sso/>
BalancerMember ajp://127.0.0.1:8009/sso loadfactor=1
</proxy>
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/2、tomcat配置说明: /usr/local/tomcat/conf/server.xml#连接器所监听的端口,http协议接受用户的请求及相关参数
<Connector port="8080" protocol="HTTP/1.1" maxHttpHeaderSize="8192" maxThreads="800" minSpareThreads="25" maxSpareThreads="200" enableLookups="false" redirectPort="8443" acceptCount="10000" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />#连接器所监听的端口, AJP协议只可以接受前端apache服务器的请求
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" minSpareThreads="25" maxSpareThreads="200" acceptCount="10000" enableLookups="false" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
# Tomcat 虚拟目录的设置
<Context path="/sso" reloadable="true" docBase="/var/www/sso" allowLinking="true"/>
3、添加tomcat管理用户
<role rolename="manager"/>
<role rolename="tomcat"/>
<user username="xxx" password="xxx" roles="tomcat,manager"/>
</tomcat-users>4、测试
直接访问:http://ip或http://ip/sso测试
解释就系掩饰,掩饰等于无出色,无出色不如回家休息!!! 有竞争才有进步嘛 一时的冲动,子孙的危机! 老天,你让夏天和冬天同房了吧?生出这鬼天气! 如果有一双眼睛陪我一同哭泣,就值得我为生命受苦。 下雨了,别忘了打伞,湿身是小,淋病就麻烦啦*^_^*
页:
[1]