多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 概述 OpenResty 是一个基于 Nginx 的全功能 Web 平台,它集成了大量精心设计的 Nginx 模块,以及大量的 Lua 库。在使用 OpenResty 时,有两种主要的包管理工具:opm 和 LuaRocks。 ## OPM OPM(OpenResty Package Manager)是 OpenResty 官方提供的包管理工具,可以用来从中心 OPM 包服务器上面安装社区贡献的第三方模块。专门用于安装和管理 OpenResty 的 Lua 模块。它是官方推荐使用的工具,因为它确保了模块与 OpenResty 的兼容性,并优化了性能,在你安装好 OpenResty 之后,就可以直接使用。 显示命令帮助 ``` # opm --help opm [options] command package... Options: -h --help Print this help. --install-dir=PATH Install into the specified PATH directory instead of the system-wide OpenResty installation tree containing this tool. --cwd Install into the current working directory under ./resty_modules/ instead of the system-wide OpenResty installation tree containing this tool. Commands: build Build from the current working directory a package tarball ready for uploading to the server. clean ARGUMENT... Do clean-up work. Currently the valid argument is "dist", which cleans up the temporary files and directories created by the "build" command. info PACKAGE... Output the detailed information (or meta data) about the specified packages. Short package names like "lua-resty-lock" are acceptable. get PACKAGE... Fetch and install the specified packages. Fully qualified package names like "openresty/lua-resty-lock" are required. One can also specify a version constraint like "=0.05" and ">=0.01". list List all the installed packages. Both the package names and versions are displayed. remove PACKAGE... Remove (or uninstall) the specified packages. Short package names like "lua-resty-lock" are acceptable. search QUERY... Search on the server for packages matching the user queries in their names or abstracts. Multiple queries can be specified and they must fulfilled at the same time. server-build Build a final package tarball ready for distribution on the server. This command is usually used by the server to verify the uploaded package tarball. update Update all the installed packages to their latest version from the server. upgrade PACKAGE... Upgrade the packages specified by names to the latest version from the server. Short package names like "lua-resty-lock" are acceptable. upload Upload the package tarball to the server. This command always invokes the build command automatically right before uploading. For bug reporting instructions, please see: <https://openresty.org/en/community.html> Copyright (C) Yichun Zhang (agentzh). All rights reserved. ``` 通过`opm search [包名] `搜索包名和包的简介 ``` # opm search lua-resty-http aptise/peter_sslers-lua-resty openresty ssl certificate routines for peter_sslers SSL Certificate manager aptise/lua-resty-peter_sslers openresty ssl certificate routines for peter_sslers SSL Certificate manager .... tomas/lua-resty-elasticsearch ElasticSearch client for OpenResty / ngx_lua. agentzh/lua-resty-http Lua HTTP client cosocket driver for OpenResty/ngx_lua ``` 通过`opm get [包名] `安装扩展包 ``` # opm get ledgetech/lua-resty-http * Fetching ledgetech/lua-resty-http Downloading https://opm.openresty.org/api/pkg/tarball/ledgetech/lua-resty-http-0.17.1.opm.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 20622 100 20622 0 0 28133 0 --:--:-- --:--:-- --:--:-- 28095 Package ledgetech/lua-resty-http 0.17.1 installed successfully under /usr/local/openresty/site/ . ``` 通过`opm info [包名] `查看已安装包的详细信息 ``` # opm info lua-resty-http Name : lua-resty-http Version : 0.17.1 Abstract : Lua HTTP client cosocket driver for OpenResty/ngx_lua Author : James Hurst Account : ledgetech Code Repo : https://github.com/ledgetech/lua-resty-http License : BSD 2-Clause "Simplified" or "FreeBSD" license Original Work : yes ``` 通过`opm list`查看已经安装的包列表 ``` # opm list agentzh/lua-resty-http 0.09 ``` 通过`opm upgrade [包名]`包升级 ``` # opm upgrade lua-resty-http * Fetching agentzh/lua-resty-http > 0.09 Package agentzh/lua-resty-http 0.09 is already the latest version. ``` 通过`opm remove [包名]`移除已经安装的包 ``` # opm remove lua-resty-http Package agentzh/lua-resty-http 0.09 removed successfully. ``` 安装包存储位置 ``` cd /usr/local/openresty/site/lualib/resty # ls http.lua http_headers.lua ``` ### 使用 lua-resty-http 是一个基于OpenResty的HTTP客户端库,用于在Lua中进行HTTP请求和响应的处理。 `openresty.tinywan.com.conf`配置文件 ``` server { listen 80; server_name openresty.tinywan.com; location /lua_http_test { default_type "text/html"; lua_code_cache off; content_by_lua_file conf/lua/lua_http_test.lua; } } ``` `lua_http_test.lua` 脚本 ``` local httpc = require("resty.http").new() -- Single-shot requests use the `request_uri` interface. local res, err = httpc:request_uri("https://www.workerman.net/u/Tinywan", { method = "GET", body = "name=Tinywan&age=24", headers = { ["Content-Type"] = "application/x-www-form-urlencoded", }, ssl_verify = false, }) if not res then ngx.log(ngx.ERR, "request failed: ", err) return end local status = res.status local length = res.headers["Content-Length"] local body = res.body ngx.say(res.body) ``` 通过curl脚本测试请求打印结果 ```html $ curl -i http://openresty.tinywan.com/lua_http_test HTTP/1.1 200 OK Server: openresty/1.17.8.2 Date: Wed, 17 Jul 2024 09:42:10 GMT Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive Vary: Accept-Encoding <!doctype html> <html lang="zh-cn"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <link rel="shortcut icon" href="/favicon.ico" /> <link href="https://cdn.workerman.net/css/bootstrap.min.css?v=20211126" rel="stylesheet"> <link href="https://cdn.workerman.net/css/main.css?v=20240705" rel="stylesheet"> <script src="https://cdn.workerman.net/js/jquery.min.js"></script> <script src="https://cdn.workerman.net/js/bootstrap.min.js?v=20211126"></script> <script src="https://cdn.workerman.net/js/functions.js?v=20220507"></script> <script type="text/javascript" charset="UTF-8" src="https://cdn.wwads.cn/js/makemoney.js" async></script> <title>Tinywan的主页-分享-workerman社区</title> </head> ... </body> </html> ``` ## LuaRocks LuaRocks 是一个通用的 Lua 模块管理工具,可以用来安装 Lua 模块。然而,使用 luarocks 与 OpenResty 并不是官方推荐的方式,因为 luarocks 安装的模块可能会阻塞 OpenResty 的事件循环,导致性能下降。 详细使用请看这里 [Openresty如何使用lualocks包管理器安装使用Lua包](https://mp.weixin.qq.com/s/8fVUKW53vG8E3v8aOX_lWw)