zoukankan      html  css  js  c++  java
  • tengine lua 模块docker 镜像集成

    昨天有构建过一个tengine dubbo 模块,以下是关于lua 模块构建的的说明

    Dockerfile

    FROM alpine:3.8
    ENV TENGINE_VERSION 2.3.2
    # nginx: https://git.io/vSIyj
    RUN rm -rf /var/cache/apk/* && 
        rm -rf /tmp/*
    ENV CONFIG "
            --prefix=/etc/nginx 
            --sbin-path=/usr/sbin/nginx 
            --modules-path=/usr/lib/nginx/modules 
            --conf-path=/etc/nginx/nginx.conf 
            --error-log-path=/var/log/nginx/error.log 
            --http-log-path=/var/log/nginx/access.log 
            --pid-path=/var/run/nginx.pid 
            --lock-path=/var/run/nginx.lock 
            --http-client-body-temp-path=/var/cache/nginx/client_temp 
            --http-proxy-temp-path=/var/cache/nginx/proxy_temp 
            --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp 
            --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp 
            --http-scgi-temp-path=/var/cache/nginx/scgi_temp 
            --user=nginx 
            --group=nginx 
            --with-http_ssl_module 
            --with-http_realip_module 
            --with-http_addition_module 
            --with-http_sub_module 
            --with-http_dav_module 
            --with-http_flv_module 
            --with-http_mp4_module 
            --with-http_gunzip_module 
            --with-http_gzip_static_module 
            --with-http_random_index_module 
            --with-http_secure_link_module 
            --with-http_stub_status_module 
            --with-http_auth_request_module 
            --with-http_xslt_module=dynamic 
            --with-http_image_filter_module=dynamic 
            --with-http_geoip_module=dynamic 
            --with-threads 
            --with-stream 
            --with-stream_ssl_module 
            --with-stream_ssl_preread_module 
            --with-stream_realip_module 
            --with-stream_geoip_module=dynamic 
            --with-http_slice_module 
            --with-mail 
            --with-mail_ssl_module 
            --with-compat 
            --with-file-aio 
            --with-http_v2_module 
            --add-module=modules/ngx_http_lua_module 
            --add-module=modules/ngx_http_upstream_check_module 
            --add-module=modules/headers-more-nginx-module-0.33 
            --add-module=modules/ngx_http_proxy_connect_module 
            --add-module=modules/ngx_http_user_agent_module 
            --add-module=modules/ngx_multi_upstream_module 
            --add-module=modules/ngx_http_upstream_session_sticky_module 
            --add-module=modules/ngx_http_upstream_vnswrr_module 
            --add-module=modules/ngx_http_slice_module 
            --add-module=modules/ngx_http_reqstat_module 
            --add-module=modules/ngx_http_footer_filter_module 
            --add-module=modules/ngx_http_trim_filter_module 
            --add-module=modules/mod_config 
            --add-module=modules/mod_dubbo 
            "
    RUN     addgroup -S nginx 
            && adduser -D -S -h /var/cache/nginx -s /sbin/nologin -G nginx nginx 
            && addgroup -g 82 -S www-data && adduser -u 82 -D -S -G www-data www-data 
            && apk update && apk add --no-cache --virtual .build-deps 
                    gcc 
                    g++ 
                    libc-dev 
                    make 
                    openssl-dev 
                    pcre-dev 
                    zlib-dev 
                    linux-headers 
                    curl 
                    libxslt-dev 
                    gd-dev 
                    geoip-dev 
            && curl -L "https://github.com/alibaba/tengine/archive/$TENGINE_VERSION.tar.gz" -o tengine.tar.gz 
            && mkdir -p /usr/src 
            && tar -zxC /usr/src -f tengine.tar.gz 
            && rm tengine.tar.gz 
            && cd /usr/src/tengine-$TENGINE_VERSION 
            && curl -L "https://github.com/openresty/headers-more-nginx-module/archive/v0.33.tar.gz" -o more.tar.gz 
            && curl -L "https://github.com/openresty/luajit2/archive/v2.1-20200102.tar.gz" -o v2.1-20200102.tar.gz 
            && tar -zxC /usr/src/tengine-$TENGINE_VERSION/modules -f more.tar.gz 
            && tar -zxC /usr/src/tengine-$TENGINE_VERSION -f v2.1-20200102.tar.gz 
        && rm  more.tar.gz v2.1-20200102.tar.gz
        && ls -l /usr/src/tengine-$TENGINE_VERSION/modules 
            && cd luajit2-2.1-20200102 && make && make install 
            && export LUAJIT_LIB=/usr/local/lib  export LUAJIT_INC=/usr/local/include/luajit-2.1 
        && cd .. && ./configure $CONFIG --with-debug 
            && make -j$(getconf _NPROCESSORS_ONLN) 
            && mv objs/nginx objs/nginx-debug 
            && mv objs/ngx_http_xslt_filter_module.so objs/ngx_http_xslt_filter_module-debug.so 
            && mv objs/ngx_http_image_filter_module.so objs/ngx_http_image_filter_module-debug.so 
            && mv objs/ngx_http_geoip_module.so objs/ngx_http_geoip_module-debug.so 
            && mv objs/ngx_stream_geoip_module.so objs/ngx_stream_geoip_module-debug.so 
            && ./configure $CONFIG 
            && make -j$(getconf _NPROCESSORS_ONLN) 
            && make install 
            && rm -rf /etc/nginx/html/ 
            && mkdir /etc/nginx/conf.d/ 
            && mkdir -p /usr/share/nginx/html/ 
            && install -m644 html/index.html /usr/share/nginx/html/ 
            && install -m644 html/50x.html /usr/share/nginx/html/ 
            && install -m755 objs/nginx-debug /usr/sbin/nginx-debug 
            && install -m755 objs/ngx_http_xslt_filter_module-debug.so /usr/lib/nginx/modules/ngx_http_xslt_filter_module-debug.so 
            && install -m755 objs/ngx_http_image_filter_module-debug.so /usr/lib/nginx/modules/ngx_http_image_filter_module-debug.so 
            && install -m755 objs/ngx_http_geoip_module-debug.so /usr/lib/nginx/modules/ngx_http_geoip_module-debug.so 
            && install -m755 objs/ngx_stream_geoip_module-debug.so /usr/lib/nginx/modules/ngx_stream_geoip_module-debug.so 
            && ln -s ../../usr/lib/nginx/modules /etc/nginx/modules 
            && strip /usr/sbin/nginx* 
            && strip /usr/lib/nginx/modules/*.so 
            && rm -rf /usr/src/tengine-$NGINX_VERSION 
            
            # Bring in gettext so we can get `envsubst`, then throw
            # the rest away. To do this, we need to install `gettext`
            # then move `envsubst` out of the way so `gettext` can
            # be deleted completely, then move `envsubst` back.
            && apk add --no-cache --virtual .gettext gettext 
            && mv /usr/bin/envsubst /tmp/ 
            
            && runDeps="$( 
                    scanelf --needed --nobanner --format '%n#p' /usr/sbin/nginx /usr/lib/nginx/modules/*.so /tmp/envsubst 
                            | tr ',' '
    ' 
                            | sort -u 
                            | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' 
            )" 
            && apk add --no-cache --virtual .nginx-rundeps $runDeps 
            && apk del .build-deps 
            && apk del .gettext 
            && mv /tmp/envsubst /usr/local/bin/ 
            
            # Bring in tzdata so users could set the timezones through the environment
            # variables
            && apk add --no-cache tzdata 
            
            # forward request and error logs to docker log collector
            && ln -sf /dev/stdout /var/log/nginx/access.log 
            && ln -sf /dev/stderr /var/log/nginx/error.log
    EXPOSE 80 443
    STOPSIGNAL SIGTERM
    CMD ["nginx", "-g", "daemon off;"]

    说明

    tengine lua 模块与openresty 的还是有点差异的,构建tengine lua 模块主要的核心是luajit,推荐使用openresty 提供的luajit
    具体操作就是下载对应版本的包,然后配置环境变量,注意ngx lua 模块应该使用tengine自带的,而不是openresty 独立repo的(理论上
    没问题,而且我也测试过没问题,主要是新特性兼容以及openresty 的一些patch 对于tengine可能会有问题)

     
     export LUAJIT_LIB=/usr/local/lib
     export LUAJIT_INC=/usr/local/include/luajit-2.1

    相关docker 镜像我已经push 到了dockerhub dalongrong/tengine:2.3.2-dubbo-lua 大家可以试用

    参考资料

    https://github.com/alibaba/tengine/tree/master/modules/ngx_http_lua_module 
    https://github.com/openresty/lua-nginx-module#installation 
    https://github.com/openresty/luajit2 
    https://github.com/rongfengliang/tengine-dockerfile

  • 相关阅读:
    Linux之文件处理命令
    Linux基础命令
    rip实验
    Linux基础之磁盘分区
    mysql安装
    centos Apache、php、mysql默认安装路径
    You probably tried to upload too large file. Please refer to documentation for ways to workaround this limit.
    Wrong permissions on configuration file, should not be world writable!
    机器会学习么 学习总结
    实验 5 Spark SQL 编程初级实践
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/13451631.html
Copyright © 2011-2022 走看看