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 ...
随机推荐
- [开源 .NET 跨平台 Crawler 数据采集 爬虫框架: DotnetSpider] 学习
http://www.cnblogs.com/jjg0519/p/6707513.html
- hdu 2815 Mod Tree (exBSGS)
http://acm.hdu.edu.cn/showproblem.php?pid=2815 //解 K^D ≡ N mod P #include<map> #include<cma ...
- ajax方式下载文件
在web项目中需要下载文件,由于传递的参数比较多(通过参数在服务器端动态下载指定文件),所以希望使用post方式传递参数.通常,在web前端需要下载文件,都是通过指定<a>标签的href属 ...
- Jenkins和pipeline
Jenkins https://jenkins.io/index.html The leading open source automation server, Jenkins provides hu ...
- 【noip 2015】提高组
先扔一份写的超级详细的题解. -Day1- -Day2- (感觉自己并没有什么写题解的必要啊……做点补充好了,顺便扔代码 D1T1.神奇的幻方 题目链接 #include<cstdio ...
- Python之进程 1 - 基本概念
一 背景知识 顾名思义,进程即正在执行的一个过程.进程是对正在运行程序的一个抽象. 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所 ...
- Hbase使用MapReduce编程导出数据到HDFS
废话少说,直接上代码! package cn.com.oozie.demo; import java.io.IOException; import org.apache.hadoop.conf.C ...
- Java基础_0310:引用传递
引用传递 引用传递是Java之中最让初学者费解的概念,而在实际的开发之中,引用传递又有着非常重要的作用: 引用传递的核心在于同一块堆内存空间被不同的栈内存所指向: 范例:第一道引用传递范例 class ...
- Java基础_0306:数组的定义与使用
数组 数组指的就是一组相关变量的集合.例如:如果说现在要想定义100个整型变量,按照传统的思路,可能这样定义: int i1,i2 ,... i100,一共写100个变量. 以上的形式的确可以满足技术 ...
- pwnable.kr fb
fb-1 pt 连接到服务器,发现 有三个文件,fd脚本,fd.c脚本的源程序,flag是要看的东西,无权限 来我们分析一下源码 如果只传进去一个值,print” pass argv[1] a num ...