nginx+lua(openresty) lua-mongodb 安装及使用(四)

news/2024/11/17 20:20:47/

前言
前章已经讲述 ua-protobuf 安装及使用
这章主要讲述 openresty 环境下 lua-mongodb 安装及使用

1:环境
ubuntu16(18)
mongodb 3.6

2:安装mongodb 3.6

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
#创建版本列表文件
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list#更新 ubuntu 软件源
sudo apt-get update
#安装最新版mongodb
sudo apt-get install -y mongodb-org

在这里插入图片描述
如果需要安装4.0 前面2句换个即可

#导入 apt 的 key
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
#创建版本列表文件
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list

修改 sudo vim /etc/mongod.conf
主要修改了3个地方,storage log net

在这里插入图片描述
mongodb 3.0之后配置文件采用YAML格式,这种格式使用key:value表示
开头使用"空格"作为缩进。
冒号":“之后有value的话,需要紧跟一个空格
如果key只是表示层级,则无需在”:"后增加空格

下面错误是 0.0.0.0 前面少了空格
在这里插入图片描述
下面错误 是 把dbpath log path 放到 $HOME 目录下
在这里插入图片描述
/lib/systemd/system/mongod.service
在这里插入图片描述

sudo chown -R mongodb:mongodb $HOME/mongodb/db
sudo chown -R mongodb:mongodb $HOME/mongodb/log

不建议放到$HOME 目录下

相关命令如下

启动、重启、停止
sudo service mongod start
sudo service mongod restart
sudo service mongod stop手动启动
sudo mongod --config /etc/mongod.conf
sudo mongod --config /etc/mongod.conf --fork

OK ,成功了
在这里插入图片描述
3:安装lua-mongodb

