Centos7安装Nginx整合Lua
(adsbygoogle=window.adsbygoogle||[]).push({})背景Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。现在通常把lua迁入nginx中,根据lua脚本规则,强化nginx的能力。本文介绍在centos7中安装nginx整合lua。环境centos7安装关闭防火墙12systemctl stop firewalld.service systemctl disable firewalld.service #禁止firewall开机启动安装依赖环境1yum -y install yum-utils gcc zlib zlib-devel pcre-devel openssl openssl-devel wget安装LuaJIT1234wget http://luajit.org/download/LuaJIT-2.0.2.tar.gztar -xvf LuaJIT-2.0.2.tar.gzcd LuaJIT-2.0.2make install安装nginx下 ...
如何搭建Lua开发环境
摘要
工欲善其事必先利其器,在开发Lua代码之前,我们必须要搭建好一个Lua开发环境。下面是在MAC上面搭建Lua环境的步骤。 Linux上面的步骤与其基本相似,而Windows与之有所差异,在最后将补充说明。
环境清单
lua 5.3.3
luarocks 2.3.0
安装过程
首先下载lua最新release版本,5.3.3.
wget -R -O https://www.lua.org/ftp/lua-5.3.3.tar.gz
解压此压缩包,并且在目录中执行make。
tar zxf lua-5.3.3.tar.gz
cd lua-5.3.3
make macosx test( <b> 在mac系统中,一定要执行这一句 </b> )
执行安装脚本
make install
写一个最简单的Lua脚本,验证我们安装是否成功。
test.lua (脚本名称)
print ("Hello World!")
执行脚本
lu ...
lua table深拷贝
深拷贝,只需要对table类型进行递归拷贝即可,其他类型直接用赋值拷贝或浅拷贝。
还有,拷贝后的table应与原table具有相同的元表,and元表不需要递归拷贝。
function deepcopy( src )
local lookup_table = {}
local function _copy( object )
if type(object) ~= "table" then
return object
elseif lookup_table[object] then
return lookup_table[object]
end
<span class="kd">local</span> <span class="n">new_table</span> <span class="o">=</span> <span class="p">{& ...
nginx lua环境搭建
安装nginx及搭建本地测试环境下载最新版的nginx
$ cd /usr/local/src
$ wget http://nginx.org/download/nginx-1.11.3.tar.gz
$ tar -zxvf nginx-1.11.3.tar.gz
安装Luajit(最新版)
$ cd /usr/local/src
$ wget http://luajit.org/download/LuaJIT-2.1.0-beta2.tar.gz
$ tar -zxvf LuaJIT-2.1.0-beta2.tar.gz
$ cd ./LuaJIT-2.1.0-beta2
$ make && make install
在/usr/local/src目录下创建nginx-module目录,在nginx-module目录下下载第三方模块:lua-nginx-module:
$ git clone https://github.com/chaoslawful/lua-nginx-module.git
$ git clone https://github.com/ ...
lua c api
一 概述 很多情况下有这种需求:在特定的框架中针对不同的业务做少量修改。使用 C/C++ 开发稳定的框架,调用针对不同业务开发的 Lua 函数可以实现需求。其实从 C/C++ 调用 Lua 函数非常简单,调用时将 Lua 函数压入栈、将函数参数压入栈,调用 lua_pcall 完成调用;调用后从栈获得调用函数返回结果。 二 示例 1. 程序示例 #include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
/******************************************************************************
* 函数结构体定义
*********************************************** ...
lua三种字符串拼接性能分析
说明lua中提供了3中字符串拼接函数,测试在日常使用情况下,各种拼接字符串的性能对比。
测试环境操作系统:Debian GNU/Linux 8CPU:Intel(R) Xeon(R) CPU E5-2640 v2 @ 2.00GHz内存:64Glua环境:LuaJIT-2.1.0-beta3 (测试的时候关闭jit)
测试普通日常使用性能分析日常拼接字符串的时候一般都是多个已存在的变量,夹杂一些字符串常量进行拼接,例如:1package.cpath = pg.script_dir .. "/bot/lib/?.so;" .. id .. package.cpath
测试代码:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263if jit then jit.off()end-- 随机生成字符串备用local randomStringSzie = 200000local strTab ...
lua
lua-resty-lrucache深入解析lua-resty-lrucache是openresty里常用的缓存,是一个worker级别的缓存,也是一个最近最少使用的缓存,下面我们来具体分析它的实现过程。
使用示例123456789101112131415161718192021local _M = {}local lrucache = require "resty.lrucache.pureffi"local c, err = lrucache.new(200) if not c then error("failed to create the cache: " .. (err or "unknown"))endfunction _M.go() c:set("dog", 32) c:set("cat", 56) ngx.say("dog: ", c:get("dog")) ngx.say("cat: ", c:get(" ...
lua学习笔记 · DUDOR's BLOG
##语法约定
lua中的变量名定义规则和大多数编程语言一样,是任何非数字开头的由字母,数字和下划线组成的字符串。
lua是大小写敏感的。
##字符串
字符串是由单引号或双引号或N级中括号定义的,比如
a = ‘dudor’
a = “dudor”
a = [[dudor]]
上面三个值是相等的。
其中由N级中括号定义的方式比较特别,在别的语言中很少见到。N级中括号是在两个中括号中插入N个等号定义为第N级中括号。
##注释
注释是用两个横线定义的,单行注释是 – ,多行注释为 –[
##类型
lua中有8种类型: nil, boolean, number, string, function, userdata, thread, and table.
nil类似于c中的NULL,通常用来表示一个无意义的值。
boolean有false和true两个值。
number代表双精度浮点数字。
string是上面所说的字符串。
userdata用来将任意类型的c数据保存在lua变量中。它不能被lua创建和修改。
thread代表了一种线程,当然和C中的线程不由,类似于UNITY3D中的co ...
Lua学习笔记二
while1234while(条件)do 循环体end
代码示例及结果:
123456a = 0while(a < 10)do print(a) a = a + 1end
123456789100123456789
for123for var=值1,值2,值2 do 循环体end
从值1变化到值2,每次变化以值3为步长,执行一次循环体。表达式3不指定时默认为1.
代码示例及结果:
123for i = 0,10 do print(i)end
1234567891011012345678910
变化范围包含值2
for 遍历table:
1234table = {"a","b","c"}for i,v in ipairs(table) do print(i,v)end
1231 a2 b3 c
repeat…until123repeat 循环体until(条件语句)
执行循环体,直到条件语句成立
代码示例及结果:
12345i = 0repeat print(i) i = i+1until(i>10)
123456 ...
Lua 学习 chapter17
目录
require函数
模块
搜索路径
搜索器
子模块和包
Continue, come on.
require函数
ruquire函数可以加载任意模块,然后创建和返回一个表.
1
2
3
4
5
6
7
8
9
local mod = require "mod"
mod.foo()
local m = require "mod"
local f1 = m.foo
f1()
local f2 = require "mod".foo
f2()
require 函数在表package.loaded中检查模块是否已经被加载过。如果加载过就返回相应的值,这就避免的重复的加载。没有加载,就会通过loadfile来对其进行加载。如果没有lua文件,就回去加载c标准库,使用底层函数package.loadlib进行加载。
如果加载函数有返回值,那么函数require会返回合格值,将其保存在packag.loaded中,如果没有返回值,且package.loaded[@rep{moduname}]为空,函数re ...