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 的浏览器中保留。