在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1. Lua // 官方网站 http://www.lua.org/ 下载源码包 $ tar xvzf lua-5.1.5.tar.gz $ cd lua-5.1.5 $ make macosx $ sudo make install // 一定要 sudo cd src && mkdir -p /usr/local/bin /usr/local/include /usr/local/lib \ // 以上就完成了Lua的安装, 一般情况下安装过程不会报错
2. luaJIT // LuaJIT是一个利用JIT编译技术把Lua脚本直接编译成机器码由CPU运行 // 官方网站 http://luajit.org/download
3. ngx_devel_kit 和 lua-nginx-module // 直接去 github 下载 zip文件 解压即可 $ tar xvf ngx_devel_kit-master.zip $ tar xvf lua-nginx-module-master.zip // 在之后编辑 nginx 源码时, 需要关联这两个文件夹
4. nginx // 官方网站 http://nginx.org/download/
5. ngnix 的一些操作 // 启动 nginx $ sudo /usr/local/nginx/sbin/nginx // 重新加载 nginx $ sudo /usr/local/nginx/sbin/nginx -s reload // 检查 nginx 配置文件是否有错 $ sudo /usr/local/nginx/sbin/nginx -t // 查询 nginx 的工作进程号 $ ps -ef | grep nginx // 强行停止, 可能会有2个进程号, 同时kill掉 $ sudo kill -9 进程号
6. 测试一下 web 服务是否正常 // 访问 nginx 服务 $ curl -I "http://localhost:80" ------ 正常返回以下信息 ------ HTTP/1.1 200 OK Server: nginx/1.9.15 Date: Wed, 11 May 2016 03:46:57 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Tue, 10 May 2016 09:15:43 GMT Connection: keep-alive ETag: "5731a6bf-264" Accept-Ranges: bytes
7.创建第一个 nginx 关联 lua 程序, /lua-version // 配置 /usr/local/nginx/conf/nginx.conf 文件 // 以下是配置的代码片段 server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } location /lua-version { content_by_lua ' if jit then ngx.say(jit.version) else ngx.say(_VERSION) end '; } location /user-aciton { // 导入 lua脚本 的方式
}
8. LuaSocket // 官方网站 http://luaforge.net/projects/luasocket/ $ tar -zxvf ./luasocket-2.0.2.tar.gz $ luasocket-2.0.2 $ make $ make install --------------- 安装好之后的环境变量设置 ------------------ // 由于 LuaSocket 模块文件的存放位置不在系统模块加载路径范围内 // 因此需要修改 Lua 的环境变量 LUA_PATH 和 LUA_CPATH // 来把 LuaSocket 的位置目录添加到系统模块的加载路径上 $ cd $ vi .profile $ export LUA_PATH=/usr/local/share/lua/5.1/?.lua\;?.lua $ export LUA_CPATH=/usr/local/lib/lua/5.1/?.so\;?.so --------------- 安装是需要修改的地方 ----------------- 1.查看2个路基设置是否正确 INSTALL_TOP_SHARE=/usr/local/share/lua/5.1 INSTALL_TOP_LIB=/usr/local/lib/lua/5.1 2.打开 MacOS X 编译的注解 #------ # Compiler and linker settings # for Mac OS X # CC=gcc DEF= -DLUASOCKET_DEBUG -DUNIX_HAS_SUN_LEN CFLAGS= $(LUAINC) -I$(COMPAT) $(DEF) -pedantic -Wall -O2 -fno-common LDFLAGS=-bundle -undefined dynamic_lookup LD=export MACOSX_DEPLOYMENT_TARGET="10.3"; gcc 关闭默认的 Linux 编译注解
9. PCRE // 在编译 nginx、LuaSocket 时, 系统可能提示无法找到 pcre 的错误 // 只要安装即可 // 官方网站 http://www.pcre.org $ tar xvzf pcre-8.13.tar.gz $ cd pcre-8.13 $ ./configure $ make $ sudo make install
10. cjson // 支持UTF-8,不支持UTF-16和UTF-32。 #没有任何影响。 // 支持Lua-5.1、Lua-5.2、LuaJIT $ tar -zvxf lua-cjson-2.1.0.tar.gz $ make $ sudo make install // 将生成的cjson.so文件拷贝到/usr/local/lib/lua/5.1下 $ cp cjson.so /usr/local/lib/lua/5.1/ -------- make之前, 修改 Makefile 文件 ----- ##### Build defaults ##### LUA_VERSION = 5.1 TARGET = cjson.so PREFIX = /usr/local #CFLAGS = -g -Wall -pedantic -fno-inline CFLAGS = -O3 -Wall -pedantic -DNDEBUG CJSON_CFLAGS = -fpic #CJSON_LDFLAGS = -shared CJSON_LDFLAGS = -bundle -undefined dynamic_lookup #LUA_INCLUDE_DIR = $(PREFIX)/include LUA_INCLUDE_DIR = $(PREFIX)/include/include/luajit-2.0/ #LUA_CMODULE_DIR = $(PREFIX)/lib/lua/$(LUA_VERSION) LUA_CMODULE_DIR = $(PREFIX)/lib #LUA_MODULE_DIR = $(PREFIX)/share/lua/$(LUA_VERSION) LUA_MODULE_DIR = $(PREFIX)/share/luajit-2.0.4/ LUA_BIN_DIR = $(PREFIX)/bin
LuaSocket http 请求示例 local http=require("socket.http"); local ltn12 = require("ltn12"); module = {} function module.postHttp( targerUrl, tableName, tableContent ) local response_body = {}; local params = "appid=553519&table_name="..tableName.."&table_content="..tableContent ngx.say("params: "..params); res, code, response_headers = http.request { url = targerUrl, method = "POST", headers = { ["Content-Type"] = "application/x-www-form-urlencoded", ["Content-Length"] = string.len(params) }, source = ltn12.source.string(params), sink = ltn12.sink.table(response_body) } return response_body; end function module.getHttp( targerUrl ) local response_body = {}; local res, code = http.request({ url = targerUrl, sink = ltn12.sink.table(response_body) }) return response_body; end return module; --------- 打印 response_body 的方法 --------- local re = table.concat(response_body);
Lua + web 脚本示例, 接收 GET 参数 local request_method = ngx.var.request_method -- 定义头 ngx.header.content_type = "application/json"; -- 接收穿过来的参数 local args = nil if "GET" == request_method then args = ngx.req.get_uri_args(); end local video_id = nil; local num = nil; if args ~= nil and args["user_id"] ~= nil and args["pwd"] ~= nil then video_id = tonumber(args["user_id"]); num = tonumber(args["pwd"]); else ngx.log(ngx.INFO, "提示: ", "params参数有nil值, 参数错误"); end -------- GET 访问方法 --------
Lua + web 脚本示例, 接收 POST 参数 local request_method = ngx.var.request_method ngx.header.content_type = "application/json"; if "POST" == request_method then ngx.req.read_body() args = ngx.req.get_post_args() end if args ~= nil and args["user_id"] ~= nil and args["pwd"] ~= nil then user_id = args["user_id"]; video_id = args["pwd"]; else --ngx.say("参数传入错误"); ngx.log(ngx.INFO, "提示: ", "params参数有nil值, 参数错误"); end -------- POST 访问方法 -------- http://localhost:80/user user_id:123 pwd:999
|
请发表评论