• centos 7 OpenResty®(lua-nginx-module)搭建可扩展的Web平台


    OpenResty®-英文官网地址:http://openresty.org/en/

    OpenResty®-中文官网地址: http://openresty.org/cn/

    OpenResty®> https://openresty.org/en/linux-packages.html
    centos  yun-command
    sudo yum install yum-utils
    sudo yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo
    sudo yum install openresty-resty //安装resty命令行实用程序
    下载> https://openresty.org/en/download.html
    源代码> https://openresty.org/download/openresty-1.15.8.2.tar.gz
    # [root@localhost openresty-1.15.8.2]# yum install -y gcc gcc-c++ iptables-services perl pcre-devel openssl-devel zlib wget lrzsz ntpdate
    # [root@localhost src]# wget https://openresty.org/download/openresty-1.15.8.2.tar.gz -P /usr/local/src
    # [root@localhost src]# tar -zxvf openresty-1.15.8.2.tar.gz
    # [root@localhost src]# cd openresty-1.15.8.2
    # [root@localhost openresty-1.15.8.2]# ls
    # bundle  configure  COPYRIGHT  patches  README.markdown  README-windows.txt  util
    # [root@localhost openresty-1.15.8.2]# ./configure 
    # Configuration summary
    #   + using system PCRE library
    #   + using system OpenSSL library
    #   + using system zlib library
    # 
    #   nginx path prefix: "/usr/local/openresty/nginx"
    #   nginx binary file: "/usr/local/openresty/nginx/sbin/nginx"
    #   nginx modules path: "/usr/local/openresty/nginx/modules"
    #   nginx configuration prefix: "/usr/local/openresty/nginx/conf"
    #   nginx configuration file: "/usr/local/openresty/nginx/conf/nginx.conf"
    #   nginx pid file: "/usr/local/openresty/nginx/logs/nginx.pid"
    #   nginx error log file: "/usr/local/openresty/nginx/logs/error.log"
    #   nginx http access log file: "/usr/local/openresty/nginx/logs/access.log"
    #   nginx http client request body temporary files: "client_body_temp"
    #   nginx http proxy temporary files: "proxy_temp"
    #   nginx http fastcgi temporary files: "fastcgi_temp"
    #   nginx http uwsgi temporary files: "uwsgi_temp"
    #   nginx http scgi temporary files: "scgi_temp"
    # 
    # cd ../..
    # Type the following commands to build and install:
    #     gmake
    #     gmake install
    # [root@localhost openresty-1.15.8.2]# gmake && gmake install
    # make[2]: Leaving directory `/usr/local/src/openresty-1.15.8.2/build/nginx-1.15.8'
    # make[1]: Leaving directory `/usr/local/src/openresty-1.15.8.2/build/nginx-1.15.8'
    # mkdir -p /usr/local/openresty/site/lualib /usr/local/openresty/site/pod /usr/local/openresty/site/manifest
    # ln -sf /usr/local/openresty/nginx/sbin/nginx /usr/local/openresty/bin/openresty
    # [root@localhost openresty-1.15.8.2]# cd /usr/local/openresty/
    # [root@localhost openresty]# ls
    # bin  COPYRIGHT  luajit  lualib  nginx  pod  resty.index  site
    # [root@localhost openresty]# ll bin |grep openresty
    # lrwxrwxrwx 1 root root    37 Oct  7 14:32 openresty -> /usr/local/openresty/nginx/sbin/nginx
    [root@localhost sbin]# ln -sf `pwd`/nginx /usr/local/sbin/nginx
    # !bin/bash
    # echo '#!/bin/bash
    # chkconfig:35 85 15
    # nginx=/usr/local/openresty/nginx/sbin/nginx
    # case "$1" in
    #     start)
    #         echo "Starting nginx daemon..."
    #         $nginx && echo "Success"
    #     ;;
    #     stop)
    #         echo "Stopping nginx daemon..."
    #         $nginx -s stop && echo "Success"
    #     ;;
    #     reload)
    #         echo "Reloading nginx daemon..."
    #         $nginx -s reload && echo "Success"    
    #     ;;
    #     restart)
    #         echo "Restarting nginx daemon..."
    #         $nginx -s quit
    #         $nginx && echo "Success"
    #     ;;
    #     reopen)
    #         echo "Reopening nginx daemon..."
    #         $nginx -s reopen && echo "Success"
    #     ;;
    #     *)
    #         echo "Please useing nginx {start|stop|retart|reload|reopen}"
    #         exit2
    #     ;;
    # esac' > /etc/init.d/nginx
    # chmod 755 /etc/init.d/nginx
    # chkconfig --add nginx
    # chkconfig --level 123456 nginx on  //0-6运行级别可用
    # [root@localhost sbin]# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
    # [root@localhost sbin]# service iptables save
    # iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
    # [root@localhost sbin]# systemctl restart iptables
    # [root@localhost sbin]# iptables -L -n
    # Chain INPUT (policy ACCEPT)
    # target     prot opt source               destination         
    # ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:80
    # 
    # Chain FORWARD (policy ACCEPT)
    # target     prot opt source               destination         
    # 
    # Chain OUTPUT (policy ACCEPT)
    # target     prot opt source               destination  
    # [root@localhost sbin]# nginx 
    # [root@localhost sbin]# nginx -s reload
    
    # 关于OpenResty目录结构的具体说明如下
    # ●bin:存放二进制可执行文件.
    # ●luajit:存放LuaJIT(Lua代码解释器)相关的文件.
    # ●lualib:存放Lua库文件.
    # ●nginx:OpenResty整合的Nginx存放在这个目录.
    # ●pod:存放用于bin/restydoc程序读取的pod文档.
    # ●resty.in ndex:存放pod文档的索引.
    # ●site:OPM(OpenResty Package Manager)包的存放目录.
    
    # OpenResty主要应用在一些对性能要求非常高的场合,例如WAF(Web Application Firewall,Web应用防火墙)、
    # CDN(Content Delivery Network,内容分发网络)调度、广告系统、消息推送系统、RESTful API(一种服务器接口技术)等.
    # 一些知名的互联网公司如 CloudFlare 、奇虎360、新浪、京东等都在使用OpenResty相关的技术.
    # OpenResty平台离不开 Nginx 和 Lua 语言,读者可通过GitHub开源平台中的openresty-best practices.
    
    # [root@localhost bin]# ./resty -e 'print("hello,my name is kings-dev.")'
    # hello,my name is kings-dev.
    # [root@localhost bin]# ./restydoc -s proxy_pass
    # ngx_http_proxy_module(7)             nginx            ngx_http_proxy_module(7)
    # 
    # 
    # 
    #    proxy_pass
    #        syntax: proxy_pass "URL"
    # 
    #        context: location
    # 
    #        context: if in location
    # 
    #        context: limit_except
    # 
    #        Sets the protocol and address of a proxied server and an optional URI
    #        to which a location should be mapped.  As a protocol, “"http"” or
    #        “"https"” can be specified.  The address can be specified as a domain
    #        name or IP address, and an optional port:
    # 
    #            proxy_pass http://localhost:8000/uri/;
    # 
    #        or as a UNIX-domain socket path specified after the word “"unix"” and
    #        enclosed in colons:
    # 
    #            proxy_pass http://unix:/tmp/backend.socket:/uri/;
    # 
    #        If a domain name resolves to several addresses, all of them will be
    #        used in a round-robin fashion.  In addition, an address can be
    #        specified as a server group.
    # 
    #        Parameter value can contain variables.  In this case, if an address is
    #        specified as a domain name, the name is searched among the described
    #        server groups, and, if not found, is determined using a
    #        ngx_http_core_module.
    # 
    #        A request URI is passed to the server as follows:
    # 
    #        ·   If the "proxy_pass" directive is specified with a URI, then when a
    #            request is passed to the server, the part of a normalized request
    #            URI matching the location is replaced by a URI specified in the
    #            directive:
    # 
    #                location /name/ {
    #                    proxy_pass http://127.0.0.1/remote/;
    #                }
    # 
    #        ·   If "proxy_pass" is specified without a URI, the request URI is
    #            passed to the server in the same form as sent by a client when the
    #            original request is processed, or the full normalized request URI
    #            is passed when processing the changed URI:
    # 
    #                location /some/path/ {
    #                    proxy_pass http://127.0.0.1;
    #                }
    # 
    #            NOTE
    # ngx_http_proxy_module(7)             nginx            ngx_http_proxy_module(7)
    # 
    # 
    # 
    #    proxy_pass
    #        syntax: proxy_pass "URL"
    # 
    #        context: location
    # 
    #        context: if in location
    # 
    #        context: limit_except
    # 
    #        Sets the protocol and address of a proxied server and an optional URI
    #        to which a location should be mapped.  As a protocol, “"http"” or
    #        “"https"” can be specified.  The address can be specified as a domain
    #        name or IP address, and an optional port:
    # 
    #            proxy_pass http://localhost:8000/uri/;
    # 
    #        or as a UNIX-domain socket path specified after the word “"unix"” and
    #        enclosed in colons:
    # 
    #            proxy_pass http://unix:/tmp/backend.socket:/uri/;
    # 
    #        If a domain name resolves to several addresses, all of them will be
    #        used in a round-robin fashion.  In addition, an address can be
    #        specified as a server group.
    # 
    #        Parameter value can contain variables.  In this case, if an address is
    #        specified as a domain name, the name is searched among the described
    #        server groups, and, if not found, is determined using a
    #        ngx_http_core_module.
    # 
    #        A request URI is passed to the server as follows:
    # 
    #        ·   If the "proxy_pass" directive is specified with a URI, then when a
    #            request is passed to the server, the part of a normalized request
    #            URI matching the location is replaced by a URI specified in the
    #            directive:
    # 
    #                location /name/ {
    #                    proxy_pass http://127.0.0.1/remote/;
    #                }
    # 
    #        ·   If "proxy_pass" is specified without a URI, the request URI is
    #            passed to the server in the same form as sent by a client when the
    #            original request is processed, or the full normalized request URI
    #            is passed when processing the changed URI:
    # 
    #                location /some/path/ {
    #                    proxy_pass http://127.0.0.1;
    #                }
    # 
    #            NOTE
    # 
    #            Before version 1.1.12, if "proxy_pass" is specified without a URI,
    #            the original request URI might be passed instead of the changed URI
    #            in some cases.
    # 
    #        In some cases, the part of a request URI to be replaced cannot be
    #        determined:
    # 
    #        ·   When location is specified using a regular expression, and also
    #            inside named locations.
    # 
    #            In these cases, "proxy_pass" should be specified without a URI.
    # 
    #        ·   When the URI is changed inside a proxied location using the
    #            ngx_http_rewrite_module directive, and this same configuration will
    #            be used to process a request ("break"):
    # 
    #                location /name/ {
    #                    rewrite    /name/([^/]+) /users?name=$1 break;
    #                    proxy_pass http://127.0.0.1;
    #                }
    # 
    #            In this case, the URI specified in the directive is ignored and the
    #            full changed request URI is passed to the server.
    # 
    #        ·   When variables are used in "proxy_pass":
    # 
    #                location /name/ {
    #                    proxy_pass http://127.0.0.1$request_uri;
    #                }
    # 
    #            In this case, if URI is specified in the directive, it is passed to
    #            the server as is, replacing the original request URI.
    # 
    #        WebSocket proxying requires special configuration and is supported
    #        since version 1.3.13.
    # 
    # 
    # 
    # OpenResty                         2019-10-07          ngx_http_proxy_module(7)
    
    # [root@localhost bin]# cd 
    # [root@localhost ~]# mkdir openresty_work
    # [root@localhost ~]# cd openresty_work/
    # [root@localhost openresty_work]# mkdir logs conf
    # [root@localhost openresty_work]# ls -lF
    # total 0
    # drwxr-xr-x 2 root root 6 Oct  7 15:04 conf/
    # drwxr-xr-x 2 root root 6 Oct  7 15:04 logs/
    
    # [root@localhost openresty_work]# vi openresty_nginx_conf.sh
    
    #!/bin/bash
    echo "worker_processes 1;
    error_log logs/error.log;
    events {
            worker_connections 1024;
            }
        http {
            server {
                listen 8080; 
                location /{
                    default_type text/html;
                    content_by_lua_block {
                        ngx.say('<p>Hello World</p>')
                                        }
                            }
                    }
            }" > /root/openresty_work/conf/nginx.conf
    
    # [root@localhost openresty_work]# sh openresty_nginx_conf.sh   
    # [root@localhost openresty_work]# ls -lF conf/nginx.conf 
    # -rw-r--r-- 1 root root 399 Oct  7 15:14 conf/nginx.conf
    # [root@localhost openresty_work]# nginx -s stop
    # [root@localhost openresty_work]# nginx -p 
    # [root@localhost openresty_work]# nginx -p .
    # [root@localhost openresty_work]# curl localhost:8080  
    # <p>Hello World</p>
    # 在上述配置中, content_by_lua_file 指令用于引入外部文件, lua_code_cache 用于开启或关闭 lua 文件缓存.
    # 在默认情况下会对lua文件进行缓存以提高效率,而在开发环境可以临时关闭缓存以方便测试.
    # [root@localhost openresty_work]# vi test_lua_nginx.sh
    # [root@localhost openresty_work]# sh test_lua_nginx.sh
    
    #!/bin/bash
    echo 'worker_processes 1;
    error_log logs/error.log;
    events {
            worker_connections 1024;
            }
        http {
            server {
                listen 8080;
                    location /test.lua{
                    lua_code_cache off;
                    content_by_lua_file test.lua;
                                        }
                    }
                }' > /root/openresty_work/conf/nginx.conf
    
    # [root@localhost openresty_work]# echo "ngx.say('<h1>hi,my name is kings-dev.</h1>')" > test.lua
    # [root@localhost openresty_work]# cat test.lua 
    # ngx.say('<h1>hi,my name is kings-dev.</h1>')
    # [root@localhost openresty_work]# nginx -p . -s reload
    # nginx: [alert] lua_code_cache is off; this will hurt performance in ./conf/nginx.conf:10
    # [root@localhost openresty_work]# curl localhost:8080/test.lua
    # <h1>hi,my name is kings-dev.</h1>

  • 相关阅读:
    C指针典例
    20150310 块设备驱动程序
    python连接redis
    利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
    将一个正整数分解质因数。例如输入90,打印出90=2*3*3*5
    python 中输入一个字符串,判断这个字符串中有多少个字符、数字、空格、特殊字符
    学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用利用条件运算符的嵌套来完成此题:C表示。
    nginx在基于域名访问的时候是下载的界面
    mysql数据库二进制初始化出现:170425 17:47:04 [ERROR] /application/mysql//bin/mysqld: unknown option '--skip-locking' 170425 17:47:04 [ERROR] Aborting 解决办法
    赛马问题
  • 原文地址:https://www.cnblogs.com/huixst/p/11621809.html
Copyright © 2020-2023  润新知