给Nginx添加Lua扩展


安装LuaJIT

>cd /root/software
>wget http://luajit.org/download/LuaJIT-2.0.3.tar.gz
>tar zxvf LuaJIT-2.0.3
>sudo make && make install
>export LUAJIT_LIB=/usr/local/lib
>export LUAJIT_INC=/usr/local/include/luajit-2.0
>cd ..

获取nginx扩展 ngx_lua和ngx_devel_kit

>wget https://github.com/simpl/ngx_devel_kit/archive/v0.2.19.tar.gz
>mv v0.2.19 ngx_devel_kit.0.2.19.tar.gz
>tar zxvf ngx_devel_kit.0.2.19.tar.gz
>wget https://github.com/openresty/lua-nginx-module/archive/v0.9.7.tar.gz
>mv v0.9.7 lua_nginx_module.0.9.7.tar.gz
>tar zxvf lua_nginx_module.0.9.7.tar.gz

获取nginx

>wget http://nginx.org/download/nginx-.tar.gz
>tar zxvf nginx-.tar.gz
>cd nginx-
>./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=/data0/software/ngx_devel_kit-0.2.19 --add-module=/data0/software/lua-nginx-module-0.9.7
>make && make install
>/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory
>ldd /usr/local/nginx/sbin/nginx
        linux-vdso.so.1 =>  (0x00007ffff69fd000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003a23200000)
        libcrypt.so.1 => /lib64/libcrypt.so.1 (0x0000003a24200000)
        libluajit-5.1.so.2 => not found
        libm.so.6 => /lib64/libm.so.6 (0x0000003a23600000)
        libpcre.so.0 => /lib64/libpcre.so.0 (0x0000003a22600000)
        libssl.so.6 => /lib64/libssl.so.6 (0x0000003a26e00000)
        libcrypto.so.6 => /lib64/libcrypto.so.6 (0x0000003a24e00000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00002b4747d81000)
        libz.so.1 => /lib64/libz.so.1 (0x0000003a23a00000)
        libc.so.6 => /lib64/libc.so.6 (0x0000003a22200000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003a21e00000)
        libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x0000003a26200000)
        libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x0000003a25e00000)
        libcom_err.so.2 => /lib64/libcom_err.so.2 (0x0000003a24a00000)
        libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x0000003a25a00000)
        libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0 (0x0000003a25600000)
        libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x0000003a25200000)
        libresolv.so.2 => /lib64/libresolv.so.2 (0x0000003a24600000)
        libselinux.so.1 => /lib64/libselinux.so.1 (0x0000003a22e00000)
        libsepol.so.1 => /lib64/libsepol.so.1 (0x0000003a22a00000)

提示这个不存在

>echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf
>ldconfig
>/usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
>/usr/local/nginx/sbin/nginx

测试一下暖场,在server下添加

>vim /usr/local/nginx/conf/nginx.conf
location /lua {
    set $hello "hello,world!";
    content_by_lua '
        ngx.header.content_type = "text/plain";
        ngx.say(ngx.var.hello);
    ';
}
>/usr/local/nginx/sbin/nginx -s reload

打开浏览器访问
www.your_domain.com/hello
成功输出”hello,world!”

本文根据http://huoding.com/2012/08/31/156进行配置


发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注