openresty 安装(docker),



openresty 安装(docker)

        

官网:https://github.com/openresty/docker-openresty

opm 命令:https://github.com/openresty/opm#readme

          

             

                                    

openresty 安装

         

下载镜像

docker pull openresty/openresty

            

配置文件位置

huli@hudeMacBook-Pro conf % docker exec -it openresty bash
# 工作目录
root@7bd203df440c:/# cd /usr/local/openresty
root@7bd203df440c:/usr/local/openresty# ls 
bin  luajit  lualib  nginx  openssl111	pcre  site  zlib
 
# nginx目录
root@7bd203df440c:/usr/local/openresty# cd nginx
root@7bd203df440c:/usr/local/openresty/nginx# ls
conf  html  logs  sbin
 
# nginx配置目录
root@7bd203df440c:/usr/local/openresty/nginx# ls conf
fastcgi.conf		koi-win		    scgi_params
fastcgi.conf.default	mime.types	    scgi_params.default
fastcgi_params		mime.types.default  uwsgi_params
fastcgi_params.default	nginx.conf	    uwsgi_params.default
koi-utf			nginx.conf.default  win-utf

            

default.conf

root@7bd203df440c:/usr/local/openresty/nginx/conf# ls /etc/nginx/conf.d        
default.conf
root@7bd203df440c:/usr/local/openresty/nginx/conf# cat /etc/nginx/conf.d/default.conf
# nginx.vh.default.conf  --  docker-openresty
#
# This file is installed to:
#   `/etc/nginx/conf.d/default.conf`
#
# It tracks the `server` section of the upstream OpenResty's `nginx.conf`.
#
# This config (and any other configs in `etc/nginx/conf.d/`) is loaded by
# default by the `include` directive in `/usr/local/openresty/nginx/conf/nginx.conf`.
#
# See https://github.com/openresty/docker-openresty/blob/master/README.md#nginx-config-files
#
 
 
server {
    listen       80;
    server_name  localhost;
 
    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;
 
    location / {
        root   /usr/local/openresty/nginx/html;
        index  index.html index.htm;
    }
 
    location /lua {
        default_type "applictaion/json";
        content_by_lua "ngx.say('hello gtlx')";
    }
 
    #error_page  404              /404.html;
 
    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/local/openresty/nginx/html;
    }
 
    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}
 
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           /usr/local/openresty/nginx/html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}
 
    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

           

创建容器

docker run -it -d -p 8080:80 \
-v /Users/huli/lua/openresty/conf/default.conf:/etc/nginx/conf.d/default.conf \
--name openresty openresty/openresty

         

               

                                    

opm 命令

        

Starting at version 1.11.2.2, OpenResty for Linux includes a package 
manager called opm, which can be found at /usr/local/openresty/bin/opm.
* 从1.11.2.2版本开始,linux openresty默认安装opm工具管理包
* 存放目录为:/usr/local/openresty/bin/opm

opm is built in all the images except alpine and buster and bullseye.
* buster、bullseye版本的镜像没有安装opm

To use opm in the alpine image, you must also install the curl and perl 
packages; they are not included by default because they double the image 
size. You may install them like so: apk add --no-cache curl perl.
* 在alpine镜像中使用opm,需要安装curl、perl命令
* 安装方式:apk add --no-cache curl perl

To use opm within the bullseye image, you can either use the bullseye-fat 
image or install the openresty-opm package in a custom build (which you 
would need to do to install your own opm packages anyway), as shown in 
this buster example.
* 在bullseye镜像中使用opm,可以使用bullseye-fat镜像
* 或者在自定义的版本中安装opm

说明:openresty/openresty没有提供opm,需要自行编译

       

编译镜像文件

# 克隆仓库到本地
https://github.com/openresty/docker-openresty.git

# 使用centos7 Dockerfile
复制nignx.conf、nginx.vh.default.conf到centos7目录

# 构建镜像文件
docker build -t lihu12344/openresty .

           

使用自定义的镜像创建容器

docker run -it -d --name openresty2 lihu12344/openresty

          

进入容器,查看opm命令

huli@hudeMacBook-Pro centos7 % docker exec -it openresty2 bash
# 命令存放位置
[root@6ff3ad5827e2 /]# cd /usr/local/openresty/bin
[root@6ff3ad5827e2 bin]# ls
md2pod.pl  nginx-xml2pod  openresty  opm  resty  restydoc  restydoc-index

# opm命令
[root@6ff3ad5827e2 bin]# opm -h
opm [options] command package...

Options:
    -h
    --help              Print this help.

    --install-dir=PATH  Install into the specified PATH directory instead of the system-wide
                        OpenResty installation tree containing this tool.

    --cwd               Install into the current working directory under ./resty_modules/
                        instead of the system-wide OpenResty installation tree containing
                        this tool.

