LNMP的扩展---如何访问动态页面?

在LNMP架构中,考虑了静态资源的访问,直接由nginx将结构返回给客户端,但是访问动态资源并没有考虑。本博文将实现访问动态资源。简单来说,动态资源的访问过程可以简化如下:
-> .jsp页面 -> tomcat会将.jsp翻译成 .java源文件 -> 调用jdk中的javac命令编译.java文件为.class -> jvm运行 .class -> .html->客户端

1.JSP介绍:

JSP (java服务器页面)
JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
它实现了Html语法中的java扩展(以 <%, %>形式)。JSP与Servlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。
JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。
Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。

2. tomcat介绍:

Tomcat是运行在JVM中的一个进程。它定义为【中间件】,顾名思义,是一个在Java项目与JVM之间的中间容器。Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

3.实现访问简单的动态页面

(1)下载apache-tomcat与jdk安装包解压,并且为切换目录方便,将apache-tomcat-7.0.37/做软链接

[root@server1 ~]# tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local
[root@server1 ~]# tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local
[root@server1 ~]# cd /usr/local
[root@server1 local]# ls
apache-tomcat-7.0.37  etc    include      lib    libexec  openresty  share
bin                   games  jdk1.7.0_79  lib64  lnmp     sbin       src
[root@server1 local]# ln -s apache-tomcat-7.0.37/ tomcat

在这里插入图片描述
(2)配置JAVA的环境变量

[root@server1 local]# vim /etc/profile
[root@server1 local]# source /etc/profile

在这里插入图片描述
(3)启动tomcat,端口为8080

cd /usr/local/tomcat/bin
 ./startup.sh

在这里插入图片描述
在这里插入图片描述
构建到现在所开端口
在这里插入图片描述

(4)打开tomcat的8080端口之后,通过http://172.25.33.1:8080/,可以访问默认页面index.jsp,但是想要访问80端口自动转到8080端口,修改openresty的配置文件
在这里插入图片描述

vim /usr/local/openresty/nginx/conf/nginx.conf

在这里插入图片描述
在这里插入图片描述
(5)上一步实现了80端口到8080的转发,在tomcat默认发布页面下写一个简单的动态页面,实现动态资源的访问
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
就这样,我们实现了简单的动态访问!!!!!

4.实现tomcat的负载均衡

利用tomcat中间件将jsp访问进行负载均衡,具体环境如下:
tomcat服务器和后端服务器一:172.25.33.1(80、8080、11211、3306、9000端口都已开)
后台服务器二:172.25.33.2

(1)另一台后端服务器的操作:

[root@server2 ~]# tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local
[root@server2 ~]# tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local
[root@server2 ~]# vim /etc/profile
[root@server2 ~]# source /etc/profile
[root@server2 ~]# cd /usr/local
[root@server2 local]# ln -s apache-tomcat-7.0.37/ tomcat     #这些基础步骤和server1之前的步骤一样

[root@server2 bin]# ./startup.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk1.7.0_79
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

在这里插入图片描述
在这里插入图片描述
(2)server1修改openresty配置文件,实现负载均衡:

vim /usr/local/openresty/nginx/conf/nginx.conf

在这里插入图片描述
在这里插入图片描述
(3)将一个用来测试负载均衡的页面放到server1和server2的tomcat发布目录下,并且重新关闭再打开tomcat:

cd /usr/local/tomcat/bin
./shutdown.sh
./startup.sh

在这里插入图片描述
在这里插入图片描述
(4)测试能否实现负载均衡:

浏览器输入:

http://172.25.33.1/test.jsp

在这里插入图片描述
在这里插入图片描述

5.实现tomcat的会话保持

 可以看到在4中,实现了负载均衡,但是当切换服务器时,数据也随之切换,对于用户是不可取的,应该可以看到数据精准的保持到一台服务器上
(1)下载nginx1.10.1(其他版本可能不支持stick)和nginx-sticky的安装包,并编译nginx

[root@server1 local]# /usr/local/openresty/nginx/sbin/nginx -s stop
[root@server1 ~]# tar zxf nginx-1.10.1.tar.gz 
[root@server1 ~]# tar zxf nginx-sticky-module-ng.tar.gz 
[root@server1 ~]# /usr/local/lnmp/nginx/sbin/nginx -V    #查看以前版本编译参数
nginx version: nginx/1.16.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) 
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --user=nginx --group=nginx
[root@server1 nginx-1.10.1]# ./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --user=nginx --group=nginx --add-module=/root/nginx-sticky-module-ng
#重新编译,添加sticky模块
[root@server1 nginx-1.10.1]# make && make install

在这里插入图片描述
(2)拷贝之前openresty的配置文件为nginx1.10.0版本的配置文件,并修改后重新加载

[root@server1 nginx-1.10.1]# cp /usr/local/openresty/nginx/conf/nginx.conf /usr/local/lnmp/nginx/conf
cp: overwrite `/usr/local/lnmp/nginx/conf/nginx.conf'? y
[root@server1 nginx-1.10.1]# cd /usr/local/lnmp/nginx/conf
[root@server1 conf]# vim nginx.conf
[root@server1 conf]# ../sbin/nginx -s reload

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
(3)测试:

浏览器输入:
http://172.25.33.1/test.jsp
提交数据 观察数据是否保留在一个服务端上

在这里插入图片描述

6.实现tomcat的会话共享

在这里插入图片描述
在这里插入图片描述
当两台后端服务器中由一台挂掉了,能否保证数据不丢失并转移到另外一台服务器中,这就需要会话共享,操作如下:

(1)server2下载memcached

[root@server2 bin]# yum install memcached -y

(2)server1和server2获得支持会话共享的jar包,放到/usr/local/tomcat/lib下

[root@server1 lib]# ls
annotations-api.jar                  memcached-session-manager-tc6-1.6.3.jar
asm-3.2.jar                          memcached-session-manager-tc7-1.6.3.jar
catalina-ant.jar                     minlog-1.2.jar
catalina-ha.jar                      msm-kryo-serializer-1.6.3.jar
catalina.jar                         reflectasm-1.01.jar
catalina-tribes.jar                  servlet-api.jar
ecj-4.2.1.jar                        spymemcached-2.7.3.jar
el-api.jar                           tomcat-api.jar
jasper-el.jar                        tomcat-coyote.jar
jasper.jar                           tomcat-dbcp.jar
jdk-7u79-linux-x64.tar.gz            tomcat-i18n-es.jar
jsp-api.jar                          tomcat-i18n-fr.jar
kryo-1.04.jar                        tomcat-i18n-ja.jar
kryo-serializers-0.10.jar            tomcat-jdbc.jar
memcached-session-manager-1.6.3.jar  tomcat-util.jar
[root@server1 lib]# rm -fr memcached-session-manager-tc6-1.6.3.jar

在这里插入图片描述
在这里插入图片描述
(3)server1和server2修改context.xml文件,然后关闭再重启tomcat

cd /usr/local/tomcat/conf/context.xml

在这里插入图片描述

在这里插入图片描述
(4)此时,先将server1和server2的tomcat都打开,在浏览器输入数据,然后挂掉正在会话保持的服务器,看能否转移数据
在这里插入图片描述
在这里插入图片描述

vim  /usr/local/tomcat/logs   在server1上可以看到转移的数据

在这里插入图片描述
备注:ip_hash 可以实现sticky,但是当主机掉了以后就不能切掉另外一台主机 但数据不会丢失 当主机恢复以后数据还在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值