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

这篇具有很好参考价值的文章主要介绍了nginx+lua(openresty) lua-mongodb 安装及使用(四)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言
前章已经讲述 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

nginx+lua(openresty) lua-mongodb 安装及使用(四),杂项,nginx,lua,openresty,mongodb
如果需要安装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

nginx+lua(openresty) lua-mongodb 安装及使用(四),杂项,nginx,lua,openresty,mongodb
mongodb 3.0之后配置文件采用YAML格式,这种格式使用key:value表示
开头使用"空格"作为缩进。
冒号":“之后有value的话,需要紧跟一个空格
如果key只是表示层级,则无需在”:"后增加空格

下面错误是 0.0.0.0 前面少了空格
nginx+lua(openresty) lua-mongodb 安装及使用(四),杂项,nginx,lua,openresty,mongodb
下面错误 是 把dbpath log path 放到 $HOME 目录下
nginx+lua(openresty) lua-mongodb 安装及使用(四),杂项,nginx,lua,openresty,mongodb
/lib/systemd/system/mongod.service
nginx+lua(openresty) lua-mongodb 安装及使用(四),杂项,nginx,lua,openresty,mongodb

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 ,成功了
nginx+lua(openresty) lua-mongodb 安装及使用(四),杂项,nginx,lua,openresty,mongodb
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

软件目录
nginx+lua(openresty) lua-mongodb 安装及使用(四),杂项,nginx,lua,openresty,mongodb
openresty 安装目录为 $HOME/openresty
软件下载 都放在 $HOME/software

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

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

nginx+lua(openresty) lua-mongodb 安装及使用(四),杂项,nginx,lua,openresty,mongodb
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

nginx+lua(openresty) lua-mongodb 安装及使用(四),杂项,nginx,lua,openresty,mongodb
nginx+lua(openresty) lua-mongodb 安装及使用(四),杂项,nginx,lua,openresty,mongodb
默认安装目录
/usr/local/lib
/usr/local/include/libbson-1.0
nginx+lua(openresty) lua-mongodb 安装及使用(四),杂项,nginx,lua,openresty,mongodb
3> lua-cbson下载并解压缩

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

遇到问题
nginx+lua(openresty) lua-mongodb 安装及使用(四),杂项,nginx,lua,openresty,mongodb
修改CMakeList.txt 在
$HOME/software/lua-cbson-master 目录下
nginx+lua(openresty) lua-mongodb 安装及使用(四),杂项,nginx,lua,openresty,mongodb
nginx+lua(openresty) lua-mongodb 安装及使用(四),杂项,nginx,lua,openresty,mongodb
nginx+lua(openresty) lua-mongodb 安装及使用(四),杂项,nginx,lua,openresty,mongodb
把生成的 cbson.so 拷贝到 $HOME/openresty/lualib 目录下
nginx+lua(openresty) lua-mongodb 安装及使用(四),杂项,nginx,lua,openresty,mongodb
可以参考上章
nginx+lua(openresty) lua-mongodb 安装及使用(四),杂项,nginx,lua,openresty,mongodb
nginx+lua(openresty) lua-mongodb 安装及使用(四),杂项,nginx,lua,openresty,mongodb
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 then
  error(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 then
  error(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 then
 	  local uid = tonumber(tostring(res.uid))
          ngx.say('uid='..uid)
	end
	if res._id  then
		local id = tostring(res._id)
		ngx.say('id='..id)
	end

	local 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 then
   local num,err1 = cursor:count() --num=userdata
  
   if  err1 == nil then
	ngx.say('num not nil='..type(num))
   end
   ngx.say('num='..type(num))
   local n = tonumber(tostring(num))
	ngx.say('n='..n)
end
--]]
ngx.say(127)
--[[
for index,item in cursor:pairs() do
        ngx.say('数据: '..index)

        if not item['url'] then 
                ngx.say('数据:'..item["title"])
        else
                ngx.say('数据:'..item["title"]..item['url'])
                ngx.say(json_decode(item['url']))
        end


end
--]]
--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:测试结果
nginx+lua(openresty) lua-mongodb 安装及使用(四),杂项,nginx,lua,openresty,mongodb

6:DEMO工程 后续如有需要再上传
如果觉得有用,麻烦点个赞,加个收藏文章来源地址https://www.toymoban.com/news/detail-529510.html

