025_lua脚本语言
一、
--cat /opt/nginx/conf/conf.d
lua_package_path '/opt/nginx/conf/lua/?.lua;;'; --lua模块路径,其中”;;”表示默认搜索路径
lua_package_cpath '/opt/nginx/conf/lua/?.so;;'; --c模块
init_by_lua_file '/opt/nginx/conf/lua/init_by_lua.lua'; --nginx Master进程加载配置时执行;通常用于初始化全局配置/预加载Lua模块
init_worker_by_lua_file '/opt/nginx/conf/lua/init_worker_by_lua.lua'; -- 每个Nginx Worker进程启动时调用的计时器,如果Master进程不允许则只会在init_by_lua之后调用;通常用于定时拉取配置/数据,或者后端服务的健康检查
log_by_lua_file '/opt/nginx/conf/lua/log_by_lua.lua'; --log阶段处理,比如记录访问量/统计平均响应时间
access_by_lua_file '/opt/nginx/conf/lua/access_by_lua.lua'; --请求访问阶段处理,用于访问控制
# 缓存配置
# 所有可信IP, 包括:腾讯/阿里服务节点, 金色家园各个机房IP段及办公网IP段; 数据在Nginx初始化时倒入
lua_shared_dict eleme_trusted_iplib 10M; #共享全局变量,在所有worker间共享
lua_shared_dict eleme_whitelist_iplib 1M; # 仅金色家园各个机房IP段及办公网IP段
# ngx_waf
lua_shared_dict ngx_waf_locks 3M; # waf locks
lua_shared_dict ngx_waf_counter 500M; # counter data
lua_shared_dict ngx_waf_counter_exptime 500M; # counter exptime
lua_shared_dict ngx_waf_defense_crawler_blacklist 10M; # blacklist
# 配置相关
lua_shared_dict ngx_admin_config 1M; # ngx_admin_config配置
--[[#参考链接
http://wiki.jikexueyuan.com/project/nginx-lua/lua.html #首页 Wiki 服务器 Nginx 跟我学 Nginx+Lua 开发
http://jinnianshilongnian.iteye.com/blog/2186448
http://jinnianshilongnian.iteye.com/category/333854 #第二章 OpenResty(Nginx+Lua)开发入门->跟我学Nginx+Lua开发(开涛)
]]
二、
(1)socket模块安装
wget http://w3.impa.br/~diego/software/luasocket/old/luasocket-2.0.3-rc1.zip
mv luasocket-2.0.3 /usr/local/include/
cd /usr/local/include/
cp luajit-2.0/l* luasocket-2.0.3/src/
make
make install
lua
> require("socket")
>
cp src/socket.lua /opt/nginx/conf/lua/
(2)第二种方式,luarocks(类似yum)
yum -y install luarocks.x86_64
luajit -llyaml
>local lyaml = require "lyaml"
>print(package.searchpath('lyaml', package.path)) --I can get the path to the file like this:
/usr/local/share/lua/5.1/lyaml/init.lua
package.path='./?.lua;/usr/share/lua/5.1/?.lua;/usr/share/lua/5.1/?/init.lua;/usr/lib64/lua/5.1/?.lua;/usr/lib64/lua/5.1/?/init.lua;/opt/nginx/conf/lua/?.lua;;'
print(package.path)
<1>安装依赖
yum install gcc gcc-c++ kernel-devel
yum install readline-dev
yum install ncurses-devel.i386
<2>安装lua
cd /usr/local/ && wget http://www.lua.org/ftp/lua-5.1.5.tar.gz
tar zxvf lua-5.1.5.tar.gz
cd lua-5.1.5
vi Makefile
INSTALL_TOP= /usr/local/lua-5.1.5
make linux
make install
<3>安装luarocks
cd /usr/local/include/ && wget https://luarocks.org/releases/luarocks-2.4.3.tar.gz
tar zxpf luarocks-2.4.3.tar.gz
cd luarocks-2.4.3
./configure --prefix=/usr/local/luarocks-2.4.3 --with-lua=/usr/local/lua-5.1.5
make build
make install
<4>配置环境变量
export PATH=$PATH:/usr/local/luarocks-2.4.3/bin:/usr/local/lua-5.1.5/bin:/usr/local/lua-5.1.5/bin
export LUA_PATH="/usr/local/include/luarocks-2.4.3/share/lua/5.1/?.lua;/usr/local/include/luarocks-2.4.3/share/lua/5.1/lyaml/?.lua;/opt/nginx/conf/lua/?.lua;;" #等同于nginx配置中的lua_package_path
export LUA_CPATH="/opt/nginx/modules/?.so;;/usr/local/include/luarocks-2.4.3/lib/luarocks/rocks;/usr/local/include/luarocks-2.4.3/lib/luarocks" #等同于nginx配置中的lua_package_cpath
<5>luarocks常用命令
# luarocks list
luasocket
3.0rc1-2 (installed) - /usr/local/include/luarocks-2.4.3/lib/luarocks/rocks
lyaml
6.1.3-1 (installed) - /usr/local/include/luarocks-2.4.3/lib/luarocks/rocks
# luarocks path
export LUA_PATH='/root/.luarocks/share/lua/5.1/?.lua;/root/.luarocks/share/lua/5.1/?/init.lua;/usr/local/luarocks-2.4.3/share/lua/5.1/?.lua;/usr/local/luarocks-2.4.3/share/lua/5.1/?/init.lua;./?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1/?/init.lua;/usr/local/lib/lua/5.1/?.lua;/usr/local/lib/lua/5.1/?/init.lua'
export LUA_CPATH='/root/.luarocks/lib/lua/5.1/?.so;/usr/local/luarocks-2.4.3/lib/lua/5.1/?.so;./?.so;/usr/local/lib/lua/5.1/?.so;/usr/local/lib/lua/5.1/loadall.so'
参考:https://luarocks.org/#quick-start
http://uncle-code.iteye.com/blog/2257970
三、按照项目的salt安装
/opt/luarocks/bin/luarocks install luasocket 2.0.2-6
/usr/local/bin/luajit -e "require('socket')"
/opt/luarocks/bin/luarocks install lyaml 6.1.1-4
/usr/local/bin/luajit -e "require('lyaml')"
/opt/luarocks/bin/luarocks install lua-resty-iputils
/usr/local/bin/luajit -e "require('resty.iputils')"
cd /opt && ln -s luarocks-2.4.1 luarocks
四、生产部署只需要看这些就ok了。
cd /tmp/waimai_lua
eoc upload /tmp/waimai_lua/xg1-waimai-openapi-proxy-1-lua.tar.gz /opt/nginx/conf/lua -h wg-stargate-web-3
eoc create -h wg-stargate-web-3 --script 'cd /opt/nginx/conf/lua/ && tar -xf xg1-waimai-openapi-proxy-1-lua.tar.gz' -y
eoc upload /tmp/waimai_lua/xg1-waimai-openapi-proxy-1-luajit-2.1.tar.gz /usr/local/include/ -h wg-stargate-web-3
eoc create -h wg-stargate-web-3 --script 'cd /usr/local/include/ && tar -xf xg1-waimai-openapi-proxy-1-luajit-2.1.tar.gz' -y
eoc upload /tmp/waimai_lua/xg1-waimai-openapi-proxy-1-luarocks-2.4.1.tar.gz /opt -h wg-stargate-web-3
eoc create -h wg-stargate-web-3 --script 'cd /opt && tar -xf xg1-waimai-openapi-proxy-1-luarocks-2.4.1.tar.gz' -y
eoc upload /tmp/waimai_lua/ngx_func_lua.conf /opt/nginx/conf/conf.d -h wg-stargate-web-3
eoc upload /tmp/waimai_lua/xg1-waimai-openapi-proxy-1-ngx_http_lua_upstream_module.so /opt/tengine-2.1.2/modules -h wg-stargate-web-3
eoc upload /tmp/waimai_lua/xg1-waimai-openapi-proxy-1-yaml.so /usr/local/lib/lua/5.1/ -h wg-stargate-web-3
cd /usr/local/lib/lua/5.1 && mv xg1-waimai-openapi-proxy-1-yaml.so yaml.so && chmod a+x yaml.so
025_lua脚本语言的更多相关文章
- InstallShield 脚本语言学习笔记
InstallShield脚本语言是类似C语言,利用InstallShield的向导或模板都可以生成基本的脚本程序框架,可以在此基础上按自己的意愿进行修改和添加. 一.基本语法规则 ...
- JS脚本语言是什么意思?
javascript,Javascript是一种浏览器端的脚本语言,用来在网页客户端处理与用户的交互,以及实现页面特效.比如提交表单前先验证数据合法性,减少服务器错误和压力.根据客户操作,给出一些提升 ...
- 使用Lua脚本语言开发出高扩展性的系统,AgileEAS.NET SOA中间件Lua脚本引擎介绍
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
- .NET 动态脚本语言Script.NET 入门指南 Quick Start
Script.NET是一种动态的脚本语言,它使得程序可扩展,可定制,和维护性好.和Office系列的VB Script相似,可以在应用中嵌入大量的代码块,以便在运行时才执行这些代码. Script.N ...
- 使用expect脚本语言写一键发布服务(代码发布、所有服务重启)
互联网服务有很多台服务,但是在上线的时候需要将这些服务版本都更新与个个都重启,下面的脚本语言,就是一键发布服务~ 1.在/home/weihu/deploy/ 目录下建下publish .publis ...
- C#最良心脚本语言C#Light/Evil,Xamarin\WP8\Unity热更新最良心方案,再次进化.
C#Light的定位是嵌入式脚本语言,一段C#Light脚本是一个函数 C#Evil定位为书写项目的脚本语言,多脚本文件合作,可以完全用脚本承载项目. C#Light/Evil 使用完全C#一致性语法 ...
- [Java面试九]脚本语言知识总结.
核心内容概述 1.JavaScript加强,涉及到ECMAScript语法.BOM对象.DOM对象以及事件. 2.Ajax传统编程. 3.jQuery框架,九种选择器为核心学习内容 4.JQuery ...
- Atitit java方法引用(Method References) 与c#委托与脚本语言js的函数指针
Atitit java方法引用(Method References) 与c#委托与脚本语言js的函数指针 1.1. java方法引用(Method References) 与c#委托与脚本语言js ...
- JS的脚本语言
js的脚本语言全程javascript在网页里面使用的脚本语言:分类:1.嵌入网页里面2.在外部脚本标签可以写在网页的任何地方,但一般都写在网页的底部:<script type="te ...
随机推荐
- VirtualBox下安装Ubuntu Server 16.04
安装环境: Windows:确保磁盘空间足够,一般需要8个G左右. 所需文件: 首先在Ubuntu的官网上下载.iso的镜像文件,链接是:http://www.ubuntu.org.cn/server ...
- Shell编程(四)Shell变量
1. 自定义变量(仅在当前shell生效) 1.1 定义变量 #!/usr/bin/bash ip=115.239.210.27 if ping -c1 $ip &>/dev/null ...
- eclipse配置文件乱码
修改文件打开工具 安装文件编辑器插件 然后搜索
- 深入浅出mybatis之与spring集成
目录 写在前面 详细配置 1.dataSource(数据源) 2.sqlSessionFactory(Session工厂) 3.Mapper(映射器) 4.TransactionManager(事务管 ...
- 解决浏览器跨域限制方案之JSONP
一.什么是JSONP JSONP即:JSON with Padding,是一种解决因浏览器跨域限制不允许访问跨域资源的方法. JSONP是一个非官方的协议,它允许在服务器端返回javascript标签 ...
- 安装Blend+SketchFlow Preview for Visual Studio 2012出现错误
安装Blend+SketchFlow Preview for Visual Studio 2012出现如下错误: 首先是这个网址:http://msdn.microsoft.com/en-us/exp ...
- transitionEnd不起作用解决方法
var show = function(html, className) { className = className || ""; var mask = $("< ...
- ASP.NET Web API 2 之 HttpRequestMessage 对象
Ø 前言 在 Web API 中经常会使用到 HttpRequestMessage 和 HttpResponseMessage 对象,这两个对象封装了对 Web API 的请求和响应,位于 Syst ...
- nginx: [error] CreateFile() "E:\nginx\nginx-1.9.3/logs/nginx.pid" failed
nginx: [error] CreateFile() "E:\nginx\nginx-1.9.3/logs/nginx.pid" failed nginx: [error] Op ...
- Jupyter 同时支持python2, python3
从docker hub 下载了一个 tensorFlow 镜像,但是里面只支持python2.7 kernel, 不支持python3 kernel. 1. Notebook的右上角点new 只看到 ...