当前位置: 首页 > news >正文

OpenResty安装

OpenResty 是一个基于 Nginx 的 Web 平台,它将 Nginx 和 Lua 脚本语言结合起来,提供了更强大的 Web 应用开发和部署能力。OpenResty 仓库是 OpenResty 项目的官方仓库,包含了 OpenResty 的源代码、文档、示例等资源。

OpenResty 仓库地址是:https://openresty.org/cn/

在 OpenResty 仓库中,可以找到以下资源:

源代码:OpenResty 的源代码包含了 Nginx 的核心代码和 Lua 脚本语言的扩展功能,可以通过下载源代码进行编译和安装。

文档:OpenResty 提供了详细的文档,包括安装说明、配置说明、使用示例等,可以帮助开发人员快速上手和使用 OpenResty。

示例:OpenResty 提供了丰富的示例代码,可以帮助开发人员学习如何使用 Nginx 和 Lua 脚本语言构建 Web 应用。

社区支持:OpenResty 拥有庞大的社区支持,开发人员可以通过参与社区讨论和提交 Bug 报告来获取帮助和支持。

1.安装

首先你的Linux虚拟机必须联网

1)安装开发库

首先要安装OpenResty的依赖开发库,执行命令:

yum install -y pcre-devel openssl-devel gcc --skip-broken

2)安装OpenResty仓库

你可以在你的 CentOS 系统中添加 openresty 仓库,这样就可以便于未来安装或更新我们的软件包(通过 yum check-update 命令)。运行下面的命令就可以添加我们的仓库:

yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo

如果提示说命令不存在,则运行:

yum install -y yum-utils 

然后再重复上面的命令

3)安装OpenResty

然后就可以像下面这样安装软件包,比如 openresty

yum install -y openresty

4)安装opm工具

opm是OpenResty的一个管理工具,可以帮助我们安装一个第三方的Lua模块。

如果你想安装命令行工具 opm,那么可以像下面这样安装 openresty-opm 包:

yum install -y openresty-opm

5)目录结构

默认情况下,OpenResty安装的目录是:/usr/local/openresty

在这里插入图片描述

看到里面的nginx目录了吗,OpenResty就是在Nginx基础上集成了一些Lua模块。

6)配置nginx的环境变量

打开配置文件:

vi /etc/profile

在最下面加入两行:

export NGINX_HOME=/usr/local/openresty/nginx
export PATH=${NGINX_HOME}/sbin:$PATH

NGINX_HOME:后面是OpenResty安装目录下的nginx的目录

然后让配置生效:

source /etc/profile

2.启动和运行

OpenResty底层是基于Nginx的,查看OpenResty目录的nginx目录,结构与windows中安装的nginx基本一致:

在这里插入图片描述

所以运行方式与nginx基本一致:

# 启动nginx
nginx
# 重新加载配置
nginx -s reload
# 停止
nginx -s stop

nginx的默认配置文件注释太多,影响后续我们的编辑,这里将nginx.conf中的注释部分删除,保留有效部分。

修改/usr/local/openresty/nginx/conf/nginx.conf文件,内容如下:

#user  nobody;
worker_processes  1;
error_log  logs/error.log;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;server {listen       8081;server_name  localhost;location / {root   html;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
}

在Linux的控制台输入命令以启动nginx:

nginx

然后访问页面:http://192.168.150.101:8081,注意ip地址替换为你自己的虚拟机IP:

3.备注

加载OpenResty的lua模块:

#lua 模块
lua_package_path "/usr/local/openresty/lualib/?.lua;;";
#c模块     
lua_package_cpath "/usr/local/openresty/lualib/?.so;;";  

common.lua

-- 封装函数,发送http请求,并解析响应
local function read_http(path, params)local resp = ngx.location.capture(path,{method = ngx.HTTP_GET,args = params,})if not resp then-- 记录错误信息,返回404ngx.log(ngx.ERR, "http not found, path: ", path , ", args: ", args)ngx.exit(404)endreturn resp.body
end
-- 将方法导出
local _M = {  read_http = read_http
}  
return _M

释放Redis连接API:

-- 关闭redis连接的工具方法,其实是放入连接池
local function close_redis(red)local pool_max_idle_time = 10000 -- 连接的空闲时间,单位是毫秒local pool_size = 100 --连接池大小local ok, err = red:set_keepalive(pool_max_idle_time, pool_size)if not ok thenngx.log(ngx.ERR, "放入redis连接池失败: ", err)end
end

读取Redis数据的API:

-- 查询redis的方法 ip和port是redis地址,key是查询的key
local function read_redis(ip, port, key)-- 获取一个连接local ok, err = red:connect(ip, port)if not ok thenngx.log(ngx.ERR, "连接redis失败 : ", err)return nilend-- 查询redislocal resp, err = red:get(key)-- 查询失败处理if not resp thenngx.log(ngx.ERR, "查询Redis失败: ", err, ", key = " , key)end--得到的数据为空处理if resp == ngx.null thenresp = nilngx.log(ngx.ERR, "查询Redis数据为空, key = ", key)endclose_redis(red)return resp
end

开启共享词典:

# 共享字典,也就是本地缓存,名称叫做:item_cache,大小150m
lua_shared_dict item_cache 150m; 
http://www.lryc.cn/news/195945.html

相关文章:

  • 通过stream对list集合中对象的多个字段进行去重
  • 招投标系统软件源码,招投标全流程在线化管理
  • css设置文本溢出隐藏...
  • 【小尘送书-第八期】《小团队管理:如何轻松带出1+1>2的团队》
  • 【网络协议】聊聊ifconfig
  • python项目之AI动物识别工具的设计与实现(django)
  • 全流量安全分析发现内部系统外联异常
  • Edge---微软浏览器-兼容性问题-解决办法(详细)
  • for循环遍历的`form表单组件`rules规则校验失效问题——下拉框选择之后还是报红---亲测有效
  • 【Python数据分析工具】
  • Python数据挖掘入门进阶与实用案例:自动售货机销售数据分析与应用
  • 2.3_9吸烟者问题
  • 位运算基础知识及性质(精简总结)
  • 阵列信号处理_对比常规波束形成法(CBF)和Capon算法
  • 通过循环生成多个echarts图表并实现自适应
  • MySQL——六、库表操作(下篇)
  • 自动化办公篇之python批量改名
  • Android MediaCodec将h264实时视频流数据解码为yuv,并转换yuv的颜色格式为nv21
  • Postgresql SQL 字段拼接
  • MySQL 迁移完不能快速导数据了?
  • Lazysysadmin靶机
  • LeetCode09——回文数
  • 云安全—分布式基础
  • Spring(18) @Order注解介绍、使用、底层原理
  • 目标检测YOLO实战应用案例100讲-基于改进YOLOv6的轧钢表面细小缺陷检测
  • leetcode:507. 完美数(python3解法)
  • 智能物联网解决方案:蓝牙IOT主控模块打造高效监测和超低功耗
  • vue 拿到数据后,没有重新渲染视图,nuxt.js拿到数据后,没有重新渲染视图,强制更新视图
  • Docker基础操作命令演示
  • XTU-OJ 1175-Change