Browse Source

update by krrish

krrish 6 years ago
parent
commit
1dd582ed8a

+ 0 - 161
ng-docker-example/stackname/docker/conf/evlss.conf

@@ -1,161 +0,0 @@
-# metadata => location:${APP_HOME}/${APP_NAME}_server/conf/evlss.conf
-# RTMP监听端口
-listen {{ .Env.RTMP_PORT }};
-
-# 最大连接数
-max_connections 10000;
-
-# PID文件路径,不建议修改
-pid /opt/wisecloud/cdn/evlss_server/objs/evlss.pid;
-
-# 日志文件配置,不建议修改
-srs_log_file /opt/wisecloud/cdn/evlss_server/logs/evlss.log;
-
-# 服务ID,可采用UUID,也可以采用方便识别的方式命令
-service_id evlss_xxx;
-
-# 最小GOP缓存数,一个GOP大约相当于2秒钟的数据
-# 不要设置小于1的值,不能大于max_gop_cache
-# 不建议在没有数据指导的情况下随意调整该值。
-min_gop_cache 15;
-
-# 最大GOP缓存数,不能小于min_gop_cache。
-# 不建议在没有数据指导的情况下随意调整该值。
-max_gop_cache 25;
-
-# MVLSS查询、操作接口服务配置
-http_api {
-    # 启动服务,off关闭服务
-    enabled on;
-
-    # 服务监听端口
-    listen 19850;
-
-    # 支持跨域访问
-    crossdomain on;
-}
-
-# H.265服务配置
-http_ts {
-	# 服务是否启动,默认为on,off表示关闭
-	enabled on;
-	# H.265服务监听端口,若不配置则默认为13818
-	listen  13818;
-}
-
-# HTTP服务配置
-# IVLSS和MVLSS并不面向终端用户,因此并不需要提供http-flv服务
-# 所以不需要配置这项服务,但对于EVLSS则必须配置此项服务。
-# http_api服务和http_server服务都是http服务,但是两个服务的功能不一样。
-# http_api主要用于向外提供查询操作服务,而http_server用于向终端用户提供
-# 直播拉流服务。
-http_server {
-
-    # 开启http_server服务
-    enabled on;
-
-    # 服务监听端口
-    listen 8035;
-}
-
-# vhost 配置
-# vhost可以理解为一个产品名称
-# 对于RTMP协议,通过如下方式访问:
-# rtmp://<host>:<port>/stream?app=name
-# 不带参数时host就是vhost
-vhost __defaultVhost__ {
-
-    # mode有两种模式:local 和 remote。
-    # mode 为remote时,表示当前VLSS工作在边缘模式。
-    # mode不配置时默认是local,因此,EVLSS必须明确指定mode为remote。
-    mode remote;
-
-    # LiveCDE服务器地址配置
-    # 回源拉流时必须先向LiveCDE服务器请求一个MVLSS地址
-    # host可以是域名,也可以是IP地址。
-    # 端口可选,如果不填写端口,则默认使用1935。
-    # 例如:origin 192.168.1.2:8080;
-    origin {{ .Env.LIVECDE_ADDR }};
-
-    # HTTP直播流服务配置
-    http_remux {
-
-        # 启用HTTP直播流服务,不配置时默认为off, on为启用
-        enabled on;
-
-        # 将RTMP流复用为flv流
-        # [vhost] 表示当前HTTP直播流的vhost
-        # [app] 表示当前HTTP直播流的app
-        # [stream] 表示当前HTTP直播流的stream
-        mount [vhost]/[app]/[stream].flv;
-
-        # 在没有流的情况下是否启用HTTP流触发RTMP回源拉流
-        hstrs on;
-    }
-
-    # 事件回调配置(只支持HTTP)
-    http_hooks {
-
-        # 开启事件回调功能,off为关闭, on为开启
-        enabled on;
-
-        # 对于中转服务来说,IVLSS连接成功或者EVLSS发送拉流请求
-        # 后都会触发on_connect事件回调。
-        # 在触发on_connect事件后MVLSS会向此处配置的地址发送GET请求。
-        # GET请求会带上请求端带上来的参数,接收端可以通过这些参数做AAA认证,
-        # 实现防盗链功能。
-        # 此处允许配置多个地址,以空格分隔,建议只配置一个,原因是:
-        # 每个回调事件都返回成功时MVLSS才会继续后续的逻辑处理,否则
-        # 任何一个回调返回失败,后续的流程都将受到影响,推流操作就会失败。
-        # on_connect是可选配置项,没有需求时可不配置。
-        # 例如:on_connect http://192.168.1.2:8080/connect;
-        #on_connect http://<host>:<port>/<interface>;
-        #on_connect http://127.0.0.1:12345/api/guard;
-        on_connect_direct http://134.119.221.113:8106/DataCollect/live/connect;
-
-        # 对于中转服务来说,IVLSS推流端断开连接或者EVLSS拉流端断开连接
-        # 都会触发on_close事件回调。
-        # 在触发on_close事件后MVLSS会向此处配置的地址发送GET请求
-        # 此处允许配置多个地址,以空格分隔,建议只配置一个。
-        # on_close是可选配置项,没有需求时可不配置。
-        # 例如:on_close http://192.168.1.2:8080/close;
-        #on_close http://<host>:<port>/<interface>;
-        on_close http://134.119.221.113:8106/DataCollect/live/close;
-
-        # IVLSS推流端推送一路流到中转时会触发on_publish事件回调。
-        # 在触发on_publish事件后MVLSS会向此处配置的地址发送GET请求
-        # 此处允许配置多个地址,以空格分隔,建议只配置一个。
-        # on_publish是可选配置项,没有需求时可不配置。
-        # 例如:on_publish http://192.168.1.2:8080/publish;
-        #on_publish http://<host>:<port>/<interface>;
-
-        # IVLSS推流端停止推送直播流到中转时会触发on_unpublish事件回调。
-        # 在触发on_unpublish事件后MVLSS会向此处配置的地址发送GET请求
-        # 此处允许配置多个地址,以空格分隔,建议只配置一个。
-        # on_unpublish是可选配置项,没有需求时可不配置。
-        # 例如:on_unpublish http://192.168.1.2:8080/unpublish;
-        #on_unpublish http://<host>:<port>/<interface>;
-
-        # EVLSS向MVLSS发起拉流请求时会触发on_play事件回调。
-        # 在触发on_play事件后MVLSS会向此处配置的地址发送GET请求。
-        # 此处允许配置多个地址,以空格分隔,建议只配置一个。
-        # on_play是可选配置项,没有需求时可不配置。
-        # 例如:on_play http://192.168.1.2:8080/play;
-        #on_play http://<host>:<port>/<interface>;
-
-        # EVLSS停止向MVLSS拉流时会触发on_stop事件回调。
-        # 在触发on_stop事件后MVLSS会向此处配置的地址发送GET请求。
-        # 此处允许配置多个地址,以空格分隔,建议只配置一个。
-        # on_stop是可选配置项,没有需求时可不配置。
-        # 例如:on_stop http://192.168.1.2:8080/stop;
-        #on_stop http://<host>:<port>/<interface>;
-
-        # 作为中转服务来说,EVLSS拉流过程出现卡顿时会触发on_shrink事件回调。
-        # 在触发on_shrink事件后MVLSS会向此处所配置的地址发送GET请求。
-        # 此处允许配置多个地址,以空格分隔,建议只配置一个。
-        # on_shrink是可选配置项,没有需求时可不配置。
-        # 例如:on_shrink http://192.168.1.2:8080/shrink;
-        #on_shrink http://<host>:<port>/<interface>;
-        on_shrink http://134.119.221.113:8106/DataCollect/live/Kartun;
-    }
-}

