openresty 学习笔记小结:综合应用实例
openresty 学习笔记小结:综合应用实例
这个综合实验实现的功能其实很简单,用户访问一个页面,显示一个默认页面。输入参数(post或者get都可以),如果参数在数据库查询得到并满足一定条件,根据数据库记录的类型调转到不同页面,并记录下访问者的IP并记录到数据库,参数不符合要求返回默认页面。
其实也就用到之前记录下的那些功能点,这个实验也就被用在本网的www入口
用图说话,具体流程:


简单的说,其实就是先看session有无记录,没有看传入参数后先查redis有无记录,没有则查mysql,查完mysql数据处理后都缓存回redis,那么下次再查该数据就可以在redis查到了。至于获取数据后处理完毕都是经过rabbitMQ发送消息再由python写入mysql。
lua程序只有第一次读取该数据的时候需要操作mysql,其他情况都是只操作redis和rabbitMQ。确保lua的高性能得以发挥。
程序目录是如下:
/home/lua/
└── homePage
├── access.lua
├── assets
│ ├── css
│ │ ├── error-style.css
│ │ ├── index-style.css
│ │ └── style.css
│ └── favicon.ico
├── channelOne.lua
├── channelTwo.lua
├── common
│ ├── getArgs.lua
│ ├── getIp.lua
│ ├── myRabbitmq.lua
│ ├── myRedis.lua
│ └── mysqlPool.lua
├── config
│ └── config.lua
├── error.lua
├── index.lua
├── router.lua
└── view
├── channelOne.html
├── channelTwo.html
├── error.html
├── footer.html
├── header.html
└── index.html
assets 文件夹下放置静态资源文件view 是页面的视图,使用了template这个库common 是一些封装好的方法access.lua 是入口鉴权router 只是简单的根据鉴权结果分配到不同的页面index.lua,error.lua,channelOne.lua和channelTwo.lua 都是些简单的页面
用到的lua库有
/usr/local/openresty/lualib/resty/
├── template.lua
├── upload.lua
├── mysql.lua
├── rabbitmqstomp.lua
├── redis.lua
├── session
主要的 nginx 配置
http
{
lua_package_path "/usr/local/openresty/lualib/?.lua;/home/lua/?.lua;";
lua_package_cpath "/usr/local/openresty/lualib/?.so;";
lua_shared_dict limit 10m;
lua_shared_dict jsjump 10m; server
{
listen 80 default_server;
server_name localhost;
set $SERVER_DIR homePage;
set $BASE_PATH /home/lua/$SERVER_DIR;
set $template_root $BASE_PATH/view; location / {
default_type text/html;
lua_code_cache on;
access_by_lua_file $BASE_PATH/access.lua;
content_by_lua_file $BASE_PATH/router.lua;
} location @error {
default_type text/html;
lua_code_cache on;
content_by_lua_file $BASE_PATH/error.lua;
} location ~ .*\.(js|css|woff|ttf|svg|ico)$ {
root $BASE_PATH/assets;
}
}
另外还有python程序
/home/python/
├── IPGetPlaceDaemon
│ ├── config.cfg
│ ├── daemon.py
│ └── ipGetPlace.py
└── RedisSyncMysqlDaemon
├── config.cfg
├── daemon.py
└── redisSyncMysql.py
openresty 学习笔记小结:综合应用实例的更多相关文章
- python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取政府网新闻内容
python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI,采用Python语言编写 ...
- input子系统学习笔记六 按键驱动实例分析下【转】
转自:http://blog.chinaunix.net/uid-20776117-id-3212095.html 本文接着input子系统学习笔记五 按键驱动实例分析上接续分析这个按键驱动实例! i ...
- ArcGIS案例学习笔记-中国2000坐标转换实例
ArcGIS案例学习笔记-中国2000坐标转换实例 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:西安1980.中国2000.WGS84(GPS)等任意坐标系 ...
- ensorflow学习笔记四:mnist实例--用简单的神经网络来训练和测试
http://www.cnblogs.com/denny402/p/5852983.html ensorflow学习笔记四:mnist实例--用简单的神经网络来训练和测试 刚开始学习tf时,我们从 ...
- openresty 学习笔记六:使用session库
openresty 学习笔记六:使用session库 lua-resty-session 是一个面向 OpenResty 的安全和灵活的 session 库,它实现了 Secure Cookie Pr ...
- openresty 学习笔记番外篇:python的一些扩展库
openresty 学习笔记番外篇:python的一些扩展库 要写一个可以使用的python程序还需要比如日志输出,读取配置文件,作为守护进程运行等 读取配置文件 使用自带的ConfigParser模 ...
- openresty 学习笔记番外篇:python访问RabbitMQ消息队列
openresty 学习笔记番外篇:python访问RabbitMQ消息队列 python使用pika扩展库操作RabbitMQ的流程梳理. 客户端连接到消息队列服务器,打开一个channel. 客户 ...
- openresty 学习笔记五:访问RabbitMQ消息队列
openresty 学习笔记五:访问RabbitMQ消息队列 之前通过比较选择,决定采用RabbitMQ这种消息队列来做中间件,目的舒缓是为了让整个架构的瓶颈环节.这里是做具体实施,用lua访问Rab ...
- openresty 学习笔记四:连接mysql和进行相关操作
openresty 学习笔记四:连接mysql和进行相关操作 毕竟redis是作为缓存,供程序的快速读写,虽然reidis也可以做持久化保存,但还是需要一个做数据存储的数据库.比如首次查询数据在red ...
随机推荐
- JMeter 结果处理常见问题
1. 前言 2. 结果处理常见问题 1)在察看结果树中只看失败情况 2)如何把日志放入文件查看 3)cvs 文件中文读取乱码 4)失败请求数据的采集 5)结果树响应数据中文乱码解决办法 1. 前言 工 ...
- Kubernetes 普及系列:容器基础入门
随着云原生时代的来临,云以及分布式计算已经是时下最受欢迎的技术之一了.其中 Docker 作为最知名的容器平台,到底有着怎样的魅力来让其无人不知无人不晓?废话不多说,让我们开始逐层掀开容器技术的神秘面 ...
- SpringCloud(六)Bus消息总线
Bus 消息总线 概述 分布式自动刷新配置功能 Spring Cloud Bus 配合 Spring Cloud Config使用可以实现配置的动态刷新 Bus支持两种消息代理:RabbitMQ和Ka ...
- Linux 服务管理的两种方式service和systemctl
service命令 service命令其实是去/etc/init.d目录下,去执行相关程序 ``` # service命令启动redis脚本 service redis start # 直接启动red ...
- 【Vue】Vue学习(一)-Vue指令
1.v-text v-text主要用来更新文本,等同于JS的text属性 <span v-text="msg"></span> 这两者等价 <span ...
- 过 DNF TP 驱动保护(一)
过 DNF TP 驱动保护(一) 文章目录: 01. 博文简介: 02. 环境及工具准备: 03. 分析 TP 所做的保护: 04. 干掉 NtOpenProc ...
- POJ3692 最大点权独立集元素个数
题意: n个男孩和m个女孩,给你他们谁和谁彼此了解,问你要找到一个集合,使得这个集合中的男孩和女孩相互了解,并且人数最多. 思路: 简单题目,其实就是在求最大点权独立集元素个数,先 ...
- hdu4411 经典费用里建图
题意: 给以一个无向图,0 - n,警察在0,他们有k个警队,要派一些警队去1--n个城市抓小偷, 问所有吧所有小偷全抓到然后在返回0的最小路径和是多少,当地i个城市被攻击的时候他会通知i ...
- canvas绘制折线路径动画
最近有读者加我微信咨询这个问题: 其中的效果是一个折线路径动画效果,如下图所示: 要实现以上路径动画,一般可以使用svg的动画功能.或者使用canvas绘制,结合路径数学计算来实现. 如果用canva ...
- 【maven】pom.xml中"spring-boot-maven-plugin"报红问题
问题原因 插件下载速度太慢了,即是从国外的中央仓库里下载的. 没有刷新maven spring-boot-maven-plugin没加版本号(有些电脑不加版本号,也是不会爆红的) 问题解决 maven ...