部署wvp和zlm

部署wvp和zlm 工具准备 sudo apt update ## 编译工具 sudo apt install -y git o...

首页 » 技术文档 » 部署wvp和zlm
部署wvp和zlm

部署wvp和zlm

  • 工具准备

    sudo apt update
    ## 编译工具
    sudo apt install -y git openjdk-11-jdk tar vim cmake gcc g++ libsrtp2-dev libssl-dev maven npm
    ## ffmepg
    sudo apt install ffmpeg
  • 编译zlm

    ##国内服务器(与国外服务器二选一)
    git clone https://gitee.com/xia-chu/ZLMediaKit.git
    
    ##国外服务器(与国外服务器二选一)
    git clone https://github.com/ZLMediaKit/ZLMediaKit
    
    cd ZLMediaKit
    git submodule update --init --recursive
    mkdir -p build release/linux/Release/
    cd build 
    cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_WEBRTC=true -DENABLE_TESTS=false ..
    cmake --build . --target MediaServer
    ————————————————
    版权声明:本文为CSDN博主「梦醒贰零壹柒」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/macaiyun0629/article/details/132515139
  • maven编译安装(可省略)

    wget https://dlcdn.apache.org/maven/maven-3/3.9.4/binaries/apache-maven-3.9.4-bin.tar.gz
    
    mkdir app
    
    tar xf apache-maven-3.9.4-bin.tar.gz
    
    mv apache-maven-3.9.4 app/maven
    
    echo "export PATH=~/app/maven/bin:\$PATH" >> ~/.bashrc
    ## 环境变量生效
    source ~/.bashrc
  • 安装nodejs(可省略)

    wget https://nodejs.org/dist/v16.19.0/node-v16.19.0-linux-x64.tar.gz
    tar xf node-v16.19.0-linux-x64.tar.gz
    mv node-v16.19.0-linux-x64 app/node
    echo "export PATH=~/app/node/bin:\$PATH" >> ~/.bashrc
    ## 环境变量生效
    source ~/.bashrc
  • 编译wvp

    #地址可以更换
    git clone https://gitee.com/pan648540858/wvp-GB28181-pro.git
    git clone https://gitee.com/pan648540858/wvp-GB28181-pro.git
    git clone https://github.com/648540858/wvp-GB28181-pro.git
    #前端编译
    cd wvp-GB28181-pro/web_src
    # 下载依赖
    npm install --registry=https://registry.npmmirror.com
    # 编译
    npm run build
    #后端编译
    cd ..
    mvn clean package -DskipTests
  • 安装数据库

    #使用MySQL redis 可以用宝塔安装 也可以用docker
    #安装docker 链接
    bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/DockerInstallation.sh)
    #创建安装目录
    mkdir -p /home/media/mysqldata /home/media/redisdata
    #创建yml文件
    cd /home/media/
    vim video.yml
    #输入以下下内容
  • docker版编辑video.yml(可省略)

    version: "3.8"
    services:
    redis:
      image: redis:6.2-alpine
      restart: always
      environment:
        TZ: Asia/Shanghai
      ports:
        - 6379:6379
      volumes:
        - /opt/video/redisdata/data:/data
        - /opt/video/redisdata/log:/logs
      command: redis-server --port 6379 --requirepass 12345678  --appendonly yes
    mysql:
      image: mysql:8
      restart: always
      command: 
        [
          "--character-set-server=utf8mb4",
          "--collation-server=utf8mb4_unicode_ci",
          "--default-time-zone=+8:00",
        ]
      ports:
        - 3306:3306
      environment:
        TZ: Asia/Shanghai
        MYSQL_ROOT_PASSWORD: 12345678
        SQL_MODE: "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
      volumes:
        - /opt/video/mysqldata/mysql:/var/lib/mysql:rw 
  • docker版启动数据库和redis(可省略)

    # 将镜像pull下来
    docker pull redis:6.2-alpine
    docker pull mysql:8
    ## 启动
    docker-compose -f video.yml -p wvp up -d
  • 初始化数据库

    • 方法一:直接用宝塔
      创建一个新的数据库名mysql_name和账户mysql_root,密码mysql_passwd
    # 进入wvp下载项目 
    # 进入数据库文件夹 使用宝塔把初始化数据库导入
    • 方法二:docker数据库
    ## 进入wvp项目
    cd ~/wvp-GB28181-pro/
    ## 复制mysql.sql、update.sql文件到mysql容器
    docker cp sql media-mysql-1:/tmp
    ## 进入mysql容器
    docker exec -it media-mysql-1 bash
    ## 登录数据库
    mysql -uroot -p12345678
    ## 创建wvp数据库
    CREATE DATABASE wvp DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
  • 部署zlm

    #创建安装目录
    mkdir -p /home/media/zlm
    # 进入zlmbia编译项目目录
    cd ~/ZLMediaKit
    cp -r release/linux/Release/* /home/media/zlm
    #进入拷贝后的目录,测试可以用
    ./MediaServer
    #创建开机启动脚本
    vim /etc/systemd/system/zlm.service
    #内容
    [Unit]
    Description=ZLMediaKit
    [Service]
    Environment="PATH=/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin"
    #路径需要
    ExecStart=/home/media/zlm/MediaServer -c /home/media/zlm/config.ini
    StandardOutput=null
    [Install]
    WantedBy=multi-user.target
  • 修改zlm配置

    vim config.ini
    修改
    [api]
    apiDebug=1
    defaultSnap=./www/logo.png
    downloadRoot=./www
    #需要与wvp的yml 设置匹配
    secret=zT49uxy7EgUeAYJxYFaGPZqgpMefaGQq
    snapRoot=./www/snap/
    
    [cluster]
    origin_url=
    retry_count=3
    timeout_sec=15
    
    [ffmpeg]
    bin=/usr/bin/ffmpeg
    cmd=%s -re -i %s -c:a aac -strict -2 -ar 44100 -ab 48k -c:v libx264 -f flv %s
    log=./ffmpeg/ffmpeg.log
    restart_sec=0
    snap=%s -rtsp_transport tcp -i %s -y -f mjpeg -frames:v 1 %s
    
    [general]
    check_nvidia_dev=1
    enableVhost=0
    enable_ffmpeg_log=0
    flowThreshold=1024
    maxStreamWaitMS=15000
    #需要与wvp的yml 设置匹配
    mediaServerId=mystation18
    mergeWriteMS=0
    resetWhenRePlay=1
    streamNoneReaderDelayMS=20000
    unready_frame_cache=100
    wait_add_track_ms=3000
    wait_track_ready_ms=10000
  • 部署wvp

    mkdir -p /home/media/wvp
    # 复制目录
    cd ~/wvp-GB28181-pro/
    # 复制java包安装目录
    cp target/wvp-pro-2.6.6-xxxxx.jar /home/media/wvp/wvp-pro.jar
    # 复制配置文件安装目录
    cp src/main/resources/all-application.yml /home/media/wvp/application.yml
    #进入拷贝后目录测试代码
    java -jar wvp-pro-*.jar
    
    vim /etc/systemd/system/wvp.service
    [Unit]
    Description=wvp
    [Service]
    Environment="PATH=/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin"
    ExecStart=/usr/bin/java -jar /home/media/wvp/wvp-pro.jar --spring.config.location=/home/media/wvp/application.yml
    StandardOutput=null
    [Install]
    WantedBy=multi-user.target
    —
  • wvp配置

    spring:
      # 设置接口超时时间
      mvc:
          async:
              request-timeout: 20000
      # [可选]上传文件大小限制
      servlet:
          multipart:
              max-file-size: 10MB
              max-request-size: 100MB
      # REDIS数据库配置
      redis:
          # [必须修改] Redis服务器IP, REDIS安装在本机的,使用127.0.0.1
          host: 127.0.0.1
          # [必须修改] 端口号
          port: 6379
          # [可选] 数据库 DB
          database: 6
          # [可选] 访问密码,若你的redis服务器没有设置密码,就不需要用密码去连接
          password:
          # [可选] 超时时间
          timeout: 10000
          # [可选] 一个pool最多可分配多少个jedis实例
          poolMaxTotal: 1000
          # [可选] 一个pool最多有多少个状态为idle(空闲)的jedis实例
          poolMaxIdle: 500
          # [可选] 最大的等待时间(秒)
          poolMaxWait: 5
    
      datasource:
          # kingbase配置
          #        type: com.zaxxer.hikari.HikariDataSource
          #        driver-class-name: com.kingbase8.Driver
          #        url: jdbc:kingbase8://192.168.1.55:54321/wvp?useUnicode=true&characterEncoding=utf8
          #        username: system
          #        password: system
          # postgresql配置
          #    type: com.zaxxer.hikari.HikariDataSource
          #    driver-class-name: org.postgresql.Driver
          #    url: jdbc:postgresql://192.168.1.242:3306/242wvp
          #    username: root
          #    password: SYceshizu1234
          # mysql配置
          type: com.zaxxer.hikari.HikariDataSource
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://127.0.0.1:3306/mysql_root?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=
          username: mysql_root
          password: mysql_passwd
          hikari:
              connection-timeout: 20000             # 是客户端等待连接池连接的最大毫秒数
              initialSize: 50                       # 连接池初始化连接数
              maximum-pool-size: 200                # 连接池最大连接数
              minimum-idle: 10                       # 连接池最小空闲连接数
              idle-timeout: 300000                  # 允许连接在连接池中空闲的最长时间(以毫秒为单位)
              max-lifetime: 1200000                 # 是池中连接关闭后的最长生命周期(以毫秒为单位)