tomcat + java + nginx

1:安装java-jdk

tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/
cd /usr/local/
ln -s jdk1.7.0_79/ java
vim /etc/profile    
 80 export JAVA_HOME=/usr/local/java
 81 export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
 82 export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile

2:安装tomcat

Apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展。 Apache和Tomcat都可以做为独立的web服务器来运行,但是Apache不能解释java程序(jsp,servlet)。

两者都是一种容器,只不过发布的东西不同:Apache是html容器,功能像IIS一样;Tomcat是jsp/servlet容器,用于发布jsp及java的,类似的有IBM的websphere、BEA的Weblogic,sun的JRun等等。

打个比方:Apache是一辆卡车,上面可以装一些东西如html等。但是不能装水,要装水必须要有容器(桶),Tomcat就是一个桶(装像Java这样的水),而这个桶也可以不放在卡车上。

tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/
cd /usr/local/
ln -s apache-tomcat-7.0.37/ tomcat

启动tomcat

# cd /usr/local/tomcat/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/java
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

 写测试页

cd webapps/ROOT/     #默认发布目录
cat test.jsp 
The time is: <%=new java.util.Date() %>

测试

[root@foundation1 day06]# curl 172.25.12.1:8080/test.jsp 
The time is: Mon Aug  6 23:56:41 CST 2018
[root@foundation1 day06]# curl 172.25.12.2:8080/test.jsp
The time is: Mon Aug  6 23:56:41 CST 2018

安装nginx

./configure --prefix=/usr/local/lnmp/nginx/ --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --add-module=/root/nginx-sticky-module-ng   #添加了sticky模块
make && make instal

nginx.conf

http {
upstream tomcat {
sticky;     #  可以在访问的时候如同一个浏览器访问同一个服务器
server 172.25.12.2:8080;   #轮询的时候进行端口转发,本来访问的是nginx的80
server 172.25.12.3:8080;
}

         location / {        #去/usr/local/tomcat/webapps/ROOT里面拿一些链接
             root /usr/local/tomcat/webapps/ROOT;
         #root   html;
             index index.php  index.html index.htm;

location ~ \.jsp$ {
#所有 .jsp 页面交给 tomcat
proxy_pass
http://tomcat;

server1 & server2

vim /usr/local/tomcat/webapps/ROOT/test.jsp

<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
<%
out.println("<br> ID " + session.getId()+"<br>");
String dataName = request.getParameter("dataName");
if (dataName != null && dataName.length() > 0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}
out.print("<b>Session list</b>");
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
String value = session.getAttribute(name).toString();
out.println( name + " = " + value+"<br>");
System.out.println( name + " = " + value);
}
%>
<form action="test.jsp" method="POST">
name:<input type=text size=20 name="dataName">
<br>
key:<input type=text size=20 name="dataValue">
<br>
<input type=submit>
</form>
</body>
</html>

修改好以后,可以进行测试,在同一个浏览器下,刷新页面不会变,并且存入的数据在同一
台服务器上

但是如果这太服务器或者是上面的服务挂了,那么数据就会丢失

tomcat + java + nginx + memcached

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

在server1和server2中进行相同的操作

yum install memcached   #安装memcached来进行数据缓存
/etc/init.d/memcached start
bin/shutdown.sh     #将tomcat关掉进行配置
vim /usr/local/tomcat/conf/context.xml

 34 <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
 35 memcachedNodes="n1:172.25.12.1:11211,n2:172.25.12.2:11211"
 36 failoverNodes="n1"    #server1对应n1   在server2上面对应n2
 37 requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
 38 transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoder    Factory"
 39 />

cd /usr/local/tomcat/lib/
将jar里面的东西导入
#jar罐子
删除rm -f memcached-session-manager-tc6-1.6.3.jar


在网页中访问http://172.25.12.1/test.jsp
存入数据就会在1上面存数据,但是数据会存储在2的memcache上面

 Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在 Session 对象中。有关使用 Session 对象的详细信息,请参阅“ASP 应用程序”部分的“管理会话”。注意 会话状态仅在支持 cookie 的浏览器中保留。

猜你喜欢

转载自blog.csdn.net/u010489158/article/details/81463546