一:Tomcat及JDK简介
1.)Tomcat是一个免费的web应用服务器服务器,国内很多大型站点也是采用Tomcat来构建的。Tomcat是apache基金会的一个核心项目,其运行环境需要JDK的支持,Tomcat都是基于某个版本的JDK平台所研发,版本不对称,会导致Tomcat启动失败。
2.)JDK于1996年开发第一个版本,JDK主要组建JVM,Applet,AWT等。JDK1.1的版本引入了JAR格式,用户打包Java程序代码。还引入了JDBC,Java通过驱动去连接数据库。
3.)Java技术分为了三个方向:J2SE(标准本),J2EE(企业版),J2ME(移动版),J2SE就是Java2的标准版,主要用于桌面程序的软件编程。J2EE是Java2的企业版,主要用户分布式网络程序的开发。J2ME主要应用于嵌入式系统开发,例如手机和PDA的编程。
4.)Java类库:Java是面向对象编程语言,类则是对面向对象中的一种概念,对具有相同属性的事物具有相同属性的概念。类可以被具体化为一个一个的对象。
二:JVM简介:
1.)JVM是Sun公司设计java语言的目标是让java程序可以适应于各种平台的计算机上运行,为了实现这个目标,Sun公司提出了java虚拟机机制。
2.)Java虚拟机是编译和运行Java程序等命令及其运行环境的总称。Java源程序在编译后生存后缀为class的文件,该文件以字节码的方式进行编码。这种字节码实际上是一种伪代码,它包含各种指令,这种指令基本是与平台无关的指令。Java虚拟机在字节码文件的基础上解释这些字节码,以及将这些字节码转换为计算机的语言代码,并交给计算机执行。
3.)字节码是一种于平台无关的伪代码,通过Java命令演变成在各种平台上的机器代码,这些伪代码最终是在本地计算机平台是运行的,但Java程序好像是在这些Java命令的基础上运行的,因此这些Java命令的几个好像是如同我们所使用的VM虚拟机或者virtualbox等软件实现的虚拟机。
三:Tomcat在web架构应用中的位置以及处理流程图:
四.安装JDK及Tomcat:
1.)安装环境:
操作系统:CentOS6.5 x86_64
JDK版本:jdk-7u9-linux-x64.rpm
Tomcat版本:apache-tomcat-7.0.42.tar.gz
网络地址:tomcatnode1: 192.168.169.128,tomcatnode1: 192.168.169.129,httpd代理主机:192.168.169.130,memcached节点使用http主机的地址。
2.)安装JDK,设置Java环境变量:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# rpm -ivhjdk-7u9-linux-x64.rpm Preparing... ########################################### [100%]
1:jdk ###########################################[100%]
# rpm -ql jdk | less /usr/java/jdk1 .7.0_09 #此目录为jdk安装目录
# vim/etc/profile.d/java.sh JAVA_HOME= /usr/java/jdk1 .7.0_09
PATH=$JAVA_HOME /bin :$PATH
export JAVA_HOME PATH
# source/etc/profile.d/java.sh # java -version java version "1.7.0_09"
Java(TM) SE RuntimeEnvironment (build 1.7.0_09-b05) Java HotSpot(TM) 64-BitServer VM (build 23.5-b02, mixed mode) |
3.)安装Tomcat:
1
2
3
4
|
# tar xfapache-tomcat-7.0.42.tar.gz -C /usr/local/ # cd /usr/local/ # ln -svapache-tomcat-7.0.42 tomcat `tomcat ' ->`apache-tomcat-7.0.42'
|
4.)Tomcat安装后生成的目录:
bin:tomcat相关命令存放位置。
conf:tomcat配置文件存放位置。
work:tomcat工作目录。
webapps:项目存放位置。
temp:临时存放一些数据的目录。
5.)Tomcat环境变量修改:
1
2
3
4
|
# vim/etc/profile.d/tomcat.sh exportCATALINA_HOME= /usr/local/tomcat
exportPATH=$CATALINA_HOME /bin :$PATH
# source/etc/profile.d/tomcat.sh |
6.)为Tomcat提供SysV脚本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# vim/etc/init.d/tomcat #!/bin/bash # description: TomcatStart Stop Restart # processname: Tomcat # chkconfig: 234 20 80 JAVA_HOME= /usr/java/jdk1 .7.0_09
CATALINA_HOME= /usr/local/tomcat
export JAVA_HOMECATALINA_HOME
case $1 in
start) exec $CATALINA_HOME /bin/catalina .sh start ;;
stop) exec $CATALINA_HOME /bin/catalina .sh stop;;
restart) $CATALINA_HOME /bin/catalina .sh stop
sleep 2
exec $CATALINA_HOME /bin/catalina .sh start ;;
configtest) exec $CATALINA_HOME /bin/catalina .shconfigtest ;;
- v )
exec $CATALINA_HOME /bin/catalina .sh version.sh;;
*) exec $CATALINA_HOME /bin/catalina .sh * ;;
esac |
7.)添加Tomcat开启启动:
1
2
3
|
# chmod +x/etc/init.d/tomcat # chkconfig --addtomcat # chkconfig tomcat on |
8.)查看Tomcat版本信息及JDK信息:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
# service tomcat -v UsingCATALINA_BASE: /usr/local/tomcat
UsingCATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1 .7.0_09
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap .jar: /usr/local/tomcat/bin/tomcat-juli .jar
Usage: catalina.sh (commands ... ) commands: debug Start Catalina in a debugger
debug -security Debug Catalina with a security manager
jpda start Start Catalina under JPDA debugger
run Start Catalina in the currentwindow
run -security Start in the current window with securitymanager
start Start Catalina in a separatewindow
start -security Start in a separate window with securitymanager
stop Stop Catalina, waiting up to 5seconds for the process to end
stop n Stop Catalina, waiting up to nseconds for the process to end
stop -force Stop Catalina, wait up to 5 seconds andthen use kill -KILL if still running
stop n -force Stop Catalina, wait up to n seconds andthen use kill -KILL if still running
configtest Run a basic syntax check on server.xml- check exit code for result
version What version of tomcat are yourunning?
Note: Waiting for theprocess to end and use of the -force option require that $CATALINA_PID isdefined
|
8.)启动Tomcat:
1
2
3
4
5
6
|
# service tomcat start UsingCATALINA_BASE: /usr/local/tomcat
UsingCATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1 .7.0_09
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap .jar: /usr/local/tomcat/bin/tomcat-juli .jar
|
9.)检查Tomcat端口:
1
2
3
4
5
6
7
|
# ss -tnl State Recv-Q Send-Q LocalAddress:Port PeerAddress:Port LISTEN 0 100 :::8080 :::* LISTEN 0 128 :::22 :::* LISTEN 0 128 *:22 *:* LISTEN 0 100 ::1:25 :::* LISTEN 0 100 127.0.0.1:25 *: |
10.)访问测试:
11.)隐藏Tomcat版本信息:
当输入一个不存在的页面或者文件时,会显示当前Tomcat的版本信息,如果出现漏洞并且没有第一时间修复,很可能被利用。
1
2
3
4
5
6
|
# cd/usr/local/tomcat/lib/ # jar xf catalina.jar # vimorg/apache/catalina/util/ServerInfo.properties server.info=ApacheTomcat server.number=www.stu32.com server.built=Jul 2 201308:57:41 |
五.Tomcat配置文件:
1.)server.xml:主配置文件。
2.)context.xml:上下文,为部署每个webapp的默认配置文件。
3.)web.xml:部署描述符文件,为所有部署当前tomcat实例上所有的webapp提供默认的部署描述符。
4.)users.xml:为jsp页面提供访问权限的文件。
5.)catalina.policy:当基于-security选项启动tomcat实例时会读取此配置文件。
6.)catalina.properties:Java属性定义的文件,用于设定类加载器路径,以及安全包列表,和一些调整性能的相关参数的信息。
六.Tomcat负载均衡:
1.)如开始介绍安装环境时写的网络地址,分为node1,node2节点以及nginx代理服务器,上面安装好的就为node1节点,现在开始配置node2节点,node2节点与node1节点配置一致。
2.)编译安装Nginx:
编译过程参考前面的nginx初级使用部分。
3.)修改nginx配置文件,使其能够代理Tomcat node1,node2节点:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
# vim/etc/nginx/nginx.conf http{ client_max_body_size 300m;
client_body_buffer_size 600;
proxy_read_timeout 600;
proxy_send_timeout 600;
proxy_buffer_size 16k;
proxy_buffers 4 42k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
upstream jsp_server {
server 192.168.169.128:8080 weight=1max_fails=2 fail_timeout=30s;
server 192.168.169.129:8080 weight=1max_fails=2 fail_timeout=30s;
} server{ location ~ .*.jsp$ {
index index.jsp;
proxy_passhttp: //jsp_server ;
proxy_set_header X-Real-IP$remote_addr;
}
|
分别在http段落定义upsream,server段调用jsp_server。
4.)定义jsp页面的测试页:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# cd/usr/local/tomcat/webapps/ # mkdir -pvsession/WEB-INF/{classes,lib} # cd session # vim index.jsp <%@ pagelanguage= "java" %>
<html> < head ><title>Tomcat Sessionnode2< /title >< /head >
<body>
<h1><fontcolor= "red" >Session.node2.com< /font >< /h1 >
<tableborder= "1" >
< tr >
<td>Session ID< /td >
<%session.setAttribute( "node1.com" , "node2.com" ); %>
<td><%= session.getId()%>< /td >
< /tr >
< tr >
<td>Created on< /td >
<td><%=session.getCreationTime() %>< /td >
< /tr >
< /table >
< /body >
< /html >
|
此处配置的是node2节点,node1节点相同配置,为了测试,需要修改title部分为node1。
5.)启动nginx,测试反向代理:
代理部分基本配置已经完成。
七.基于Memcached构建MemcachedSession Manager Session会话服务器。
1.)Session简介:Session对象的引入是为了弥补HTTP协议的不足,HTTP协议是无状态协议。Session是代表服务器于客户端之间的会话。Session的作用时间是用户到达某个特定的Web页面开始,直到用户离开Web站点,或者程序中利用代码终止了Session结束。引用Session可以让用户访问多个页面之间的切换也会保留该用户的信息。最简单的理解就是我们去网上购物的时候,已经添加到购物车,(前端为反向代理服务器)当我们需要付款的时候,就会跳到另外一个新的页面,那么我们所下的订单也会停留在上一个页面或者找不到了。
2.)Memcached简介:Memcached是一款高性能分布式内存缓存系统,用户动态web应用减轻数据库压力。架构中的位置处于应用服务器于数据库中间,当用户第一次请求数据的时候,会经由数据库反回数据并且缓存到Memcached内存中,第二次访问的时候,就直接在Memcached内存中读取数据,从而提高动态,数据库访问速度。Memcached是基于存储键/值对的hashmap,其守护进程为Domain,其客户端也就是应用服务器,可以是php,jsp等语言。
3.)Session工作流程图:
4.)下载Session所需要的jar包:
1
2
3
4
|
# ls javolution-5.5.1.jar memcached-session-manager-tc7-1.8.2.jar spymemcached-2.10.2.jar memcached-session-manager-1.8.2.jar msm-javolution-serializer-1.8.2.jar cp * /usr/local/tomcat/lib/
|
5.)将jar包复制到node2节点:
1
|
scp *192.168.169.129: /usr/local/tomcat/lib/
|
6.)修改server.xml,在host上定义一个用于测试的context容器,并在其中创建一个会话管理器:
1
2
3
4
5
6
7
|
# vim/usr/local/tomcat/conf/server.xml <Context path= "/session" docBase= "/usr/local/tomcat/webapps/session" >
<ManagerclassName= "de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes= "n1:192.168.169.130:11211"
requestUriIgnorePattern= ".*\.(ico|png|gif|jpg|css|js)$" transcoderFactoryClass= "de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory" />
< /Context >
|
7.)重启Tomcat,并修改node2节点的server.xml,和node1节点保持一致。
8.)安装memcached,可以使用源码包,也可以使用rpm包,去memcached站点下载,需要注意的是所依赖的libevent。我这边就是使用yum安装的了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# yum –y installmemcached # service memcachedstart # ss -tunl Netid State Recv-Q Send-Q Local Address:Port PeerAddress:Port udp UNCONN 0 0 *:68 *:* udp UNCONN 0 0 *:11211 *:* udp UNCONN 0 0 :::11211 :::* tcp LISTEN 0 128 :::11211 :::* tcp LISTEN 0 128 *:11211 *:* tcp LISTEN 0 128 *:80 *:* tcp LISTEN 0 128 :::22 :::* tcp LISTEN 0 128 *:22 *:* tcp LISTEN 0 100 ::1:25 :::* tcp LISTEN 0 100 127.0.0.1:25 *:* |
9.)访问测试:
测试得到的结果是网页的内容发生了变化,但是可以看到Session ID 一直没有变化。
相关推荐
windows下配置nginx反向代理tomcat,从下载地址开始讲起,第二步讲常用命令 第三步讲了一个实例,第四步是配置说明
Nginx反向代理Tomcat服务器.pdf
两边通过同一个nginx进行反向代理,nginx配置大致如下, location /health/ { proxy_pass http://192.168.40.159:8081/health/; #无问题的配置 } location /health-dev/ { proxy_pass ...
Nginx+Tomcat实现反向代理的案例,里面包括了https的配置,和普通配置。希望能给需要的人带来帮助,启动Tomcat,然后启动呢Nginx就可以直接做测试。100%成功。
Nginx反向代理实现多Tomcat负载均衡 (1).md
nginx1.6的安装 tomcat7的安装(包括jdk7) nginx+tomcat反向代理配置
Nginx反向代理服务器配置基础教程
基于tomcat7版本的memcached会话保持,内置tomcat需要的jar包。
解决配置Nginx反向代理后,可以通过域名访问Linux下部署的Tomcat,但却访问不到部署的项目问题
NULL 博文链接:https://lyl-zsu.iteye.com/blog/2406318
Docker 搭建tomcat挂载本地、搭建nginx 挂载本地、实现nginx反向代理tomcat三篇文章是连载的,不懂的可以一起看,超级详细。
教程视频:Nginx反向代理web服务器,后台java控制连接访问。
https服务器nginx反向代理配置,SSL连接下的域名访问应用服务器配置
通过使用Nginx 反向代理来解决JS跨域问题 http://blog.csdn.net/mzhaocai/article/details/79238338
nginx多网站反向代理
nginx反向代理配置 动静分离不错的代理
尝试将 C2 隐匿于多级 nginx 反向代理关于利用多级 nginx 反代实现 beacon 上线的大致思路拓扑大致思路是这样,首先,我们会用一个 CS 的外
3.找到D:\nginx\conf下nginx.conf文件用记事本打开 在文段末尾大括号前加上 include proxy.conf;(就是加载刚刚新建的那个文件(注意路径)) 4.进入cmd 进入D盘: d: 进到nginx文件夹下:cd nginx 启动nginx.exe:...
包含的jar包如下: commons-pool2-2.0.jar jedis-2.5.2.jar tomcat-juli-adapters.jar tomcat-juli.jar tomcat-redis-session-manager1.2.jar