nginx的Lua扩展

接着上两篇博客,现在开始搭建nginx的LUA和mongodb扩展,完成整个流程的最后一步配置。 Lua是一个可以嵌入到nginx配置文件的动态脚本语言,这样就可以在nginx请求处理的各个阶段执行各种进行逻辑控制的Lua代码。 想要在nginx里边增加lua扩展,需要的模块如下:

安装luajit

惯例,先要下载安装:

1
2
3
4
5
6
wget http://luajit.org/download/LuaJIT-2.0.0-beta9.tar.gz 
tar -zxvf LuaJIT-2.0.0-beta9.tar.gz
cd LuaJIT-2.0.0-beta9/
make
make install PREFIX=/usr/local/luajit
ln -sf luajit-2.0.0-beta9 /usr/local/luajit/bin/luajit

接下来,配置luajit的环境变量,这个在nginx重新编译的时候需要。

1
2
export LUAJIT_LIB=/usr/local/luajit/lib  
export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0  

安装ngx_devel_kit

点击获取ngx_devel_kit,将其放在/usr/local目录下,或者使用git来快捷获取。

1
2
cd /usr/local
git clone https://github.com/simpl/ngx_devel_kit.git  

安装lua-nginx-module

点击获取lua-nginx-kit,跟ngx_devel_kit一样,将其解压放于/usr/local目录下。或者使用git快捷获取。

1
2
cd /usr/local/
git clone https://github.com/chaoslawful/lua-nginx-module.git  

使用git来获取github上的资源,是不是十分方便?

重新编译nginx

进入nginx源码放置的文件夹,重新配置configure,再次make,增加nginx的扩展。

1
2
3
4
cd /usr/local/nginx-1.8.0/
./configure --prefix=/usr/local/nginx --with-ld-opt="-Wl,-rpath,$LUAJIT_LIB" --add-module=/usr/local/ngx_devel_kit --add-module=/usr/local/lua-nginx-module
make -j2 
make install

至此,nginx的lua 扩展模块已经安装完毕,下面进行一下测试。

测试lua模块

在nginx的配置文件中增加一段代码就OK了。

1
gedit /usr/local/nginx/conf/nginx.conf

在监听80端口的server中增加一下内容:

1
2
3
4
5
location /lua {
	    default_type 'text/plain';
	    content_by_lua 'ngx.say("I am lua in nginx")';
	}

启动nginx

1
/usr/local/nginx/sbin/nginx

现在在浏览器中输入127.0.0.1/lua,就可以看到“I am lua in nginx”。这样就说明,nginx的lua模块也安装成功了。

nginx的mongodb gridfs扩展

先从github上将nginx-gridfs模块下载下来。

1
2
3
4
5
6
cd /usr/local
git clone https://github.com/mdirolf/nginx-gridfs.git
cd nginx-gridfs/
git submodule init
git submodule update

重新编译nginx,这里要注意,由于上边已经增加了nginx的lua扩展,现在需要增加模块,方法如下:

1
/usr/local/nginx/sbin/nginx -V

获取当前nginx已有的模块:

1
2
3
4
nginx version: nginx/1.8.0
built by gcc 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) 
configure arguments: --prefix=/usr/local/nginx --with-ld-opt=-Wl,-rpath,/usr/local/luajit/lib --add-module=/usr/local/ngx_devel_kit --add-module=/usr/local/lua-nginx-module

可以看到,configure arguments后边的参数,将他们拷贝,供等下使用。

1
2
3
4
cd /usr/local/nginx-1.8.0/
./configure --prefix=/usr/local/nginx --with-ld-opt=-Wl,-rpath,/usr/local/luajit/lib --add-module=/usr/local/ngx_devel_kit --add-module=/usr/local/lua-nginx-module --with-openssl=/usr/include/openssl --with-http_stub_status_module --add-module=/usr/local/nginx-gridfs
make 
make install

这样,nginx-gridfs模块就也安装完成了,现在就可以使用nginx来直接操作mongodb中的gridfs了。

结束

到这里,整个流程的环境安装和配置就算完成了。后边的博客会继续记录我在学习这些内容的过程。 最后,再来张美图吧 ~~ 武汉最近的天气,确实很好!