nginx lua连接mysql_OpenResty的安装和在nginx中使用lua直接访问mysql达到数据接口的统一...

OpenResty 它打包了标准的 Nginx 核心,很多的常用的第三方模块,以及它们的大多数依赖项。

如果需要nginx的第三方库的时候,可以考虑OpenResty,可以少掉很多安装的麻烦,OpenResty基本上安装了常用的nginx第三方库。

OpenResty的安装:

安装nginx 中 rewrite模块等需要的插件:

apt-get install libreadline-dev libpcre3-dev libssl-dev perl build-essential

下载最新版的OpenResty

http://openresty.org/

wget http://openresty.org/download/ngx_openresty-1.2.7.1.tar.gz

tar -xvf nngx_openresty-1.2.7.1.tar.gz

mv nngx_openresty-1.2.7.1 /usr/local/openresty-1.2.7.1

cd openresty-1.2.7.1

./configure --with-luajit --prefix=/usr/local/openresty

make & make install

这样基本就可以把nginx基本的第三方库安装进去

在/to/nginx/conf 下修改配置文件nginx.config

location /hello {

default_type 'text/plain';

content_by_lua 'ngx.say("hello, lua")';

}

/to/nginx/sbin/nginx   #启动nginx

或者/to/nginx/sbin/nginx –s reload #重启nginx

访问localhost/hello

会出现“hello,lua”

对于访问接口的统一有很多的处理方式,这里介绍使用nginx lua 访问mysql并用memcache缓存起来。

location/getXxxInfo {

default_type'text/plain';

content_by_lua'--先从memcache提取数据

local args=ngx.req.get_uri_args()ifargs["appleid"]==nil thenreturnend

local memcached=require"resty.memcached"local memc, err=memcached:new()ifnot memc then

ngx.say("failed to instantiate memc:", err)returnend

memc:set_timeout(1000)--1sec

local ok, err=memc:connect("192.168.40.xxx",11211)ifnot ok then

ngx.say("failed to connect:", err)returnend

local res, flags, err=memc:get(args["appleid"] )iferr then

ngx.say("failed to get dog:", err)returnend--数据不在memcache中 从数据库提取并放到memcacheifnot res then

local mysql=require"resty.mysql"local db, err=mysql:new()ifnot db then

ngx.say("failed to instantiate mysql:", err)returnend

db:set_timeout(1000)--1sec

local ok, err, errno, sqlstate=db:connect{

host="xxx.xxx.xx.xxx",

port=3306,

database="xxxx",

user="root",

password="xxxx",

max_packet_size=1024*1024}ifnot ok then

ngx.say("failed to connect:", err,":", errno,"", sqlstate)returnend--ngx.say("connected to mysql.")

sql="select * from xxx where xxx ="..args["xxx"]

res, err, errno, sqlstate=db:query(sql)ifnot res then

ngx.say("bad result:", err,":", errno,":", sqlstate,".")returnend

local cjson=require"cjson"ngx.say(cjson.encode(res))

local ok, err=memc:set(args["xxxx"], cjson.encode(res))ifnot ok then

ngx.say("failed to set dog:", err)returnend

local ok, err=db:set_keepalive(0,100)ifnot ok then

ngx.say("failed to set keepalive:", err)returnendreturnend

ngx.say(res)

memc:set_keepalive(0,100)';}

posted on 2013-03-21 16:53 漂漂 阅读(17088) 评论(0)  编辑 收藏 引用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值