• 01: Nginx安装lua支持


    1.1 Nginx 使用lua脚本

      注:需要LuaJIT-2.0.4.tar.gz,ngx_devel_kit,lua-nginx-module

      1、Nginx安装lua支持

          wget -c http://luajit.org/download/LuaJIT-2.0.4.tar.gz

          tar xzvf LuaJIT-2.0.4.tar.gz

          cd LuaJIT-2.0.4

          make install PREFIX=/usr/local/luajit

          # 注意环境变量!

          export LUAJIT_LIB=/usr/local/luajit/lib

          export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0

      2、下载解压ngx_devel_kit

          wget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz

          tar -xzvf v0.3.0.tar.gz

      3、下载解压lua-nginx-module

          wget https://github.com/openresty/lua-nginx-module/archive/v0.10.8.tar.gz

          tar -xzvf v0.10.8.tar.gz

      4、下载安装nginx-1.10.3.tar.gz

          wget http://nginx.org/download/nginx-1.10.3.tar.gz

          tar -xzvf nginx-1.10.3.tar.gz

          cd nginx-1.10.3

          ./configure --add-module=/opt/soft/ngx_devel_kit-0.3.0 --add-module=/opt/soft/lua-nginx-module-0.10.8

          # 注1:ngx_devel_kit和lua-nginx-module以实际解压路径为准

          make -j2

          make install

          # 注2:报错gcc需要安装,可以执行

          yum install -y gcc g++ gcc-c++

          依赖报错,可以执行

          yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel

      5、启动nginx

          ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

            /usr/local/nginx/sbin/nginx   # 启动nginx

          /usr/local/nginx/sbin/nginx -s stop     # 关闭nginx

          注:创建nginx启动脚本: /etc/init.d/nginx

    #!/bin/bash
    #chkconfig: 2345 89 89
    #Description:This is Nginx web script"
    PID="/usr/local/nginx/logs/nginx.pid"
    start(){
            /usr/local/nginx/sbin/nginx
            if [ $? -eq 0 ];then
                    echo -en "Starting Nginx...			["
                    echo -en "33[32;34mOK33[0m"
                    echo "]"
            else
                    echo "Starting Nginx Error"
            fi
    }
    stop(){
            /usr/local/nginx/sbin/nginx -s stop
            if [ $? -eq 0 ];then
                    echo -en "Stop Nginx...			["
                    echo -en "33[32;34mOK33[0m"
                    echo "]"
            else
                    echo "Stop Nginx Error"
            fi
    }
    status(){
            if [ -f $PID ];then
                    ID=$(cat $PID)
                    echo "Ngix($ID) is running..."
            else
                    echo "Nginx is stop"
            fi
    }
    case $1 in
    start)
            start;;
    stop)
            stop;;
    restart)
            stop
            start
            ;;
    status)
            status;;
    *)
            echo "Usage:$0 {start|stop|restart|status}"
    esac
    /etc/init.d/nginx

      6、验证

          vim /usr/local/nginx/conf/nginx.conf   # 配置nginx.conf

          #test.lua文件内容

          ngx.say("hello world");

    #1、lua指令方式
    #在server 中添加一个localtion
    location /hello {
                default_type 'text/plain';
                content_by_lua 'ngx.say("hello, lua")';
    }
    
    #2、lua文件方式
    #在server 中添加一个localtion
    location /lua {
        default_type 'text/html';
        content_by_lua_file conf/lua/test.lua; #相对于nginx安装目录
    }
    nginx.conf

          [root@redis nginx]# curl http://127.0.0.1/hello
          hello, lua
          [root@redis nginx]# curl http://127.0.0.1/lua
          hello world

    1.2 nginx 配置lua脚本 

      1、lua配置get请求

             location /api/test {
                    # access_log logs/access_api.log  main;
                    set $cmd "python  /home/work/opbin/test.py $arg_username $arg_fullname $arg_email $arg_phone 2>&1";
                    content_by_lua '
                            ngx.header.content_type = "text/plain";
                            local cmd = ngx.var.cmd;
                            local exec = io.popen(cmd);
                            local log = exec:read("*all");
                            exec:close();
                            ngx.print(log);
                    ';
            }
    nginx.conf 配置lua接收get请求
    #1、在浏览器中访问
    http://1.1.1.3/api/test?username=jack4&fullname=JACK4&email=jack4@yiducloud.cn&phone=18765452444
    
    #2、返回结果
    ["/home/work/opbin/test.py", "jack4", "JACK4", "jack4@yiducloud.cn", "18765452444"]
    测试lua接收get请求
    local secondfile = io.popen("ifconfig")
    if nil == secondfile then
        print("open file for ipconfig fail")
    end
    
    print("
    ======commond ipconfig result:")
    
    local content = secondfile:read("*a")
    print(content)
    
    secondfile:close()
    
    # lua test.lua 
    test.lua 执行系统命令

      2、lua配置post请求

    1111111111111111111111

  • 相关阅读:
    常用的长度单位
    HTML常用的列表标签
    html常用文本标签
    CSS选择器及优先级
    块级元素与内联元素
    移动端app打包
    内联框架
    Leetcode303.区域和检索-数组不可变
    Leetcode107.二叉树的层次遍历||
    Leetcode784.字母大小写全排列
  • 原文地址:https://www.cnblogs.com/xiaonq/p/10135505.html
Copyright © 2020-2023  润新知