一、安装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