zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    HDU 5528 Count a * b 欧拉函数
    HDU 5534 Partial Tree 完全背包
    HDU 5536 Chip Factory Trie
    HDU 5510 Bazinga KMP
    HDU 4821 String 字符串哈希
    HDU 4814 Golden Radio Base 模拟
    LA 6538 Dinner Coming Soon DP
    HDU 4781 Assignment For Princess 构造
    LA 7056 Colorful Toy Polya定理
    LA 6540 Fibonacci Tree
  • 原文地址:https://www.cnblogs.com/xiaonq/p/10135505.html
Copyright © 2011-2022 走看看