在原有的nginx上面安装Openresty和lua相关的模块

Posted 千寻啊千寻

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在原有的nginx上面安装Openresty和lua相关的模块相关的知识,希望对你有一定的参考价值。

前言

突然有一天出了个需求,做文件防盗链的,而且需要通过nginx来做,这个时候必然想到了 Openresty,Openresty本身其实已经安装有nginx了,但是要求在公司原有的nginx上面装一些Openresty里面的模块,这个时候就有点复杂了,但是最终还是研究出来了,庆幸啊,这里做一个笔记,以便下次安装使用。

安装openresty

  1. 下载openresty

 
   
   
 
  1. wget https://github.com/openresty/openresty/releases/download/v1.13.6.1/openresty-1.13.6.1.tar.gz

  1. 编译安装

解压

 
   
   
 
  1. tar -xvf openresty-1.13.6.1.tar.gz

  2. cd openresty-1.13.6.1

编译安装

 
   
   
 
  1. ./configure -j2

  2. gmake

  3. gmake install

安装lua

在下载 openresty安装包的时候,里面其实已经依赖了 lua了,只需要安装就好了

 
   
   
 
  1. cd openresty-1.13.6.1/bundle/LuaJIT-2.1-20171103/

  2. make

  3. make install

nginx添加相关模块

  1. 配置lua位置

找到以前 nginx的源码包,配置lua位置

 
   
   
 
  1. cd nginx-1.15.0

  2. export LUAJIT_LIB=/usr/local/openresty/lualib/

  3. export LUAJIT_INC=/usr/local/openresty/luajit/include/luajit-2.1/

  1. 重新编译nginx

 
   
   
 
  1. ./configure --prefix=/usr/local/nginx --with-cc-opt=-O2 --add-module=/root/openresty-1.13.6.1/bundle/ngx_devel_kit-0.3.0 --add-module=/root/openresty-1.13.6.1/bundle/echo-nginx-module-0.61 --add-module=/root/openresty-1.13.6.1/bundle/xss-nginx-module-0.05 --add-module=/root/openresty-1.13.6.1/bundle/ngx_coolkit-0.2rc3 --add-module=/root/openresty-1.13.6.1/bundle/set-misc-nginx-module-0.31 --add-module=/root/openresty-1.13.6.1/bundle/form-input-nginx-module-0.12 --add-module=/root/openresty-1.13.6.1/bundle/encrypted-session-nginx-module-0.07 --add-module=/root/openresty-1.13.6.1/bundle/srcache-nginx-module-0.31 --add-module=/root/openresty-1.13.6.1/bundle/ngx_lua-0.10.11 --add-module=/root/openresty-1.13.6.1/bundle/ngx_lua_upstream-0.07 --add-module=/root/openresty-1.13.6.1/bundle/headers-more-nginx-module-0.33 --add-module=/root/openresty-1.13.6.1/bundle/array-var-nginx-module-0.05 --add-module=/root/openresty-1.13.6.1/bundle/memc-nginx-module-0.18 --add-module=/root/openresty-1.13.6.1/bundle/redis2-nginx-module-0.14 --add-module=/root/openresty-1.13.6.1/bundle/redis-nginx-module-0.3.7 --add-module=/root/openresty-1.13.6.1/bundle/rds-json-nginx-module-0.15 --add-module=/root/openresty-1.13.6.1/bundle/rds-csv-nginx-module-0.08 --add-module=/root/openresty-1.13.6.1/bundle/ngx_stream_lua-0.0.3 --with-ld-opt=-Wl,-rpath,/usr/local/lib/ --with-stream --with-stream_ssl_module --with-http_ssl_module

编译完成了,执行 make,记住,这里不要执行 make install,不然会把以前安装的会覆盖的

 
   
   
 
  1. make

这里有几个参数说明一下:

  • --prefix=/usr/local/nginx:nginx安装目录

  • --add-module=/root/openresty-1.13.6.1/bundle:这个是刚刚下载的openresty安装包

  • --with-ld-opt=-Wl,-rpath,/usr/local/lib/:lua安装的路径,上面lua安装的时候,默认是这个位置的

编译完成后,会新生成一个nginx执行文件,在nginx-1.15.0/objs目录下,测试一下对应的依赖有没有装上

 
   
   
 
  1. cd nginx-1.15.0/objs

  2. ./nginx -V

