web服务器
  web服务器是安装在服务端主机上实现了http协议的软件,也叫http服务器,如微软的IIS,当前排名第一开源免费的Apache(个人认为,凡是实现了应用层协议的软件都可以叫web服务器,如ftp服务器,smtp服务器,只不过我目前只关心http服务)。 
  必备的功能是对某个端口(通常是80端口)循环监听,被动接受客户端发送到该端口的http请求,并进行响应。 
  根据这个原理,我们可以自己编写web服务器,如socket编程。若客户端使用http协议,如浏览器,那我们必须根据应用层的http协议来自己解析和封装要交互的数据。 
  通常B/S架构的开发,即web开发,必须使用http协议,因为B是已经实现的浏览器,必使用http协议。 
  通常C/S架构的开发,都是在传输层直接交互数据,无需再封装数据为http格式,因为客户端和服务端都是我们自己做,我们自己定义数据格式。

Tomcat服务器
  通常意义上的web服务器接受请求后,只是单纯地响应静态资源,如html文件,图片文件等,不能在后端进行一定的处理操作。 
  Tomcat是Apache下的一个子项目,它具备web服务器的所有功能,不仅可以监听接受请求并响应静态资源,而且可以在后端运行特定规范的java代码servlet,同时将执行的结果以html代码的形式写回客户端。 
  Tomcat由一系列的组件构成,其中核心的组件有三个: 
  web容器——完成web服务器的功能。 
  servlet容器——名字为catalina,用于处理servlet代码。 
  jsp容器——用于将jsp动态网页翻译成servlet代码。

Tomcat的目录
  bin:主要存放启动和配置Tomcat服务器的可执行文件。 
  conf:存放Tomcat服务器的全局配置文件。 
  lib:存放Tomcat服务器运行以及部署在Tomcat服务器上的web项目运行所需要的jar包,该目录下的内容被全部该服务器上的web项目共享。 
  logs: 
  temp: 
  webapps:存放部署在Tomcat服务器上的web项目,该目录可以改变。 
  work:工作目录,存放web项目运行时生成的过渡资源。 
  LICENSE:协议内容。 
  NOTICE:注意事项。 
  RELEASE-NOTES:当前版本的注意事项。 
  RUNNING.txt:Tomcat的下载、安装、环境配置以及运行等等的流程详细介绍。

脚本语言
  脚本语言的特点是不能单独运行,必须嵌入到其它语言才能运行,如网页脚本必须嵌入到html代码。有的脚本语言是在前端运行的,如javascript,有的脚本语言是在后端运行的,如php、jsp、asp,通常称后端运行的脚本为动态脚本语言,相应的网页称为动态网页。动态网页被翻译成静态html页写回到客户端。
 

###############tomcat-->java

tomcat用来处理动态页面  nginx处理静态效率低

tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/
tar zxf apache-tomcat-7.0.37.tar.gz  -C /usr/local
cd /usr/local/
ln -s jdk1.7.0_79/ java
ln -s apache-tomcat-7.0.37/ tomcat

 

vim /etc/profile
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin

source /etc/profile

vim test.java
public class test {
    public static void main(String[] args)
    {
        System.out.println("Hello World");    
    }
}
测试
javac test.java
java test


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

http {
    upstream tomcat {
        server 172.25.11.1:8080;
        server 172.25.11.3:8080;
    }

76行
location ~ \.jsp$ {
    proxy_pass  http://tomcat;
}

注释之前 location /memc


            #set $key $uri$args;
            #srcache_fetch GET /memc $key;
            #srcache_store PUT /memc $key;

cd /usr/local/tomcat/webapps/ROOT
写一个
vim test.jsp
the time is: <%=new java.util.Date() %>

cd /usr/local/tomcat/bin
sh startup.sh
然后访问

​ http://172.25.11.1:8080/​

 

server2 只需要转移tomcat 和 jdk 作好软连接开启tomcat 服务就好

scp -r /usr/local/apache-tomcat-7.0.37 /usr/local/tomcat1 root@172.25.11.2:/usr/local

ln -s jdk1.7.0_79/ java
ln -s apache-tomcat-7.0.37/ tomcat
环境变量一样
vim /etc/profile

source /etc/profile
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin

cd /usr/local/tomcat/webapps/ROOT/
vim test.jsp
server2 the time is: <%=new java.util.Date() %>

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

172.25.11.1:8080是 tomcat的主页面
访问172.25.11.1/test.jsp   就可以轮询了

重起后
server1
/etc/init.d/php-fpm start
/etc/init.d/mysqld start
/usr/local/openresty/nginx/sbin/nginx
sh /usr/local/tomcat/bin/startup.sh

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

实现sticky 功能
nginx-sticky-module-ng.tar.gz
解压到/root/
使用nginx-1.10.1

server1
./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
make && make install

mv  /usr/local/openresty/nginx/conf/nginx.conf  /usr/local/lnmp/nginx/conf/

vim /usr/local/lnmp/nginx/conf/nginx.conf

在http的tomcat函数中加入
sticky;

mv test.jsp /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>
####################################################

 

清除日志
> /usr/local/tomcat/logs/catalina.out

 

实现资源共享
server2 1  都要作下面的
yum install -y memcached
/etc/init.d/memcached start

需要
kryo-1.03.jar
kryo-serializers-0.8.jar
memcached-2.5.jar
memcached-session-manager-1.5.1.jarmemcached-session-manager-tc7-1.5.1.jar
minlog-1.2.jar
msm-kryo-serializer-1.5.1.jar
reflectasm-0.9.jar

jar中的memcache-session-*  放到tomcat/lib中
scp memcached-session-manager-* root@server3:/usr/local/tomcat/lib/
rm -fr /usr/local/tomcat/lib/memcached-session-manager-tc6-1.6.3.jar

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

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.11.1:11211,n2:172.25.11.3:11211"
failoverNodes="n1"  
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>

 

添加两个节点

然后  /usr/local/tomcat/bin/shutdown.sh
      /usr/local/tomcat/bin/startup.sh

关闭
mysqld
memcached
php-fpm
nginx -s stop
tomcat
/usr/local/tomcat/bin/shutdown.sh