工作总结第六天

来源:互联网 发布:windows系统是多用户 编辑:程序博客网 时间:2024/06/03 21:56

一,nginx的扩展模块 nginx_lua_module 安装记录


nginx_lua_module是由淘宝的工程师清无(王晓哲)和春来(章亦春)所开发的nginx第三方模块,它能将lua语言嵌入到nginx配置中,从而使用lua就极大增强了nginx的能力

http://wiki.nginx.org/HttpLuaModule



正文:

1 下载luajit 2.0并安装

http://luajit.org/download.html

我是直接使用源码make && make install

所以lib和include是直接放在/usr/local/lib和usr/local/include

 

2 下载nginx源码,解压

注意版本号,如果机子上已经装了nginx,不想升级的话,请使用/to/nginx/sbin/nginx –v

来查看版本号

 

3  下载ngx_devel_kit HERE 解压

4  下载nginx_lua_module HERE 解压

 

5 进入nginx源码文件夹

cd nginx-1.12.1/

 

6 导入环境变量,编译

export LUAJIT_LIB=/usr/local/lib    #这个很有可能不一样
export LUAJIT_INC=/usr/local/include/luajit-2.0  #这个很有可能不一样

 查看nginx编译安装时安装了哪些模块

/usr/local/nginx -V

--sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.20 --with-zlib=/usr/local/src/zlib-1.2.3 --with-openssl=/usr/local/src/openssl-1.0.2l


现在在以前的编译参数后面加入需要添加的扩展模块--add-module=/usr/local/related/ngx_devel_kit-0.3.0/ --add-module=/usr/local/related/lua-nginx-module-0.10.10/

--sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.20 --with-zlib=/usr/local/src/zlib-1.2.3 --with-openssl=/usr/local/src/openssl-1.0.2l --add-module=/usr/local/related/ngx_devel_kit-0.3.0/ --add-module=/usr/local/related/lua-nginx-module-0.10.10/

 

make 即可,千万不要make install  不然就被完全覆盖了

7,make 完毕后会在nginx的编译目录下生成一个objs文件夹,将里面的nginx覆盖至nginx安装目录下的nginx即可。

 

# cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak# cp ./objs/nginx /usr/local/nginx/sbin/复制时会提示busy无法覆盖,那么先停掉nginx  ,/usr/local/nginx -s stop覆盖完毕后开启时如果报错:
  1. /nginx: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory
是没有找到共享链接库的原因
  1. # cat /etc/ld.so.conf
  2. include ld.so.conf.d/*.conf
  3. # echo "/usr/local/lib" >> /etc/ld.so.conf
  4. # ldconfig

8, 测试是否成功:

nginxconfig中加入

 

location /hello {
      default_type 'text/plain';
      content_by_lua 'ngx.say("hello, lua")';
}

 

使用/to/nginx/sbin/nginx –t 检查nginx配置,此时应该没有报错

 

8 /to/nginx/sbin/nginx   #启动nginx

或者/to/nginx/sbin/nginx –s reload #重启nginx


访问192.168.100.1/hello

会出现“hello,lua”

 

安装成功!


这是已安装nginx时安装模块的步骤,如果是全新安装nginx 则不需要覆盖那步即可完成。

 

二,安装lua完毕后即可在nginx的配置文件中使用lua来强化nginx的配置,以下为使用都的伪静态规则,因为默认是无法使用运算符的,所以引入lua

 if ($args ~* "aid=(\d+)") {
             set $aid $1;
             set_by_lua $id "return math.floor(ngx.var.aid/1000)";
             set_by_lua $str "return ngx.var.id..'_'..ngx.var.aid";
             rewrite ^(.*)/modules/article/reader\.php$ $1/txt/$str/? permanent;
         }

if ($args ~* "aid=(\d+)&cid=(\d+)") {
             set $aid $1;
             set_by_lua $id "return math.floor(ngx.var.aid/1000)";
             set_by_lua $str "return ngx.var.id..'_'..ngx.var.aid";
             rewrite ^(.*)/modules/article/reader\.php$ $1/txt/$str/? permanent;
        }

这样就行了。


原创粉丝点击