nginx+memcache+tomcat

一、安装Nginx

  下载nginx :nginx-1.4.7.tar.gz 放到~/Software目录

   # tar zxvf nginx-1.4.7.tar.gz
  # tar zxvf nginx-1.4.7.tar.gz
  # cd nginx-1.4.4
  #./configure --prefix=/usr/local/nginx

  # make
  # make install

安装成功后 /usr/local/nginx 目录下有四个子目录分别是:conf、html、logs、sbin 。
其中 Nginx 的配置文件存放于 conf/nginx.conf,
bin文件是位于 sbin 目录下的 nginx 文件。
确保系统的 80 端口没被其他程序占用,运行 sbin/nginx 命令来启动 Nginx,
打开浏览器访问此机器的 IP,如果浏览器出现 Welcome to nginx! 则表示 Nginx 已经安装并运行成功

如果出错,请参考 http://blog.sina.com.cn/s/blog_4ad7c2540101duql.html

二 配置Nginx + tomcat

 修改 /usr/local/nginx/conf/nginx.conf文件 :

worker_processes  2;


error_log  logs/error.log  info;

pid        logs/nginx.pid;


events {
    #使用网络IO模型linux建议epoll,FreeBSD建议采用kqueue
    use epoll;
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;


    access_log  logs/access.log;
   
###########################
    client_header_timeout  3m;
    client_body_timeout    3m;
    send_timeout           3m;
 
    client_header_buffer_size    1k;
    large_client_header_buffers  4 4k;

    tcp_nopush      on;
    tcp_nodelay     on;

    upstream localhost {
     #ip_hash
      server localhost:18081;
      server localhost:18080;
     }
##############################

    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       9999;
        server_name  localhost;

       location / {
              proxy_connect_timeout   3;
              proxy_send_timeout      30;
              proxy_read_timeout      30;
                proxy_pass http://localhost;
            }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
上面配置中, 9999 是nginx的监听端口,即访问端口,18080和 18081是 tomcat的端口。

tomcat配置文件中

 <Connector port="18080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
这里使用的端口是 HTTP协议端口,而不是 apache跟 tomcat结合使用的ajp13协议端口

 测试,在tomcat的webapps下面新建一个 test.jsp,内容如下:

Welcome,Here!
<%
System.out.println("============tomcat3======"+new java.util.Date());

session.setAttribute("name3","tomcat3");
%>
tomcat3================<%=new java.util.Date()%>

<br>name3===${name3}</br>
<br>name4===${name4}</br>

 <br>i was created by tomcat3,my sesssion Id is <%=session.getId()%></br>

 另外一个tomcat中的 test.jsp文件内容如下:

Welcome,Here!
<%
System.out.println("============tomcat4======"+new java.util.Date());

session.setAttribute("name4","tomcat4");
%>
tomcat4================<%=new java.util.Date()%>

<br>name3===${name3}</br>
<br>name4===${name4}</br>

<br>i was created by tomcat4,my sesssion Id is <%=session.getId()%></br>

测试:访问 http://localhost:9999/test.jsp,可以看到 tomcat3 和tomcat4 交替访问。

但是sessionId每次都不同,两个tomcat之间没有做到共享。下面介绍用 memcache做session服务器。

三、安装 Memcache

1.安装memcache,需要先安装libevent

    http://libevent.org/ 下载最新稳定版 libevent,并安装:

     tar -zxvf ***.tar.gz 解压完之后,进入目录,

     ./configure --with-prefix=/usr

     make
     make install

   

    测试libevent是否安装成功:
   ls -al /usr/lib | grep libevent

 还不错,都安装上了。

2.安装memcached,同时需要安装中指定libevent的安装位置:
# cd /tmp
# tar zxvf memcached-1.2.0.tar.gz
# cd memcached-1.2.0
# ./configure –with-libevent=/usr
# make
# make install

进行 bin目录,启动 memcache
方法如下:
./memcached -d -u nobody -m 512 127.0.0.1 -p 11211 

或者以如下方式启动:./memcached -d -u nobody -vv >>/tmp/memcached.log 2>&1

这样可以方便的查看 memcache日志。

四。配置memcache + tomcat

① 下载下面几个jar包,放到 tomcat的 lib目录中:

memcached-2.5.jar
memcached-session-manager-1.5.1.jar
memcached-session-manager-tc6-1.5.1.jar
msm-javolution-serializer-1.5.1.jar

volution-5.5.1.jar

②修改 tomcat的 conf目录下的context.xml文件:

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:localhost:11211" requestUriIgnorePattern=".*\.(png|gif|jpg|css|js){1}quot;" sessionBackupAsync="false" sessionBackupTimeout="100" transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"  copyCollectionsForSerialization="false"/>

启动memcache ,并打开日志(tail -f /tmp/memcached.log) ,访问http://localhsot:9999/test.jsp

就可以看到 tomcat交替访问,但是sessionId始终保持不变。即完成了session共享实验。

不过用自己的一个 项目放在两个tomcat中,发现一个登录之后,再进入home页的时候又提示请登录,暂时还没有解决问题。

Welcome,Here! tomcat3================Mon Jun 09 16:36:52 CST 2014
name3===tomcat3

name4===tomcat4

I was created by tomcat3,my sesssion Id is 96B904259F76AA8DBC7CE22AC2ACCDCA-n1.tomcat-3

经过仔细查看发现,96B904259F76AA8DBC7CE22AC2ACCDCA-n1.tomcat-3 这个才是看到的sessionId,前面的一串ID始终没有变化,但是后缀一个是 tomcat-3,另外一个是tomcat-4,所以这个可能是导致没有完全共享的原因。

 记录部分 memcache日志:

重启之后的访问

36: Client using the ascii protocol
<36 get ping-n1
>36 END
<36 get 9DDEE1A3A887BCA205FCA16E496A105B-n1.tomcat-3
>36 sending key 9DDEE1A3A887BCA205FCA16E496A105B-n1.tomcat-3
>36 END
<36 delete 9DDEE1A3A887BCA205FCA16E496A105B-n1.tomcat-3
>36 DELETED
<36 set 9DDEE1A3A887BCA205FCA16E496A105B-n1.tomcat-4 2048 1798 634
>36 STORED

刷新可以看到:

<42 get ping-n1
>42 END
<42 get 9DDEE1A3A887BCA205FCA16E496A105B-n1.tomcat-4
>42 sending key 9DDEE1A3A887BCA205FCA16E496A105B-n1.tomcat-4
>42 END
<42 delete 9DDEE1A3A887BCA205FCA16E496A105B-n1.tomcat-4
>42 DELETED
<42 set 9DDEE1A3A887BCA205FCA16E496A105B-n1.tomcat-3 2048 1800 634
>42 STORED

再刷新可以看到:

<36 get ping-n1
>36 END
<36 get 9DDEE1A3A887BCA205FCA16E496A105B-n1.tomcat-3
>36 sending key 9DDEE1A3A887BCA205FCA16E496A105B-n1.tomcat-3
>36 END
<36 delete 9DDEE1A3A887BCA205FCA16E496A105B-n1.tomcat-3
>36 DELETED
<36 set 9DDEE1A3A887BCA205FCA16E496A105B-n1.tomcat-4 2048 1800 634
>36 STORED

  

猜你喜欢

转载自luckytyy.iteye.com/blog/2074675