Centos7环境下搭建Nginx+Lua+Redis进行数据存取 - 李代桃僵 - 博客园


本站和网页 https://www.cnblogs.com/LiQ0116/p/9174089.html 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

Centos7环境下搭建Nginx+Lua+Redis进行数据存取 - 李代桃僵 - 博客园
首页
新闻
博问
专区
闪存
班级
我的博客
我的园子
账号设置
简洁模式 ...
退出登录
注册
登录
李代桃僵
博客园
首页
新随笔
联系
订阅
管理
Centos7环境下搭建Nginx+Lua+Redis进行数据存取
1.安装依赖环境
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
2.安装LuaJIT
cd /usr/local/
mkdir LuaJIT
cd /usr/local/LuaJIT
wget http://luajit.org/download/LuaJIT-2.0.2.tar.gz
tar –xvf LuaJIT-2.0.2.tar.gz
cd LuaJIT-2.0.2
make install
3.安装nginx
cd /usr/local/
mkdir nginx
下载ngx_devel_kit
wget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz
下载lua-nginx-module
wget https://github.com/openresty/lua-nginx-module/archive/v0.10.9rc7.tar.gz
下载nginx
wget http://nginx.org/download/nginx-1.12.1.tar.gz
解压文件
tar -xvf ngx_devel_kit-0.3.0 .tar.gz
tar -xvf lua-nginx-module-0.10.9rc7.tar.gz
tar -xvf nginx-1.12.1.tar.gz
编译nginx
cd nginx-1.12.1
./configure --prefix=/usr/local/nginx --add-module=../ngx_devel_kit-0.3.0 --add-module=../lua-nginx-module-0.10.9rc7
安装
make
make install
或者合并两个命令(4表示并行运行任务的数量)
make -j 4 && make install
启动nginx
cd /usr/local/nginx/sbin
./nginx
测试是否启动成功:
访问 http:127.0.0.1:80
显示welcome to n ginx!表示启动成功
关闭nginx
./nginx –s stop
4.安装redis
cd /usr/local
mkdir redis
下载
wget http://download.redis.io/releases/ redis-2.8.17.tar.gz
解压
tar -xvf redis-2.8.17.tar.gz
进入解压后的文件夹
cd redis-2.8.17
安装
make
启动redis(&表示后台运行)
cd src
./redis-server &
启动成功后按ctrl+c退出启动界面
测试
./redis-cli
set foo liq ---OK
get foo ---liq
关闭redis
SHUTDOWN
5.配置redis主从
5.1主reids 配置文件
复制一份redis的配置文件:
cd /usr/local/redis/redis-2.8.17
mkdir –p 6379/data 6380/data
cp redis.conf /usr/local/redis/redis-2.8.17/6379/data/redis-6379.conf
编辑文件
cd /usr/local/redis/ redis-2.8.17/6379/data/
vim redis-6379.conf
cd /usr/local/redis/ redis-2.8.17/6379/data/
vim redis-6379.conf
5.1.1
  daemonize no
  修改为:
  daemonize yes (后台程序方式运行)
5.1.2
  pidfile /var/run/redis_6379.pid
  修改为:
  pidfile /usr/local/redis/redis-2.8.17/6379/redis_6379.pid
5.1.3
  //设置请求密码
  requirepass system
5.1.4
  //设置数据文件路径
  dir /usr/local/redis/redis-2.8.17/6379/data
5.2从reids 配置文件
cp /usr/local/redis/redis-2.8.17/6379/data/redis-6379.conf /usr/local/redis/redis-2.8.17/6380/data/redis-6380.conf
5.2.1
port 改为6380
5.2.2
pidfile 改为/usr/local/redis/redis-2.8.17/6380/redis_6380.pid
5.2.2
  删除 requirepass system
5.2.3
  //设置数据文件路径
  dir /usr/local/redis/redis-2.8.17/6380/data
5.2.4
  添加从属关系
  slaveof 127.0.0.1 6379
5.2.5
  添加主redis访问密码
