openresty连接mysql_在CentOS 6上使用openresty访问mysql
简介
OpenResty 能够使用Lua语言快速构造出足以胜任10K+并发连接响应的超高性能web应用, 构建web应用不可避免地会访问数据库,本篇介绍openresty如何访问mysql。
本教程适用于CentOS 6.x版本。
在使用Openresty访问mysql之前,您需要先建立Openresty工作环境,可以参考在CentOS 6上搭建openresty环境,参考在Centos 6上建立lnmp建立mysql环境。
建立mysql表
在mysql数据库中建立openresty数据库和user表,其中已设置mysql访问密码为'root':
$sudo mysql -uroot -proot
mysql> CREATE DATABASE IF NOT EXISTS openresty DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
mysql> use openresty
Database changed
mysql> create table user ( id int(10) not null auto_increment, name varchar(80) not null default '', email varchar(80) not null default '', primary key(id)) DEFAULT CHARSET=UTF8;
Query OK, 0 rows affected (0.00 sec)
nginx的配置如下:
http {
init_by_lua '
mysql = require "resty.mysql"
cjson = require "cjson"
';
server {
listen 80;
server_name localhost;
location /insert {
content_by_lua_file conf/user.lua;
}
location /delete {
content_by_lua_file conf/user.lua;
}
location /query {
content_by_lua_file conf/user.lua;
}
}
}
lua脚本文件user.lua如下:
function connect_mysql()
local db, err = mysql:new()
if not db then
ngx.log(ngx.ERR, "failed to instantiate mysql: "..err)
return
end
db:set_timeout(1000) -- 1 sec
local ok, err, errno, sqlstate = db:connect{
host = '127.0.0.1',
port = 3306,
database = 'openresty',
user = 'root',
password = 'root',
max_packet_size = 1024 * 1024,
pool = "openrestypool" }
if not ok then
ngx.log(ngx.ERR, "failed to connect: ", err, errno, sqlstate)
return
end
return db
end
function keepalive(mydb)
if httpdnsdb~=nil then
local ok, err = mydb:set_keepalive(0, 1000)
if not ok then
ngx.log(ngx.ERR, "failed to set keepalive: ", err)
return
end
end
end
function myquery(querystring)
mydb=connect_mysql()
if not mydb then
ngx.say("mydb is nil.")
return;
end
local res, err, errno, sqlstate = mydb:query(querystring)
if err then
ngx.say('"error":'..err)
elseif res then
ngx.say(cjson.encode(res))
end
keepalive(mydb)
end
ngx.req.read_body()
args=ngx.req.get_uri_args()
if (ngx.var.uri == '/insert') then
ngx.req.set_header('Content-Type', 'text/html;charset=utf8');
local queryString="INSERT INTO user(name, email) VALUES('".. args.name .. "','" .. args.email .. "')"
myquery(queryString)
elseif (ngx.var.uri == '/delete') then
ngx.req.set_header('Content-Type', 'text/html;charset=utf8');
local queryString= "delete from user WHERE name='"..args.name.."'"
myquery(queryString)
elseif (ngx.var.uri == '/query') then
ngx.req.set_header('Content-Type', 'text/html;charset=utf8');
local queryString= "select * from user WHERE name='"..args.name.."'"
myquery(queryString)
end
启动nginx,并使用curl测试:
$ sudo /usr/local/openresty/nginx/sbin/nginx -c /usr/local/openresty/nginx/conf/nginx.conf
$ curl "http://127.0.0.1/insert?name=abc&email=abc@163.com"
{"insert_id":7,"server_status":2,"warning_count":0,"affected_rows":1}
$ curl "http://127.0.0.1/query?name=abc"
[{"email":"abc@163.com","name":"abc","id":7}]
$ curl "http://127.0.0.1/delete?name=abc"
{"insert_id":0,"server_status":34,"warning_count":0,"affected_rows":1}
$ curl "http://127.0.0.1/query?name=abc"
{}
总结
使用美团云主机,可以很方便地使用yum源获取软件,建立属于自己的openresty和lua环境,访问mysql,快速实现自己10k+的超高性能WEB应用。
openresty连接mysql_在CentOS 6上使用openresty访问mysql相关推荐
- 如何在CentOS 7上安装和配置MySQL Cluster
翻译&转载:https://www.howtoforge.com/tutorial/how-to-install-and-configure-mysql-cluster-on-centos-7 ...
- Centos系统上安装并配置mysql的教程?
Centos下以rpm方式安装MySQL步骤如下: 一.mysql-5.7.12 rpm bundel包下载 本人喜欢把下载的文件放在/root/software路径下,便于统一管理 [root@lo ...
- 如何在windows上搭建mysql_如何在Windows上安装多个MySQL
[IT168 技术文档]本文以免安装版的mysql(Without installer)为例,对如何在Windows上安装多个MySQL进行讲解. 免安装版的mysql(Without install ...
- 一个服务器启动2套mysql_一台服务器上启动两个mysql实例
一台服务器上启动两个mysql实例 操作环境:centos6.8 有时由于服务器硬件资源紧张,而又需要新增mysql服务.这时我们可以采取在一台服务器上部署两个mysql实例,来解决. 1.创建新的m ...
- hhvm mysql_在Ubuntu系统上搭建Nginx+HHVM+MySQL开发环境的教程
貌似最近这个HHVM特别火,其主要原因大概要归咎于大的运行效率吧,安装完之后使用探针测试,计算运行的时间都是0.0*的级别,据说在512M的内存下也可以跑的完美,大大大大大大地提高了网站运行效率.目前 ...
- mysql 1045 远程_启用远程mysql连接:错误1045(28000):拒绝用户访问
启用远程mysql连接:错误1045(28000):拒绝用户访问 MySQL 5.1.31运行在WindowsXP上. 从本土化MySQL服务器(192.168.233.142)我可以root方式连接 ...
- 阿里云centos 7.6安装mysql_阿里云Centos7上安装MySQL教程
1 基本安装过程 1.查看系统是否安装了mysql软件 # rpm -qa|grep -i mysql 2.将已经安装过的软件卸载掉.注意:这样的卸载是不彻底,不过这里够用了 # yum remove ...
- 如何在centos中找到安装mysql_如何在CentOS 7上安装MySQL
随着CentOS 7 MySQL的发布,全球最受欢迎的开源关系数据库管理系统在CentOS的存储库中不再可用,而且MariaDB已成为默认的数据库系统. MariaDB是MySQL的向后兼容,二进制插 ...
- 如何在CentOS 7上使用uWSGI和Nginx来运行Django应用程序
@(tigerfive)[tigerfive][linux学习笔记][uwsgi][django][nginx] 前言 先决条件和目标 安装和配置VirtualEnv和VirtualEnvWrappe ...
- 如何在 CentOS 7 上安装 Nginx
本文首发:开发指南:如何在 CentOS 7 上安装 Nginx Nginx 读作 engine x, 是一个免费的.开源的.高性能的 HTTP 和反向代理服务,主要负责负载一些访问量比较大的站点. ...
最新文章
- FFTW、Eigen库在VisualStudio中的导入和使用
- k均值例子 数据挖掘_数据挖掘的技术有很多种,常用的数据挖掘技术就这13种...
- pkuseg-python的postag.zip在不能联网的服务器上的解决办法
- oracle语句优化积累
- linux下iptables详解
- docker快速搭建http服务器
- 高等数学:第八章 多元函数的微分法及其应用(6)微分法在几何上的应用
- Android动态申请Camera权限应用闪退问题
- 可穿戴产品中四大心率监测方法盘点
- 计算机网络-----TCP三次握手相关面试题扩展
- 地理坐标系_GCS汇总
- 找出矩阵中的最大正方形
- EasyNVR接入EasyNVS显示授权超时是什么原因?如何解决?
- SBW(线控转向系统转向盘子系统Matlab/Simulink模型搭建)
- 2020ciscn wp
- 基于STM32的触摸屏学习笔记
- ELK—x-pack插件
- java 中文域名解析idn_中文域名 原理剖析
- 使用HTML5拖拽实现表格列移动
- PLS系列001 数据预处理
热门文章
- 在VC中使用Windows管道技术编程
- 4.算法通关面试 --- 树和图
- 11.策略模式(Strategy Pattern)
- mysql字段加密存储过程_数据库:加密存储过程
- 中兴echat_中兴高达震撼发布12款新品 助力专网行业融合发展
- 编程语言 - 脚本编程 - JavaScript/Jquery/Ajax/XML/JSON/ActionScript3
- 2018年终总结以及未来展望
- 6. 集成学习(Ensemble Learning)算法比较
- Go基础系列:接口类型断言和type-switch
- hihoCoder#1743:K-偏差排列(矩阵快速幂+状压dp)