Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。
环境:
一台公网客户ip:202.106.0.20
一台nginx代理服务器ip:192.168.1.11 公网ip:202.106.0.1
两台私网memcached服务器ip:192.168.1.111 ip:192.168.1.112
两台私网web服务器ip:192.168.1.12 动态tomcat网页 ip:192.168.1.13 动态tomcat网页
需求:
1:公网客户可以通过nginx代理服务器访问公司主页www.sw.com,并实现session会话共享
2:nginx可以实现动态和静态网页分离访问不同web服务器
3:防防盗链
实现步骤:
1:web服务器上安装jdk库包和tomcat源码包,设置为开机启动
[root@tom1 ~]#yum -y install gcc gcc-c++ make //安装编译环境包
[root@tom1 ~]#chmod +x jdk-6u27-linux-i586.bin //给bin包执行权限
[root@tom1 ~]#./jdk-6u27-linux-i586.bin //运行jdk.bin安装
[root@tom1 ~]#mv jdk1.6.0_27 /usr/local/jdk //习惯上把源码包放到/usr/local下
[root@tom1 ~]#vim /etc/bashrc //定义java参数让系统调用
export JRE_HOME=/usr/local/jdk //主目录位置export JAVA_BIN=/usr/local/jdk/bin //bin文件夹位置export PATH=$JRE_HOME/bin:$PATH //设为系统全局变量,方便调export CLASSPATH=.:$JRE_HOME/lib/dt.jar:$JRE_HOME/lib/tools.jar //指定工具位置export JRE_HOME JAVA_BIN PATH CLASSPATH //定义为系统全局变量
[root@tom1 ~]# tar -zxvf apache-tomcat-6.0.32.tar.gz -C /usr/local //解压并放到/usr/local下
[root@tom1 ~]# mv /usr/local/{apache-tomcat-6.0.32,tomcat} //重命名
[root@tom1 tomcat]# ./bin/startup.sh //启动tomcat
[root@tom1 tomcat]# vim conf/tomcat-users.xml //访问tomcat网页根据错误提示添加用户和密码
3637 38
[root@tom1 tomcat]# ./bin/shutdown.sh //关闭tomcat
[root@tom1 tomcat]# ./bin/startup.sh //启动tomcat
[root@tom1 ~]# vim /etc/rc.local //添加到开机启动脚本
/usr/local/tomcat/bin/startup.sh
2:代理服务器上安装nginx源码包程序,设置为开机启动,备份主配置文件,配置成反向代理
[root@1.11 ~]# useradd -M -s /sbin/nologin nginx //添加系统用户nginx,无家目录和禁止登录
[root@1.11 ~]#yum -y install gcc gcc-c++ make pcrc-devel openssl-devel //安装编译环境开发包
[root@1.11 ~]#mkdir /nginx //创建存放文件夹
[root@1.11 nginx-0.8.55]# ./configure --prefix=/nginx \ //转换源码,指定安装目录
>--user=nginx --group=nginx //指定进程属主,属组
>--with-http_stub_status_module --with-http_ssl_module; //加载查看状态模块,ssl模块
[root@1.11 nginx-0.8.55]# make && make install //编译安装
[root@1.11 ~]# vim /etc/rc.local //添加到开机启动脚本
/nginx/sbin/nginx
[root@1.11 ~]# cp -p /nginx/conf/{nginx.conf,nginx.conf.bak} //备份主配置文件
[root@1.11 ~]# vim /nginx/conf/nginx.conf
... 3 worker_processes 1; //进程个数,建议和cpu核数相同...12 events {13 worker_connections 1024; //每进程最大并发连接数14 }...17 http {...20 upstream web { //定义web地址池组 21 server 192.168.1.12:8080; 22 server 192.168.1.13:8080;23 }...122 server {123 listen 80;124 server_name www.sw.com;125 location / {128 proxy_pass http://web; //调用web地址池129 }130 location ~* \.jsp$ { //当访问结尾是jsp时,代理到192.168.1.12 192.168.1.13131 proxy_pass http://web;132 }133 location ~* \.(gif|png|jpg|mp3|rm|flv)$ { //防盗链,只允许本域直接访问134 valid_referers none blocked .sw.com;135 if ($invalid_referer) { rewrite ^/ http://192.168.1.11/error.htm;}136 }137 }...150 }
3:缓存服务器上安装库包和memcached源码包,设置为开机启动
[root@mem2 ~]# tar -zxvf libevent-2.0.15-stable.tar.gz
[root@mem2 libevent-2.0.15]# ./configure &&make &&make install
[root@mem2 ~]# vim /etc/ld.so.conf.d/libevent.conf
/usr/local/lib
[root@mem2 ~]# ldconfig -v|grep libevent
[root@mem2 ~]# tar -zxvf memcached-1.4.5.tar.gz
[root@mem2 memcached-1.4.5]# ./configure &&make &&make install
[root@mem2 ~]# vim /etc/rc.localhost
memcached -l 192.168.1.112 -u root -d -vvv -m 100M -n 10 -f 2
[root@mem2 ~]# memcached -l 192.168.1.112 -u root -d -vvv -m 100M -n 10 -f 2
4:配置tomcat,使链接memcached的会话信息共享
类库:kryo-1.04.jar kryo-serializers-0.9.jar minlog-1.2.jar msm-kryo-serializer-1.5.1.jar reflectasm-1.01.jar
管理类:memcached-2.5.jar memcached-session-manager-1.5.1.jar memcached-session-manager-tc6-1.5.1.jar [root@tom1 ~]# cp * /usr/local/tomcat/lib/ //把上面的类包都复制进tomcat的lib目录
[root@tom1 ~]# vim /usr/local/tomcat/conf/context.xml //编辑连接配置文件添加
...1920 ...//class等是定义调用类,REQUEST定义不缓存的内容,memcached指定缓存服务器地址,failover指定备用节点
[root@tom1 ~]# /usr/local/tomcat/bin/shutdown.sh //重启tomcat
[root@tom1 ~]# /usr/local/tomcat/bin/startup.sh