美文网首页
SpringBoot+Redis+MemCache+Nginx+

SpringBoot+Redis+MemCache+Nginx+

作者: AmosZhu | 来源:发表于2019-08-26 19:51 被阅读0次

    前面我们已经简单的介绍过了三级缓存的概念,接下来的博文中,我们需要搭建系统运行的环境、编写功能实现代码来实现我们的三级缓存架构,工欲善其事必先利其器,本片博文我们先来搭建Nginx环境以及整合Lua

    Redis的环境搭建我们之前的博文 《Redis教程(一)——Redis安装》 已经搭建好了,本文只是实现三级缓存架构,所以Redis这里我们这暂时不做分布式集群,只使用单机版即可,以后如果有需要将SpringBoot整合Redis的方便变更下即可,不需要做代码层面上的改动。

    Redis环境我们准备好了,现在我们开始在Centos7中搭建Nginx和Lua整合,这里我们使用流行的开源方案——OpenResty

    为什么选择OpenResty呢,OpenResty中集成了Nginx+Lua环境,并且还提供了Redis客户端、mysql客户端,http客户端等大量的组件,方便我们搭建环境和开发,更方便的是,这个是我们中国人发明的,官方文档也是中文的,所以很方便我们查找相关的资料,对于英文不是很好的同学,真是极大的帮助了。

    安装的方法,可以参考OpenResty-安装, 如果不想看官网的话,也可以阅读下面的安装方法,跟官网上的差不多

    安装环境校验

    首先查看Centos7是否安装了一下的软甲

        ## 查看是否存在gcc, Nginx依赖该环境
        rpm -qa|grep gcc
        
        ## 查看是否安装 Perl,nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库
        rpm -qa|grep pcre
        rpm -qa|grep pcre-devel
        
        ## 查看是否安装curl
        rpm -qa|grep curl
        
        ## 查看是否安装 openssl
        rpm -qa|grep openssl
        rpm -qa|grep openssl-devel
    

    上面那个软件没有安装,则需要安装,已安装的可以不必再安装

        yum install pcre-devel openssl-devel gcc curl
    

    安装 OpenResty

        ## 添加 openresty分库,便于安装或者更新软件包
        yum install yum-utils
        yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo
        
        ## 安装openresty 和 resty命令行工具
        yum install openresty
        yum install openresty-resty
        
        ## 查看可安装的组件(当前可不安装,后期想要安装的时候,再查看具体的安装名称
        yum --disablerepo="*" --enablerepo="openresty" list available
    

    至此我们已经安装好penResty的环境了,接下来我们先看看怎么使用

        ## 创建nginx运行需要的目录环境
        mkdir work
        cd work
        mkdir logs/ conf/
        
        ##创建nginx.conf文件
        cd conf
        vi nginx.conf
    

    上述需要创建 nginx.conf文件,并且输入一下内容

        ## nginx.conf
        worker_processes  1;
        error_log logs/error.log;
        events {
            worker_connections 1024;
        }
        http {
            server {
                listen 8080;
                location / {
                    default_type text/html;
                    content_by_lua_block {
                        ngx.say("<p>hello, world</p>")
                    }
                }
            }
        }
    

    配置Nginx的环境变量

        ## 编辑 /etc/profile 文件,配置好nginx的环境变量
        vi /etc/profile
        
        ......
        NGINX_HOME=/usr/local/openresty/nginx
        export PATH=$PATH:$NGINX_HOME/sbin
        ......
        
        ## 环境变量生效
        source /etc/profile
    

    查看环境变量配置是否生效

        ## 如果执行该命令 提示说查找不道nginx命令,则说明你的环境变量配置的 有问题,需要仔细查看下配置
        nginx -v
        
    

    启动Nginx环境

        ## 启动Nginx环境 该命令必须在你刚才创建的work目录下执行,否则启动失败
        nginx -p `pwd`/ -c conf/nginx.conf
    

    访问 http://192.168.56.105:8080/ 看看浏览器是不是显示 Hello world ,如果是则说明Nginx搭建成功

    整合Lua

    在整合之前我们先看下OpenResty目录下是否存在 lualib文件夹,OpenResty默认的安装路径是/usr/localhost/openresty这里面是lua的依赖,我们编写脚本时,需要手动引入这些依赖

    image

    首先先定义我们的工程目录结构:

    --work
    ----conf
    ------nginx.conf
    ----lua
    ------requestDirect.conf
    ----lualib
    ------*.lua
    ------*.so
    

    接下来我们需要在我们之前/work/conf/nginx.conf中的http模块中添加lua的依赖

        -- nginx.conf
        
        worker_processes  1;
        error_log logs/error.log;
        events {
            worker_connections 1024;
        }
        http {
           lua_package_path "/usr/local/openresty/lualib/?.lua;;";
           lua_package_cpath "/usr/local/openresty/lualib/?.so;;";
           include lua/requestDirect.conf;
           server {
              listen 8080;
              location / {
                 default_type text/html;
                 content_by_lua_block {
                     ngx.say("<p>hello, world</p>")
                 }
              }
           }
        }
    
    

    requestDirect.conf文件的内容

        -- requestDirect.conf
        server {
            listen     8080;
            server_name _;
            location /lua {  
              default_type 'text/html';  
              content_by_lua_block {
                     ngx.say("<p>hello, world</p>")
              }
            } 
        }
    

    此时文件就添加完成了,先来测试下是否能启动成功

        ## 进入到 /home/work 目录下
        cd /home/work
        
        ## 编译 看看能否编译通过
        nginx -t
        
        ## 查看端口是否被占用
        losf -i:8080
        ## 删除进程 pid 此处的pid是lsof命令查询出来的,有几个就执行几次
        kill -9 pid
        
        ## 启动nginx服务
        nginx -p `pwd`/ -c /home/work/conf/nginx.conf
    

    启动完成之后,访问 http://192.168.56.105:8080/lua 就能看到返回的结果了

    项目工程文件

    上面是我们测试Nginx是否集成Lua成功的,现在我们将项目工程话,目录结构依旧跟上面是一样的,我们将业务代码独立出来,不跟系统相关的代码放在一起。

    上面还有一点,我们每次更新都需要手动kill掉nginx的进程,很麻烦,我们可以使用nginx的 reload方式来重新加载lua的配置

    目录结构如下:

    --work
    ----conf
    ------nginx.conf
    ----lua
    ------requestDirect.lua
    --lualib
    ----*.lua
    ----*.so
    
    • 按照上述的工程目录结构,我们创建项目需要的文件夹
        ## /home/work下创建文件 conf文件夹 lua文件夹
        cd /home/work
        mkdir conf
        mkdir lua
        
        ## 创建 nginx.conf 和  lua/requestDirect.lua
        vi nginx.conf
        vi lua/requestDirect.lua
        
    

    /home/work/conf/nginx.conf中添加如下的代码

      -- 注意这里的路径必须是绝对路径才行,如果是相对路径,则会直接请求到nginx的安装路径下,请求时报找不到对应文件的错误
        server {
          listen 80;
          location /lua {
             default_type text/html;
             content_by_lua_file /home/work/conf/lua/requestDirect.lua;
          }
       }
    
    

    /home/work/conf/lua/requestDirect.lua文件中添加如下的代码

        ngx.say("hello world,this is nginx_lua project file");
    

    将nginx目录下的 lualib依赖拷贝到 /home/work/lualib

       ## 在/home/work中拷贝 nginx目录下的lualib依赖文件
       cd /home/work
       cp -r /usr/local/openresty/lualib/ .
    
    • 我们需要更新nginx源目录下的conf/nginx.conf文件,并且在其中引入我们的工程目录的conf文件
        ## 进入到nginx的根目录下
        cd /usr/local/openresty/nginx/
        
        vi conf/nginx.conf
        ## 在nginx.conf 中的http模块中添加
        
        ....
        lua_package_path "/home/work/lualib/?.lua;;";
        lua_package_cpath "/home/work/lualib/?.so;;";
        include /home/work/conf/nginx.conf
        ....
        
    
    • 上面的文件添加完成之后我们就可以使用nginx本身自带的命令来启动nginx了
        ## 先查看能否编译成功,如果编译不通过会提示具体的错误
        nginx -t
        
        ## 重新加载
        nginx -s reload
    

    至此我们的nginx整合lua在项目工程中配置的Demo示例已经完成了,在浏览器中访问 http://192.168.56.105:8080/lua 就可以看到打印的信息了

    下篇博文我们将在此基础上,完成请求定向分发的功能

    相关文章

      网友评论

          本文标题:SpringBoot+Redis+MemCache+Nginx+

          本文链接:https://www.haomeiwen.com/subject/pnadectx.html