Mac + nginx + lua + luasocket + cjson

1. Lua

// 官方网站 http://www.lua.org/ 下载源码包// 由于配合 nginx 使用, 所以使用 5.1.X 版本
$ tar xvzf lua-5.1.5.tar.gz
$ cd lua-5.1.5
$ make
$ sudo make install // 一定要 sudo 

------- 下面是安装输出信息 ------

cd src && mkdir -p /usr/local/bin /usr/local/include /usr/local/lib \
/usr/local/man/man1 /usr/local/share/lua/5.1 /usr/local/lib/lua/5.1
cd src && install -p -m 0755 lua luac /usr/local/bin
cd src && install -p -m 0644 lua.h luaconf.h lualib.h lauxlib.h \
../etc/lua.hpp /usr/local/include
cd src && install -p -m 0644 liblua.a /usr/local/lib
cd doc && install -p -m 0644 lua.1 luac.1 /usr/local/man/man1

// 以上就完成了Lua的安装, 一般情况下安装过程不会报错// 如果报错需要根据报错信息检查是否缺少环境依赖

------- 测试一下 ----$ lualua > print("hello, lua")

// 退出 control + d

2. luaJIT

// LuaJIT是一个利用JIT编译技术把Lua脚本直接编译成机器码由CPU运行
// 官方网站 http://luajit.org/download// 版本 2.0 为稳定版

$ tar xzvf LuaJIT-2.0.2.tar.gz
$ cd LuaJIT-2.0.2
$ make
$ sudo make install

-------- 特别注意 ---------
// 声明环境变量, 目的是编译Nginx源码时, 告诉Nginx去哪里找luajit
$ export LUAJIT_LIB=/usr/local/luajit/lib
$ export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0

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/

$ tar xvf nginx-1.9.15.tar.gz
$ cd nginx-1.9.15
$ ./configure --add-module=/绝对路径/ngx_devel_kit-master/ --add-module=/绝对路径/lua-nginx-module-master/
$ make
$ make install

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脚本 的方式
               default_type ‘text/plain‘;
               content_by_lua_file /Users/admin/Developer/workspace/lua/post_user_action.lua;
          }

}

// 访问 /lua-version $ curl "http://localhost:80/lua-version"-------- 返回结果 -----LuaJIT 2.0.4

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/socket/?.so\;?.so

9. PCRE

// 在安装 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
时间: 2024-10-09 10:02:29

Mac + nginx + lua + luasocket + cjson的相关文章

nginx+lua+redis(openresty)配置

nginx+lua+redis(openresty)配置 2014-07-18 11:10 2494人阅读 评论(1) 收藏 举报 方案一: 1.安装lua解释器 wget http://luajit.org/download/LuaJIT-2.0.2.tar.gz (http://luajit.org/download.html) 配置lua Lib和include/luajit-$version目录为环境变量 2.下载ngx_devel_kit和lua-nginx-module https:

使用Nginx+Lua(OpenResty)开发高性能Web应用

在互联网公司,Nginx可以说是标配组件,但是主要场景还是负载均衡.反向代理.代理缓存.限流等场景:而把Nginx作为一个Web容器使用的还不是那么广泛.Nginx的高性能是大家公认的,而Nginx开发主要是以C/C++模块的形式进行,整体学习和开发成本偏高:如果有一种简单的语言来实现Web应用的开发,那么Nginx绝对是把好的瑞士军刀:目前Nginx团队也开始意识到这个问题,开发了nginxScript:可以在Nginx中使用JavaScript进行动态配置一些变量和动态脚本执行:而目前市面上

Nginx+Lua(OpenResty)开发高性能Web应用

使用Nginx+Lua(OpenResty)开发高性能Web应用 博客分类: 跟我学Nginx+Lua开发 架构 ngx_luaopenresty 在互联网公司,Nginx可以说是标配组件,但是主要场景还是负载均衡.反向代理.代理缓存.限流等场景:而把Nginx作为一个Web容器使用的还不是那么广泛.Nginx的高性能是大家公认的,而Nginx开发主要是以C/C++模块的形式进行,整体学习和开发成本偏高:如果有一种简单的语言来实现Web应用的开发,那么Nginx绝对是把好的瑞士军刀:目前Ngin

使用nginx lua实现网站统计中的数据收集

使用nginx lua实现网站统计中的数据收集 导读 网站数据统计分析工具是各网站站长和运营人员经常使用的一种工具,常用的有 谷歌分析.百度统计和腾讯分析等等.所有这些统计分析工具的第一步都是网站访问数据的收集.目前主流的数据收集方式基本都是基于javascript的.在此简要分析数据收集的原理,并按照步骤,带领大家一同搭建一个实际的数据收集系统. 数据收集原理分析 简单来说,网站统计分析工具需要收集到用户浏览目标网站的行为(如打开某网页.点击某按钮.将商品加入购物车等)及行为附加数据(如某下单

Nginx + LUA下流量拦截算法

前言 每逢大促必压测,每逢大促必限流,这估计是电商人的常态.每次大促期间,业务流量是平时的几倍十几倍,大促期间大部分业务都会集中在购物车结算,必须限流,才能保证系统不宕机. 限流算法 限流算法一般有三种:令牌桶,漏桶,计数器.本文介绍最粗暴的计数器算法,其他算法请自行google.百度,讲的应该比我好.(能解决问题的算法都是好算法) lua 限流 业务结构 在大促期间由于流量过高,现有服务器无法承受那么大的流量,租用云服务是很好的选择. 业务架构图可以看出 ,我们的服务器有自有服务器,首都在线云

Nginx Lua的执行阶段

对刚接触Ngx_lua的读者来说,可能会存在下面两个困惑. 1.Lua在Nginx的哪些阶段可以执行代码?Lua在Nginx的每个阶段可以执行哪些操作? 2.只有理解了这两个问题,才能在业务中巧妙地利用Ngx_Lua来完成各项需求. Nginx的11个执行阶段,每个阶段都有自己能够执行的指令,并可以实现不同的功能.Ngx_Lua的功能大部分是基于Nginx这11个执行阶段开发和配置的,Lua代码在这些指令块中执行,并依赖于它们的执行顺序.本章将对Ngx_Lua的执行阶段进行一一讲解. 一. in

Nginx+Lua 积累

Nginx+Lua 积累 1.解析16进制编码的中文参数 复制代码 local encodeStr = "%E6%B0%94" local decodeStr = ""; for i = 2, #encodeStr - 1, 3 do local num = encodeStr:sub(i, i + 1); num = tonumber(num, 16); decodeStr = decodeStr .. string.char(num); end ngx.say(

使用Nginx+Lua代理Hadoop HA

一.Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个Master组件提供服务,其中正在使用的组件称为Active,另一个作为备份称为Standby,例如HDFS的NameNode.YARN 的ResourceManager.HDFS的web页面只有通过Active的NameNode才能正常访问,同样地,YARN的web页面也只有通过Active的ResouceManager才能正常访问. (1) HDFS HA的Web访问 正常使用Nginx的proxy_pass代理单

nginx lua redis 访问频率限制(转)

1. 需求分析 Nginx来处理访问控制的方法有多种,实现的效果也有多种,访问IP段,访问内容限制,访问频率限制等. 用Nginx+Lua+Redis来做访问限制主要是考虑到高并发环境下快速访问控制的需求. Nginx处理请求的过程一共划分为11个阶段,分别是: post-read.server-rewrite.find-config.rewrite.post-rewrite. preaccess.access.post-access.try-files.content.log. 在openre