nginx使用lua直接调用mongodb
2016-10-18 00:00
405 查看
https://github.com/bigplum/lua-resty-mongol 这个是lua的mongodb驱动,需要安装openresty 1.0.11.7,这里安装1.0.11.28
# wget https://openresty.org/download/ngx_openresty-1.0.11.28.tar.gz
# tar xzvf ngx_openresty-1.0.11.28.tar.gz
# cd ngx_openresty-1.0.11.28
# ./configure --prefix=/data/app/openresty --with-luajit && gmake && gmake install
......
# curl https://codeload.github.com/bigplum/lua-resty-mongol/zip/master -o lua-resty-mongol-master.zip
# unzip lua-resty-mongol-master.zip
# make install
# cp -a /usr/local/openresty/lualib/resty/mongol /data/app/openresty/lualib/resty/
tengine配置:
nginx.conf
在http片段中添加如下行
添加操作mongo的lua脚本
# cat /data/app/tengine/lua/getmongo.lua
# cat insertmongo.lua
在tengine的server片段中添加如下
server
{
}
往test库的test表里插入数据并测试结果
# wget https://openresty.org/download/ngx_openresty-1.0.11.28.tar.gz
# tar xzvf ngx_openresty-1.0.11.28.tar.gz
# cd ngx_openresty-1.0.11.28
# ./configure --prefix=/data/app/openresty --with-luajit && gmake && gmake install
......
# curl https://codeload.github.com/bigplum/lua-resty-mongol/zip/master -o lua-resty-mongol-master.zip
# unzip lua-resty-mongol-master.zip
# make install
# cp -a /usr/local/openresty/lualib/resty/mongol /data/app/openresty/lualib/resty/
tengine配置:
nginx.conf
在http片段中添加如下行
lua_package_path '/data/app/openresty/lualib/?/init.lua;/data/app/openresty/lualib/?.lua;;';
添加操作mongo的lua脚本
# cat /data/app/tengine/lua/getmongo.lua
local mongo = require "resty.mongol" local conn = mongo:new() conn:set_timeout(1000) local ok, err = conn:connect("127.0.0.1",27017) ngx.header.content_type="text/explain" if not ok then ngx.say("connect failed: "..err) end local db=conn:new_db_handle("test") local col = db:get_col("test") local r = col:find_one({name="dog"},{_id=0}) for k,v in pairs(r) do ngx.say(k..": "..v) end
# cat insertmongo.lua
local request_method = ngx.var.request_method local args = nil if "GET" == request_method then args = ngx.req.get_uri_args() elseif "POST" == request_method then ngx.req.read_body() args = ngx.req.get_post_args() end ngx.header.content_type="text/explain" if args == nil then ngx.say("error:no args") end local mongo = require "resty.mongol" local conn = mongo:new() conn:set_timeout(1000) local ok, err = conn:connect("127.0.0.1",27017) if not ok then ngx.say("connect failed: "..err) end local db = conn:new_db_handle("test") local col = db:get_col("test") local docs = {args} local ist, isterr = col:insert(docs,0,0) if isterr then ngx.say("insert error: "..isterr) else ngx.say("insert success.") end
在tengine的server片段中添加如下
server
{
listen 80; #listen end server_name 127.0.0.1; #server_name end client_max_body_size 50m; location /mongodb/get { content_by_lua_file /data/app/tengine/lua/getmongo.lua; }
}
往test库的test表里插入数据并测试结果
# curl "http://127.0.0.1/mongodb/get" name: dog age: 12
相关文章推荐
- 在nginx中使用lua直接访问mysql和memcaced达到数据接口的统一
- OpenResty的安装和在nginx中使用lua直接访问mysql达到数据接口的统一
- 使用lua调用mongoDB 实例
- 在nginx中使用lua直接访问mysql和memcaced达到数据接口的统一
- 在nginx中使用lua直接訪问mysql和memcaced达到数据接口的统一
- Nginx服务器中使用lua获取get或post参数
- 使用Nginx+Lua实现的WAF - 学习笔记
- Cocos2d-Lua 3.12 生成绑定 导出C++类给LUA调用( tolua genbindings.py 的使用)
- fastdfs的安装与使用,配置nginx可直接用http访问
- 使用库函数也有系统调用的开销,为什么不直接使用系统调用呢?
- 搭建带lua模块的nginx调用ImageMagick工具实现实时剪切缩放图片功能
- 使用java的java 命令,直接调用执行class文件
- 在EXT中直接使用DWR调用后台Java方法
- 使用tolua++实现C++与LUA相互调用
- BaseDao加强版,可连接sqlserver和mysql,使用时直接在main类调用即可,需在src目录下创建一个properties后缀的文件夹,用来存放数据库名称和地址,具体如下
- ribbon通过RestTemplate调用接口获取List<JavaBean>时,应使用数组而不能直接使用List
- Unity中使用 slua --- 调用c#方法
- 如何使用cocos的自动绑定工具实现lua调用c++的类
- 页面调用方法弹出企业QQ联系客服的方法,可以直接复制过去使用
- 服务器之间使用rmi,如本地方法调用,可直接访问缓存