1. nginx安装配置
yum -y install openssl-devel
安装nginx所需的pcre:
yum方式安装:yum -y install pcre-devel
tar方式安装:
tar xvzf pcre-8.12.tar.gz
cd pcre-8.12
./configure --disable-shared --with-pic
make
make install
安装nginx
tar xvzf nginx-0.8.51.tar.gz
cd nginx-0.8.51
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make
make install
配置nginx
vi /usr/local/nginx/conf/nginx.conf
user nobody;
worker_processes 1;
error_log logs/error.log info;
#pid logs/nginx.pid;
events {
use epoll;
worker_connections 1024;(根据服务器的open files配置.查看open files的命令:ulimit -a)
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
sendfile on;
keepalive_timeout 65;
#设置Web缓存区名称为cache_one,内存缓存空间大小为100MB,1天没有被访问的内容自动清除,硬盘缓存空间大小为1GB
proxy_cache_path /usr/local/nginx/cache_data levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=1g;
upstream www.test.com {
#ip_hash策略将同一IP的所有请求都转发到同一应用服务器
ip_hash;
server localhost:8080;
server localhost:8081;
}
server {
listen 80;
server_name localhost;
charset utf-8;
location / {
root html;
index index.html index.htm;
proxy_pass http://www.test.com;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 100m;
}
error_page 500 502 503 504 /50x.html;
location ~* \.(gif|jpg|jpeg|png|bmp)$ {
proxy_cache cache_one;
proxy_cache_valid 200 302 304 1h;
proxy_cache_key $host$uri$is_args$args;
proxy_pass http://www.test.com;
add_header Last-Modified $date_gmt;
add_header Via $server_addr;
expires 30d;
}
}
}
2. memcache安装配置
安装依赖包libevent
tar xvzf libevent-1.4.9-stable.tar.gz
cd libevent-1.4.9-stable
./configure -prefix=/usr
make
make install
安装memcache
#cd memcached
#./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent //必须指定libevent否则,这步无法通过
#make
#make install
将memcached加入到防火墙允许访问规则中,默认端口是11211
启动memcache ,以下命令运行memcached
/usr/local/memcached/bin/memcached -d -m 200 –l 192.168.1.201 –p 11211 -P /tmp/memcached.pid
如果运行报错,说libevent.so库找不到,请将libevent.so文件复制到/usr/lib目录下
#cp -f /usr/local/libevent/lib/* /usr/lib/
拷贝完了,还不行?还说找不到so文件?
#LD_DEBUG=libs /usr/local/memcached/bin/memcached -v
用这个命令看看它都到哪儿找去了,果然位置不对
vi /etc/ld.so.conf
添加/usr/lib
/usr/local/lib
/usr/lib64
然后在任意目录执行/sbin/ldconfig 使你新配置的库文件位置生效。
然后就可以成功启动了。
-d选项是启动一个守护进程,
-m是分配给Memcache使用的内存数量,单位是MB,我这里是200MB,默认64MB
-l是监听的服务器IP地址,多个memcache服务器节点,请用ip地址,本机可以用localhost。
-c选项是最大运行的并发连接数,默认是1024,按照你服务器的负载量来设定,
-P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,
如果要结束Memcache进程,执行:
# kill `cat /tmp/memcached.pid`
3. tomcat配置
配置tomcat集群实现session共享
vi $tomcat/conf/server.xml
修改Engine部分配置 <!--加入jvmRoute="jvm1" 两个tomcat的值不能相同-->
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
添加memcached的tomcat集成包
Memcached-session-manager-1.3.0.jar
msm-javolution-serializer-jodatime-1.3.0.jar
msm-javolution-serializer-cglib-1.3.0.jar
msm-javolution-serializer-1.3.0.jar
将这些文件放到每台tomcat服务器的tomcat/lib目录下
修改每台服务器的tomcat配置文件:tomcat/conf/context.xml文件,在<Context>根元素下添加如下配置。
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.1.201:11211,n2:192.168.1.206:11211"
requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$" transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
sessionBackupAsync="false"
sessionBackupTimeout="100"
copyCollectionsForSerialization="false"
failoverNodes="n2"
/>
说明:memcachedNodes节点配置的是所有memcache服务器节点,failoverNodes是故障转义节点,比如说206上的tomcat服务器出了故障,或者宕机了,memcache会自动将session转移到201上面。
打印memcache日志
在$CATALINA_HOME/conf/logging.properties文件中添加de.javakaffee.web.msm.level=FINE,就可以在catalina.out的日志中看到详细的session存取情况
重启每个服务器上的tomcat服务