下载三个依赖 (网不上就手动下载压缩包eg: https://github.com/isage/lua-resty-moongoo)
git clone https://github.com/isage/lua-resty-moongoo.git
git clone git://github.com/mongodb/libbson.git
git clone https://github.com/isage/lua-cbson.git

软件目录
在这里插入图片描述
openresty 安装目录为 $HOME/openresty
软件下载 都放在 $HOME/software

1>下载 lua-resty-moongoo 解压
cd lua-resty-moongoo

cp -r  ./lib/resty/*   $HOME/openresty/lualib/resty

在这里插入图片描述
2> libbson 下载并解压缩
可以先安装下
sudo apt-get install autoconf automake libtool
不然可能会报,看系统是否安装了
ubuntu@ubuntu:~/software/libbson-master$ ./autogen.sh
Error: libtoolize was not found on your system. Cannot continue.
Error: autoreconf not found, please install it.

cd libbson
./autogen.sh 
make
make install
#make clean && make LUA_INCLUDE_DIR=/usr/local/openresty/luajit/include/luajit-2.1 LUA_CMODULE_DIR=/usr/local/openresty/lualib LUA_MODULE_DIR=/usr/local/openresty/lualib CBSON_CFLAGS="-g -fpic -I/usr/local/include/libbson-1.0/ " CC=cc
make clean && make LUA_INCLUDE_DIR=$HOME/openresty/luajit/include/luajit-2.1 LUA_CMODULE_DIR=$HOME/openresty/lualib LUA_MODULE_DIR=$HOME/openresty/lualib CBSON_CFLAGS="-g -fpic -I/usr/local/include/libbson-1.0/ " CC=cc

在这里插入图片描述
在这里插入图片描述
默认安装目录
/usr/local/lib
/usr/local/include/libbson-1.0
在这里插入图片描述
3> lua-cbson下载并解压缩

cd lua-cbson
mkdir build  
cd build  
cmake ..  
make  
make install    ####这里这步没执行,感觉没必要

遇到问题
在这里插入图片描述
修改CMakeList.txt 在
$HOME/software/lua-cbson-master 目录下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
把生成的 cbson.so 拷贝到 $HOME/openresty/lualib 目录下
在这里插入图片描述
可以参考上章
在这里插入图片描述
在这里插入图片描述
4:测试脚本
testmongodb.lua

local moongoo = require("resty.moongoo") -- 引入依赖
local cbson = require("cbson") 
local cjson = require("cjson") 
----mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
--local mg, err = moongoo.new("mongodb://root:root@127.0.0.1:27017") -- 创建连接
--[[
local mg, err = moongoo.new("mongodb://127.0.0.1:27017") -- 创建连接
if not mg thenerror(err) -- 如果有错误end
local col = mg:db("usermap"):collection("incUserid") -- 选择db和表
--
-- 插入数据--local ids, err = col:insert({ videoName = "bar",vipVideoPlayUrl= "test"})
mg:close() --关闭连接
--]]
ngx.say(123)local mg, err = moongoo.new("mongodb://127.0.0.1:27017") -- 创建连接
if not mg thenerror(err) -- 如果有错误end
ngx.say(125)local col = mg:db("usermap"):collection("incUserid") -- 选择db和表
ngx.say(126)
--local  cursor = col:find({})
--local count1 = col:count()--local res=col:find({ 100843 },{'uid'})   --shell ok
--local res=col:find({ 'uid' },{100843})
local res, err = col:find_one({ uid = 100843})  --shell ok
if res then if res.uid thenlocal uid = tonumber(tostring(res.uid))ngx.say('uid='..uid)endif res._id  thenlocal id = tostring(res._id)ngx.say('id='..id)endlocal str = cjson.encode(tostring(res))  --"table: 0x7f4760ba3140"<br/>ngx.say(str, "<br/>")--ngx.say(res['uid'])--ngx.say(res)
end--[[  above  shell ok
local  cursor = col:find({}) 
if cursor thenlocal num,err1 = cursor:count() --num=userdataif  err1 == nil thenngx.say('num not nil='..type(num))endngx.say('num='..type(num))local n = tonumber(tostring(num))ngx.say('n='..n)
end
--]]
ngx.say(127)
--[[
for index,item in cursor:pairs() dongx.say('数据: '..index)if not item['url'] then ngx.say('数据:'..item["title"])elsengx.say('数据:'..item["title"]..item['url'])ngx.say(json_decode(item['url']))endend
--]]
--local doc, err = col:find({ "uid" = 100843})
--local doc, err = col:find_one({ foo = "bar"})
--print(doc.uid)
mg:close()--[[
https://blog.csdn.net/qq_26437925/article/details/50933382
require("a.b.c")查找a的C library(见过程2.3)
检查它是否有luaopen_a_b_c函数require("test")
--test.lua
--]]

5:测试结果
在这里插入图片描述

6:DEMO工程 后续如有需要再上传
如果觉得有用,麻烦点个赞,加个收藏


http://www.ppmy.cn/news/744422.html

相关文章

学生用计算机的额定功率,电脑电源额定功率要多少才合适?

有一点电脑常识的朋友都知道&#xff0c;决定电脑的性能最关键的就是CPU、显卡&#xff0c;内存等等&#xff0c;在自行组装电脑的朋友就尤其注重电脑的Cpu&#xff0c;显卡以及主板这三样东西&#xff0c;CPU的中文名字就是处理器&#xff0c;但是很好有人会主要到机箱的电源、…

计算机电源在线工作,一般计算机电源都在什么电压范围内公

台式计算机工作时功率大&#xff0c;且要求电网电压稳定。其工作电压范围为200~230V; 笔记本电脑功率小&#xff0c;使用电器适配器供电&#xff0c;工作电压范围为100~240V。 功率一般为150W&#xff5e;220W&#xff0c;共有四路输出(5V、12V)&#xff0c;另向主板提供一个P.…

学习系统编程No.28【多线程概念实战】

引言&#xff1a; 北京时间&#xff1a;2023/6/29/15:33&#xff0c;刚刚更新完博客&#xff0c;目前没什么状态&#xff0c;不好趁热打铁&#xff0c;需要去睡一会会&#xff0c;昨天睡的有点迟&#xff0c;然后忘记把7点到8点30之间的4个闹钟关掉了&#xff0c;恶心了我自己…

mysql redis区别

一、.redis和mysql的区别总结 &#xff08;1&#xff09;类型上 从类型上来说&#xff0c;mysql是关系型数据库&#xff0c;redis是缓存数据库 &#xff08;2&#xff09;作用上 mysql用于持久化的存储数据到硬盘&#xff0c;功能强大&#xff0c;但是速度较慢 redis用于存储使…

唯品会用户数据分析

2021年2月25日&#xff0c;品牌特卖电商唯品会披露了其未经审计的2020年第四季度财务报告。财报数据显示&#xff0c;唯品会第四季度净营收达358亿元。按照通用会计准则&#xff0c;唯品会归属股东净利润为24亿元&#xff08;约合3.741亿美元&#xff09;&#xff0c;相较于201…

双十一 唯品会内部优惠入口

【唯享客】是唯品会旗下分享导购平台APP&#xff0c;自己购物有返利&#xff0c;分享能挣钱&#xff0c;每天还有惊喜零元购。邀请好友注册&#xff0c;同样拿奖励。免费加入的哦 注册分享网址&#xff1a;https://wxk.vip.com/register 这段时间想必大家被网易考拉海购店主模…

唯品会商品数据

接口数据返回如下 ret: [ "SUCCESS::调用成功" ], v: "1.0", msg: "success", {data: {code: 1,data: {context: "{"615":"1","872":"1"}",products: [{attrs: [{name: "弹性",va…

唯品会接口获取商品详情数据

作为一名技术爱好者&#xff0c;我们总会遇到各种各样的技术问题&#xff0c;需要寻找合适的技术解决方案。而在互联网时代&#xff0c;我们可以快速通过搜索引擎获取丰富的技术资源和解决方案。然而&#xff0c;在不同的技术分享中&#xff0c;我们常常会遇到质量参差不齐的文…