Commands:
    build               Build from the current working directory a package tarball ready
                        for uploading to the server.

    clean ARGUMENT...   Do clean-up work. Currently the valid argument is "dist", which
                        cleans up the temporary files and directories created by the "build"
                        command.

    info PACKAGE...     Output the detailed information (or meta data) about the specified
                        packages.  Short package names like "lua-resty-lock" are acceptable.

    get PACKAGE...      Fetch and install the specified packages. Fully qualified package
                        names like "openresty/lua-resty-lock" are required. One can also
                        specify a version constraint like "=0.05" and ">=0.01".

    list                List all the installed packages. Both the package names and versions
                        are displayed.

    remove PACKAGE...   Remove (or uninstall) the specified packages. Short package names
                        like "lua-resty-lock" are acceptable.

    search QUERY...     Search on the server for packages matching the user queries in their
                        names or abstracts. Multiple queries can be specified and they must
                        fulfilled at the same time.

    server-build        Build a final package tarball ready for distribution on the server.
                        This command is usually used by the server to verify the uploaded
                        package tarball.

    update              Update all the installed packages to their latest version from
                        the server.

    upgrade PACKAGE...  Upgrade the packages specified by names to the latest version from
                        the server. Short package names like "lua-resty-lock" are acceptable.

    upload              Upload the package tarball to the server. This command always invokes
                        the build command automatically right before uploading.

For bug reporting instructions, please see:

    <https://openresty.org/en/community.html>

Copyright (C) Yichun Zhang (agentzh). All rights reserved.

           

                 

                                    

三方模块安装

         

lua-resty-jit-uuid 官网:https://github.com/thibaultcha/lua-resty-jit-uuid

          

lua-resty-jit-uuid(生成uuid字符串) 模块安装

huli@hudeMacBook-Pro ~ % docker exec -it openresty2 bash
[root@6ff3ad5827e2 /]# cd /usr/local/openresty/bin
[root@6ff3ad5827e2 bin]# ls
md2pod.pl  nginx-xml2pod  openresty  opm  resty  restydoc  restydoc-index

# 搜索模块
[root@6ff3ad5827e2 bin]# opm search lua-resty-jit-uuid
thibaultcha/lua-resty-jit-uuid                    Fast and dependency-free uuid generation for OpenResty/LuaJIT

# 安装模块:
[root@6ff3ad5827e2 bin]# opm install thibaultcha/lua-resty-jit-uuid
* Fetching thibaultcha/lua-resty-jit-uuid  
  Downloading https://opm.openresty.org/api/pkg/tarball/thibaultcha/lua-resty-jit-uuid-0.0.7.opm.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  6398  100  6398    0     0  17058      0 --:--:-- --:--:-- --:--:-- 17106
Package thibaultcha/lua-resty-jit-uuid 0.0.7 installed successfully under /usr/local/openresty/site/ .

# 查看安装的模块
[root@6ff3ad5827e2 bin]# opm list
thibaultcha/lua-resty-jit-uuid                               0.0.7

# 全局模块安装目录
[root@6ff3ad5827e2 site]# cd /usr/local/openresty/site/lualib/resty
[root@6ff3ad5827e2 resty]# ls
jit-uuid.lua

        

************

使用测试

        

nginx.conf

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    init_worker_by_lua_block {    //初始化
        local uuid = require 'resty.jit-uuid';
        uuid.seed();
    }

    server {
        location /lua {          //ngx输出
            default_type "applictaion/json";
            content_by_lua "ngx.say('hello gtlx')";
        }

        location /uuid {         //输出uuid字符串
            content_by_lua_block {
                local uuid = require 'resty.jit-uuid';
                ngx.say(uuid()); 
            }
        }
    }

    client_body_temp_path /var/run/openresty/nginx-client-body;
    proxy_temp_path       /var/run/openresty/nginx-proxy;
    fastcgi_temp_path     /var/run/openresty/nginx-fastcgi;
    uwsgi_temp_path       /var/run/openresty/nginx-uwsgi;
    scgi_temp_path        /var/run/openresty/nginx-scgi;

    sendfile        on;
    keepalive_timeout  65;

}

             

创建容器

docker run -it -d -p 8081:80 \
-v /Users/huli/lua/openresty/conf/nginx.conf:/usr/local/openresty/nginx /conf/nginx.conf \
--name openresty2 lihu12344/openresty

      

安装lua-resty-jit-uuid

huli@hudeMacBook-Pro ~ % docker exec -it openresty2 bash
[root@201c0651d209 bin]# cd /usr/local/openresty/bin
[root@201c0651d209 bin]# ls
md2pod.pl  nginx-xml2pod  openresty  opm  resty  restydoc  restydoc-index

# 查找模块
[root@201c0651d209 bin]# opm search lua-resty-jit-uuid
thibaultcha/lua-resty-jit-uuid                    Fast and dependency-free uuid generation for OpenResty/LuaJIT

# 安装模块
[root@201c0651d209 bin]# opm install thibaultcha/lua-resty-jit-uuid
Package lua-resty-jit-uuid-0.0.7 already installed.

         

客户端执行命令

# ngx_lua
huli@hudeMacBook-Pro openresty % curl localhost:8081/lua 
hello gtlx

# lua-resty-jit-uuid
huli@hudeMacBook-Pro openresty % curl localhost:8081/uuid
8bc6e561-6b9c-4fdf-9569-2814d2180b1f

         

                 

相关内容