masterauth system
5.3启动redis
/usr/local/redis/redis-2.8.17/src/redis-server /usr/local/redis/redis-2.8.17/6379/redis-6379.conf
/usr/local/redis/redis-2.8.17/src/redis-server /usr/local/redis/redis-2.8.17/6380/redis-6380.conf
5.4测试主从
在主redis中存数据
cd /usr/local/redis/redis-2.8.17/src
./redis-cli -h 127.0.0.1 -p 6379 auth system
set foo test
ctrl+c退出
在从redis中取数据
./redis-cli -h 127.0.0.1 -p 6380
get foo
6.安装lua-resty-redis
从https://github.com/openresty/lua-resty-redis.git下载lua-resty-redis-master后解压
将lib包安装到lua库
cd lua-resty-redis-master
make && make install
安装完成之后在/usr/local/lib/lua/resty里面会有redis.lua
7.修改nginx配置文件
cd /usr/local/nginx/conf
vim nginx.conf
7.1
http内添加 lua_package_path "/usr/local/lib/lua/?.lua;;";
7.2
server listen改为 9080;
7.3
server 内添加
location /lua/set {
default_type 'text/plain';
content_by_lua_file conf/lua/setKeyValue.lua;
location /lua/get {
default_type 'text/plain';
content_by_lua_file conf/lua/getKey.lua;
完整配置文件nginx.cnof:
worker_processes 1;
events {
worker_connections 1024;
http {
include mime.types;
default_type application/octet-stream;
lua_package_path "/usr/local/lib/lua/?.lua;;";
sendfile on;
keepalive_timeout 65;
server {
listen 9080;
server_name localhost;
location / {
root html;
index index.html index.htm;
location /lua/set {
default_type 'text/plain';
content_by_lua_file conf/lua/setKeyValue.lua;
location /lua/get {
default_type 'text/plain';
content_by_lua_file conf/lua/getKey.lua;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
8.编写content_by_lua_file对应的lua脚本
8.1
#对应nginx中的配置: content_by_lua_file conf/lua/setKeyValue.lua;
cd /usr/local/nginx/conf
mkdir lua
cd lua
vim setKeyValue.lua
setKeyValue.lua代码:
--receive request params
local request_method = ngx.var.request_method
local args = nil
local key = nil
local value = nil
--获取参数的值
if "GET" == request_method then
args = ngx.req.get_uri_args()
elseif "POST" == request_method then
ngx.req.read_body()
args = ngx.req.get_post_args()
end
key = args["key"]
value = args["value"]
--connect redis
local redis = require "resty.redis"
local cache = redis.new()
local ok, err = cache.connect(cache, '127.0.0.1', '6379')
cache:set_timeout(60000)
if not ok then
ngx.say("failed to connect:", err)
return
end
-- 请注意这里 auth 的调用过程
-- check password
local count
count, err = cache:get_reused_times()
if 0 == count then
ok, err = cache:auth("system")
if not ok then
ngx.say("failed to auth: ", err)
return
end
elseif err then
ngx.say("failed to get reused times: ", err)
return
end
local res, err = cache:set(key, value)
if not res then
ngx.say("failed to set "..key..": ", err)
return
end
if res == ngx.null then
ngx.say(key.." not found.")
return
end
ngx.say("set redis value >>> "..key..": ", res)
local ok, err = cache:close()
if not ok then
ngx.say("failed to close:", err)
return
end
8.2
#对应nginx中的配置: content_by_lua_file conf/lua/getKey.lua;
vim getKey.lua
getKey.lua代码:
--receive request params
local request_method = ngx.var.request_method
local args = nil
local key = nil
local value = nil
--获取参数的值
if "GET" == request_method then
args = ngx.req.get_uri_args()
elseif "POST" == request_method then
ngx.req.read_body()
args = ngx.req.get_post_args()
end
key = args["key"]
value = args["value"]
--connect redis
local redis = require "resty.redis"
local cache = redis.new()
local ok, err = cache.connect(cache, '127.0.0.1', '6380')
cache:set_timeout(60000)
if not ok then
ngx.say("failed to connect:", err)
return
end
local res, err = cache:get(key)
if not res then
ngx.say("failed to get "..key..": ", err)
return
end
if res == ngx.null then
ngx.say(key.." not found.")
return
end
ngx.say("get from redis >>> "..key..": ", res)
local ok, err = cache:close()
if not ok then
ngx.say("failed to close:", err)
return
end
9.开启端口映射(如果不是安装在虚拟机上的不需要此步骤)
9.1开启虚拟机端口映射:
9.2开放9080端口的防火墙(--permanent永久生效,没有此参数重启后失效):
firewall-cmd --zone=public --add-port=9080/tcp --permanent
10.重新启动nginx
cd /usr/local/nginx/sbin
./nginx
11.查看效果
存值 -- 访问网址并传参:
http://localhost:9080/lua/set?key=foo&value=test1
取值 -- 访问网址并传参:
http://localhost:9080/lua/get?key=foo
每天学习一点点,不知不觉成大神~
posted @
2018-06-12 17:14
李代桃僵
阅读(4008)
评论(0)
编辑
收藏
举报
刷新评论刷新页面返回顶部
Copyright 2022 李代桃僵
Powered by .NET 7.0 on Kubernetes