+ 37 - 16
ng-docker-example/stackname/docker/start.sh

@@ -1,5 +1,6 @@
 #!/bin/bash
 # usage: check/replace/serivce_wait/service_start
+
 cd $(dirname $0)
 echo
 
@@ -32,22 +33,32 @@ for f in $CONF_FILES; do
     # metadata => "<location:LOCATION_OF_FILE> [MODE:600] [OWNER:USERNAME]"
     # if there is " " " in value, use "\"  to escape
     # use "${APP_HOME}/${APP_NAME}" to module home
-    
+
+    # dos2unix
+    if which dos2unix &>/dev/null; then
+        dos2unix $f
+    else
+        sed -i 's/.$//' $f
+    fi
+
     # get the location of metadata
     METADATA_LOCATION=$(grep -iw metadata $f | awk -F'=>' '{print $2}' | \
                       awk -F'location:' '{print $2}' | sed -n '1p' | \
                       awk '{print $1}' | tr -d ',;"' | tr -d "'")
-                      
+
     # replace the variable to true path
     METADATA_LOCATION=`eval echo $METADATA_LOCATION`
-    
+
     # there is no location tag of metadata
     if [ -z "$METADATA_LOCATION" ]; then
         echo "\"location\" of metadata in \"$f\" not define!"
         check_passed="$check_passed false"
         continue
     else
