javashop-6.4版本中将访问量比较高的页面(商城首页、商品详情页面、帮助中心)生成静态页时生成到redis缓存中,当访问这些页面的时候将会直接在redis中读取这些页面,这样做大大减轻了服务器的负担。所以,为了配合此功能的实现,需要在nginx中引入redis、lua等模块。

1 搭建nginx+lua+redis

使用服务器C:192.168.1.196进行搭建
javashop提供相关的压缩包,请使用下面链接自行下载。(链接: https://pan.baidu.com/s/1jHPVWEE 密码: q3cz)

* 安装nginx,安装至目录/usr/local/nginx。

* 将所有压缩文件放置 /home/root 目录

  • 跳转到压缩包目录:

    cd /home/root
    
  • 解压pcre:

  gzip pcre-8.32.tar  
  tar -xvf pcre-8.32.tar.gz
  • 解压 openresty:
  tar  -zxvf openresty-1.11.2.4.tar.gz
  • 安装openresty
  cd openresty-1.11.2.4  
  ./configure --with-pcre=/home/root/pcre-8.32/  
  gmake && gmake install
  • 安装LuaJIT

    cd /home/root  
    tar zxvf LuaJIT-2.0.4.tar.gz  
    cd LuaJIT-2.0.4  
    make && sudo make install
    
  • 编译/安装 nginx

  cd /home/root  
  tar -zxvf redis2-nginx-module-0.14.tar.gz  
  tar -zxvf nginx-1.11.2.tar.gz  
  tar -zxvf v0.28.tar.gz  
  tar -zxvf v0.3.0rc1.tar.gz  
  tar -zxvf v0.10.2.tar.gz
  tar -zxvf ngx\\_http\\_redis-0.3.8.tar.gz
  cd nginx-1.11.2

./configure --prefix=/usr/local/nginx --add-dynamic-module=/home/root/redis2-nginx-module-0.14 --add-module=/home/root/ngx\_devel\_kit-0.3.0rc1 --add-module=/home/root/set-misc-nginx-module-0.28 --add-module=/home/root/lua-nginx-module-0.10.2 --add-module=/home/root/ngx\_http\_redis-0.3.8

make && make install
  • 备份nginx.conf,使用我写好的nginx.conf
cd /home/root/

cp nginx.conf /usr/local/nginx/conf/
  • 倒入lua脚本
cd /home/root/lua

mkdir /usr/local/nginx/lua

mv rediscluster.lua /usr/local/nginx/lua/
  • 搭建完成之后正确的nginx安装目录下的目录如图:

  • 修改nginx配置文件,使之匹配自己的服务(nginx/lua)
vi /usr/local/nginx/conf/nginx.conf

主要替换内容:

a.这里代表每一个redis集群的节点需自行修改(修改成自己的redis信息,数量不限制,这里实例配置3个redis)


upstream redis-a{  
    server 192.168.1.190:6379;  
}

注意:

b.修改nginx的转发


server {  
listen       80;

server\_name  localhost; \#配置域名的位置  
\#charset koi8-r;   
\#access\_log  logs/host.access.log  main;

location  /redis {      \#redis固有模块,请勿修改  
           internal;  
           set\_unescape\_uri $query $arg\_query;  
           redis2\_query get $query;  
           redis2\_pass $arg\_backend;  
     }

这里代表使用lua响应内容。javashop是将商品页面(goods-.html)、帮助中心(help--*.html)、 首页(index.html)生 成静态页到redis缓存中,所以当url中访问这些页面的时候,将会通过nginx+lua+redis读取缓存中的静态页。

 location ~* goods-(\d+).html|index.html|help-(\d+)-(\d+).html {  
        default_type text/html;
        content_by_lua_file "/usr/local/nginx/lua/rediscluster.lua";#此为lua脚本
 }

 #这里表示将请求中的静态信息转发到指定目录。注意:要将项目中的selector/statics/themes/ueditor,文件夹放到任一目录,这里放到了/home/javamall/
 location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
         root /home/javamall/;
 }

 #如果不是静态页的话,交由tomcat进行转发处理。
 location /{
        proxy_pass http://47.93.97.90:8089;
        proxy_redirect    off;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;

    }

}

  • 编辑lua脚本
    vi /usr/local/nginx/lua/rediscluster.lua
    

--注意修改黄色部分,这里与上方的nginx配置文件一一对应。上方有
upstream 名称 ,的server值为ip:端口,那么这里的值需要按照redis_servers[“ip:端口”]=”名称” 填写,修改一下内容
redis_servers = {}
redis_servers["123.56.50.239:6379"]="redis-a"
redis_servers["192.168.1.198:6391"]="redis-b"
redis_servers["192.168.1.198:6396"]="redis-c"
--修改服务数组'redis-a', 'redis-b','redis-c',都是之前nginx配置中的upstream

    local servers = {'redis-a', 'redis-b','redis-c'}
  • 启动nginx
  /usr/local/nginx/sbin/nginx

注意:如果报错:
./sbin/nginx: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory

执行:

  ln -s /usr/local/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2

至此lua+redis+nginx已经配置完成。

results matching ""

    No results matching ""