频道栏目
首页 > 资讯 > 浏览器 > 正文

nginx和lua

15-06-30        来源:[db:作者]  
收藏   我要投稿

lua作为嵌入式脚本,在目前所有的脚本引擎中速度是最快的。它由标准C编写而成,几乎在所有操作系统和平台都可以编译运行。

我们为什么要用nginx+lua呢?

我们来比较下nginx+lua和nginx+php:

nginx+php之间是要有进程通信的,因此性能开销很大;而lua是嵌在nginx进程内部的,它不需要有两套进程独立工作,因此从接口上就有决定性的优势;再加上线程之间通讯的时候需要大量的反序列化和序列化的工作,让后两套进程带来的额外情况是更多的进程和更多的切换开销,所以nginx+lua性能要比nginx+php要好很多。

但是nginx+lua也有劣势,那就是nginx+lua的周边模块相当不健全,如果对并发性能的要求并不是很高时,php比较适合。

我们应用nginx+lua的目的就是通过lua来开发基于nginx的业务逻辑,因为我们需要的是高并发,它作为接口层比较适合。

环境搭建:

1.安装luajit

luajit是一个利用jit编译把lua脚本直接编译成机器码由cpu运行

 

wget http://luajit.org/download/LuaJIT-2.0.4.tar.gz
tar -zxvf LuaJIT-2.0.4.tar.gz
cd LuaJIT-2.0.4
make install prefix=/usr/local/luajit

 

添加环境变量:

 

export LUAJIT_LIB=/usr/local/luajit/lib
export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0
加载类库

 

 

echo "/usr/local/luajit/lib" > /etc/ld.so.conf.d/usr_local_luajit_lib.conf
ldconfig
否则,在运营nginx时会出现以下错误:

 

 

[root@ nginx]# ./nginx -V
./nginx: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory


2.安装ngx_devel_kit和lua-nginx-module

 

nginx_devel_kit模块是一个拓展nginx服务器核心功能的模块,提供函数和宏处理一些基本任务,减轻第三方模块开发的代码量。

lua-nginx-module模块将lua语言嵌入到nginx配置中,使用乱增强了nginx的能力。

 

#下载ngx_devel_kit和lua-nginx-module
wget https://github.com/simpl/ngx_devel_kit/archive/v0.2.19.tar.gz
wget https://github.com/openresty/lua-nginx-module/archive/v0.9.16rc1.tar.gz
tar -zxvf v0.2.19.tar.gz
tar -zxvf v0.9.16rc1.tar.gz
#编译安装nginx
cd /usr/local/nginx
./configure  --prefix=/usr/local/nginx  --add-module=/usr/local/src/lua/lua-nginx-module-0.9.16rc1 --add-module=/usr/local/src/lua/ngx_devel_kit-0.2.19
make
make install

3.测试

 

在nginx配置文件中加入以下:

 

        location /test {
                content_by_lua '
                        
                        if jit then
                                ngx.say(jit.version)
                        else
                                ngx.say(_VERSION)
                        end

                ';
        }
./nginx -s reload后查看:

 

 

 curl 192.168.3.126/test
LuaJIT 2.0.4
出现以上说明nginx+lua环境安装成功。

 

注:若要在浏览器中查看,需要在content_by_lua中加入ngx.header.content_type = "text/plain";否则不会显示页面。

另,为方便nginx调用相关lua模块,我们需要在nginx配置文件中自定义lua模块路径,如:

 

package.path = "/usr/local/nginx/lualib/?.lua;/usr/local/nginx/lualib/captcha/?.lua;"
package.cpath = "/usr/local/nginx/lualib/?.so;/usr/local/nginx/lualib/captcha/?.so;"

 

好了,初步的环境搭建就先说到这里,后续会介绍nginx+lua的相关应用。

相关TAG标签
上一篇:获取局域网中可以ssh登陆的ip地址,nmap使用
下一篇:EXPLOIT用法示例
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站