显示以下,说明完美

 
   
   
 
  1. nginx version: nginx/1.15.0

  2. built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)

  3. built with OpenSSL 1.0.2k-fips  26 Jan 2017

  4. TLS SNI support enabled

  5. configure arguments: --prefix=/usr/local/nginx --with-cc-opt=-O2 --add-module=/root/openresty-1.13.6.1/bundle/ngx_devel_kit-0.3.0 --add-module=/root/openresty-1.13.6.1/bundle/echo-nginx-module-0.61 --add-module=/root/openresty-1.13.6.1/bundle/xss-nginx-module-0.05 --add-module=/root/openresty-1.13.6.1/bundle/ngx_coolkit-0.2rc3 --add-module=/root/openresty-1.13.6.1/bundle/set-misc-nginx-module-0.31 --add-module=/root/openresty-1.13.6.1/bundle/form-input-nginx-module-0.12 --add-module=/root/openresty-1.13.6.1/bundle/encrypted-session-nginx-module-0.07 --add-module=/root/openresty-1.13.6.1/bundle/srcache-nginx-module-0.31 --add-module=/root/openresty-1.13.6.1/bundle/ngx_lua-0.10.11 --add-module=/root/openresty-1.13.6.1/bundle/ngx_lua_upstream-0.07 --add-module=/root/openresty-1.13.6.1/bundle/headers-more-nginx-module-0.33 --add-module=/root/openresty-1.13.6.1/bundle/array-var-nginx-module-0.05 --add-module=/root/openresty-1.13.6.1/bundle/memc-nginx-module-0.18 --add-module=/root/openresty-1.13.6.1/bundle/redis2-nginx-module-0.14 --add-module=/root/openresty-1.13.6.1/bundle/redis-nginx-module-0.3.7 --add-module=/root/openresty-1.13.6.1/bundle/rds-json-nginx-module-0.15 --add-module=/root/openresty-1.13.6.1/bundle/rds-csv-nginx-module-0.08 --add-module=/root/openresty-1.13.6.1/bundle/ngx_stream_lua-0.0.3 --with-ld-opt=-Wl,-rpath,/usr/local/lib/ --with-stream --with-stream_ssl_module --with-http_ssl_module

  1. 复制nginx命令覆盖以前的nginx

复制前,最好把之前的nginx备份一下,以防不测

 
   
   
 
  1. cd /usr/local/nginx/sbin/

  2. cp nginx nginx.old

赢新的覆盖,覆盖之前,最好停掉nginx

 
   
   
 
  1. cd nginx-1.15.0/

  2. cp objs/nginx /usr/local/nginx/sbin/

这里会提示是否覆盖,输入y,然后回车就好了

测试

  1. 先测试nginx有没有被玩坏,先检查一下

 
   
   
 
  1. cd /usr/local/nginx

  2. ./sbin/nginx -t

  3. ./sbin/nginx

启动完成,访问下以前的站点还能不能正常打开,目测是没问题的

  1. 测试lua模块

创建一个专门存放lua文件的文件夹,我习惯创建在nginx目录下

 
   
   
 
  1. cd /usr/local/nginx

  2. mkdir lua

创建一个lua文件

 
   
   
 
  1. vim hello.lua

  2. ngx.log(ngx.ERR,"hello");

把这个lua文件依赖到nginx里面试试

 
   
   
 
  1. location / {

  2.        root /workspace/hexo/public/;

  3.        index index.html index.htm;

  4.        access_by_lua_file lua/hello.lua;

  5. }

老规矩,先检查下有没问题没,然后重启

 
   
   
 
  1. cd /usr/local/nginx

  2. ./sbin/nginx -t

  3. ./sbin/nginx -s reload

然后打开日志,准备看有没有打印对应的日志信息

 
   
   
 
  1. tail -f logs/error.log

正常会看到以下日志

 
   
   
 
  1. 2018/07/04 11:58:38 [error] 15646#0: *52 [lua] hello.lua:2: hello,

完美!


以上是关于在原有的nginx上面安装Openresty和lua相关的模块的主要内容,如果未能解决你的问题,请参考以下文章

安装OpenResty(Nginx+Lua)开发环境

安装OpenResty(Nginx+Lua)开发环境

安装指定版本openresty-nginx

Nginx扩展之Openresty

nginx实战 OpenResty 安装

安装openresty1.9