到了这里,关于nginx+lua(openresty) lua-mongodb 安装及使用(四)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • openresty 安装, nginx与 openresty

    openresty VS nginx Nginx 是一款高性能的 Web 服务器和反向代理服务器,具备基础的功能如HTTP服务、负载均衡、反向代理以及动静分离等。它是许多互联网应用的核心组件,因其模块化和可扩展的设计而受到欢迎。1 OpenResty 是基于 Nginx 的 Web 平台,它通过Lua脚本语言扩展了Nginx的功

    2024年01月25日
    浏览(22)
  • 在Openresty中使用lua语言向请求浏览器返回请求头User-Agent里边的值

    可以参考《Linux学习之Ubuntu 20.04在https://openresty.org下载源码安装Openresty 1.19.3.1,使用systemd管理OpenResty服务》安装Openresty。 然后把下边的内容写入到openresty配置文件 /usr/local/openresty/nginx/conf/nginx.conf (根据实际情况进行选择文件): 然后 sudo openresty 启动openresty。 最后在浏览器里

    2024年02月07日
    浏览(52)
  • OpenResty安装-(基于Nginx的高性能Web平台,可在Nginx端编码业务)

    首先你的Linux虚拟机必须联网 首先要安装OpenResty的依赖开发库,执行命令: 你可以在你的 CentOS 系统中添加 openresty 仓库,这样就可以便于未来安装或更新我们的软件包(通过 yum check-update 命令)。运行下面的命令就可以添加我们的仓库: 如果提示说命令不存在,则运行:

    2024年02月07日
    浏览(52)
  • 多级缓存架构(三)OpenResty Lua缓存

    通过本文章,可以完成多级缓存架构中的Lua缓存。 在 docker/docker-compose.yml 中添加nginx服务块。 删除原来docker里的 multiCache 项目并停止 springboot 应用。 nginx 部分配置如下,监听端口为 8080 ,并且将请求反向代理至 172.30.3.11 ,下一小节,将 openresty 固定在 172.30.3.11 。 重新启动

    2024年01月16日
    浏览(38)
  • openResty+lua+redis实现接口访问频率限制

    OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。 OpenResty® 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团

    2024年02月11日
    浏览(37)
  • Openresty原理概念篇(九)LuaJIT分支和标准Lua有什么不同

    一  LuaJIT分支和标准Lua有什么不同 ①  背景 luajit官方   标准lua官方   openresty自身维护的luajit  编译luajit ②  LuaJIT 在 OpenResty 整体架构中的位置 ③   标准 Lua 和 LuaJIT 的 关系 ④  为什么 选择LuaJIT ⑤  lua特别之处 pairs和ipairs看table的内部结构 nil、ngx.null、cjson.null、user

    2024年02月11日
    浏览(26)
  • Nginx安装Lua

    Nginx安装Lua 1.安装Lua(两个二选一) yum install readline-devel (CentOS) sudo apt-get install libreadline-dev (Ubuntu) sudo apt-get install libncurses5-dev (Ubuntu) wget -O LuaJIT-2.0.4.tar.gz http://luajit.org/download/LuaJIT-2.0.4.tar.gz tar -zxvf LuaJIT-2.0.4.tar.gz make make install wget -O lua-5.1.5.tar.gz http://www.lua.org/ftp/lua-5.1.5.tar.gz

    2024年02月21日
    浏览(23)
  • Openresty(二十二)ngx.balance和balance_by_lua终结篇

    一  灰度发布铺垫 ①  init_by_lua* init_by_lua    init_by_lua_block    当配置重载时,init_by_lua* 不会清空其内的lua_shared_dict共享数据 lua执行系统命令方法os.execute和io.popen      init_by_lua_file不能连接redis init_by_lua_file  ②  init_worker_by_lua* init_worker_by_lua init_worker_by_lua_block  ngx.worker

    2024年02月07日
    浏览(32)
  • Nginx/OpenResty目录穿越漏洞复现

    2020年03月18日, 360CERT监测发现 openwall oss-security 邮件组披露了两枚漏洞。在特定配置下 nginx/openresty 存在 内存泄漏漏洞/目录穿越漏洞。 Nginx 是异步框架的网页服务器,也可以用作反向代理、负载平衡器和HTTP缓存。 OpenResty是一个基于nginx的Web平台,它对nginx增加LuaJIT引擎使其

    2023年04月10日
    浏览(27)
  • nginx+lua配置,一个域名配置https,docker集群使用

    没安装kua的先安装lua 没有resty.http模块的,许配置 nginx+lua配置,一个域名配置https,docker集群使用,一个域名配置https管理整个集群 lua做转发(方向代理) 1、ad_load.lua文件 2、nginx配置,配置两个ssh端口 完整nginx代码 请求结果

    2024年01月18日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包