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 -- 記錄錯誤信息,返回404 ngx.log(ngx.ERR, "http not found, path: ", path , ", args: ", args) ngx.exit(404) end return 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 then ngx.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 then ngx.log(ngx.ERR, "連接redis失敗 : ", err) return nil end -- 查詢redis local resp, err = red:get(key) -- 查詢失敗處理 if not resp then ngx.log(ngx.ERR, "查詢Redis失敗: ", err, ", key = " , key) end --得到的數據為空處理 if resp == ngx.null then resp = nil ngx.log(ngx.ERR, "查詢Redis數據為空, key = ", key) end close_redis(red) return resp end
開啟共享詞典:
# 共享字典,也就是本地緩存,名稱叫做:item_cache,大小150m lua_shared_dict item_cache 150m;
p == ngx.null then
resp = nil
ngx.log(ngx.ERR, "查詢Redis數據為空, key = ", key)
end
close_redis(red)
return resp
end
開啟共享詞典: ```nginx # 共享字典,也就是本地緩存,名稱叫做:item_cache,大小150m lua_shared_dict item_cache 150m;