+        # if is a path
         if `dirname $METADATA_LOCATION &>/dev/null`; then
+
+            # if does not exist, mkdir
             if ! [ -d "$(dirname $METADATA_LOCATION)" ]; then
                 echo "mkdir -p $(dirname $METADATA_LOCATION)"
                 mkdir -p $(dirname $METADATA_LOCATION)
@@ -59,20 +70,20 @@ for f in $CONF_FILES; do
         fi
         dockerize_template="${dockerize_template} -template ${f}:${METADATA_LOCATION}"
     fi
-    
+
     # has location but no {{ VAR }}
     VAR_IN_BRACE=$(grep {{.*}} $f | sed -n 's/.*{{ *\(.*\) *}}.*/\1/p')
     if [ -z "$VAR_IN_BRACE" ]; then
         echo "skip \"${f}\" without replacing, pass."
         continue
-    
+
     # has location and {{ VAR }}
     else
         # loop to check
         for i in $VAR_IN_BRACE; do
             VAR_TO_CHECK=${i##.Env.}
             VAR_TO_CHECK=`echo $VAR_TO_CHECK`
-            
+
             # Check the value
             if [ -z "${!VAR_TO_CHECK}" ]; then
                 echo "Can not get env: \"${VAR_TO_CHECK}\" in file: \"$f\" !"
@@ -92,7 +103,7 @@ if echo $check_passed | grep -wq "false"; then
     echo "  2. compose file (recommand)"
     echo "  3. docker run with \"-e\" option"
     echo "And you can receive value with \"{{ .Env.VARIABLE_NAME }}\" in config file."
-    echo 
+    echo
     exit 1
 else
     echo "Env check pass."
@@ -105,29 +116,39 @@ for i in ${!APP_DEP*}; do
 done
 
 
-# replace¡¢Serivce Wait
+# replace�Serivce wait�Service start
 echo -n "Pre-starting.."
 dockerize \
     ${dockerize_template} \
-    ${dockerize_wait} -timeout 120s \
+    ${dockerize_wait} -timeout 1200s \
     -stdout    /var/log/${APP_NAME}.log \
     -stderr    /var/log/${APP_NAME}.log \
     echo "done"
 echo
 
+# get logs
+for log in ${!APP_LOG*}; do
+
+    # pre-create log file
+    mkdir -p `dirname ${!log}`
+    touch ${!log}
+    
+    LOG_LIST="${LOG_LIST} ${!log}"
+done
+
 
-# start, important
+# start
 Service_Start() {
     echo "Starting ${APP_NAME}.."
-    
+
     ####### START COMMAND HERE #########
-    set -e 
-    start_${APP_NAME} && \
+    set -e
+    bash -x `which start_${APP_NAME}` && \
     echo "success" && \
-    tail -f /var/log/${APP_NAME}.log
-    
+    tail -f /var/log/${APP_NAME}.log $LOG_LIST
+
     ####################################
-    
+
 }
 
 # default: start the service