ThingsBoard - Vue3安装部署

179 阅读3分钟
1、  docker-compose 安装 nginx
构建镜像、运行
docker-compose up -d nginx-web
    nginx-web:
        image: nginx:1.26.2
        container_name: nginx-web
        environment:
          # 时区上海
          TZ: Asia/Shanghai
        ports:
          - "80:80"
          - "443:443"
        volumes:
          # 证书映射
          - /opt/project/docker/nginx/cert:/etc/nginx/cert
          # 配置文件映射
          - /opt/project/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
          # 配置目录
          - /opt/project/docker/nginx/conf/webConf:/usr/share/nginx/conf/webConf
          # 页面目录
          - /opt/project/docker/nginx/html:/usr/share/nginx/html
          # 日志目录
          - /opt/project/docker/nginx/log:/var/log/nginx
        network_mode: "host"
        # 容器重启策略,容器崩溃时自动重启
        # restart: unless-stopped 
        # logging:
        #   driver: "json-file"
        #   options:
        #     max-size: "10m"  # 限制每个日志文件的最大大小
        #     max-file: "30"    # 保留最近的 30 个日志文件
2、  拉取代码

源码地址:gitee.com/oliver225/t…

我的地址:gitee.com/onionCircle…(基于源码地址同步的)

nodejs 官网地址:nodejs.org/en/download

1、打开 .env.development 文件,修改后台接口
# 代理设置,可配置多个,不能换行,格式:[访问接口的根路径, 代理地址, 是否保持Host头]
 VITE_PROXY = [["/api","http://127.0.0.1:18080/api",false]]
# 访问接口的根路径
 VITE_GLOB_API_URL =
 
 2、运行、打包
 # 安装依赖
yarn install --registry=https://registry.npmmirror.com
# 开发环境运行
yarn serve
# 编译打包后运行访问
yarn preview
# 打包
yarn build

image.png

image.png

3、  将打包出来的dist压缩上传到服务器
1、解压压缩包
unzip dist.zip

2、如果报错找不到 zip 命令
apt install unzip   

image.png

server {
    listen 10000;
    server_name localhost;

    # 根目录和默认首页配置
    location / {
        root /usr/share/nginx/html/thingsboard/dist;
        index index.html index.htm;

        # 尝试访问静态文件或转发到 index.html
        try_files $uri $uri/ /index.html;

        # 启用静态文件缓存(例如,HTML、CSS、JS)
        expires 1d;
        add_header Cache-Control "public";
    }

    # API 代理配置
    location /api {
        proxy_set_header Host $host; 
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme; 

        proxy_pass http://106.119.162.97:18080/api;

        # 可选:设置代理超时
        proxy_connect_timeout 10s;
        proxy_send_timeout 10s;
        proxy_read_timeout 10s;

        # 配置大响应内容的缓冲区
        proxy_buffering on;
        proxy_buffers 16 4k;
        proxy_buffer_size 2k;
    }

    # 可选:错误页面处理
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    # 安全增强(可选)
    # 禁止访问隐藏文件(例如 .git,.env)
    location ~ /. {
        deny all;
    }
}
    # 根据系统的 CPU 核心数自动设置 worker 进程数量
    worker_processes auto;

    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;

    events {
        # 根据需求调节
        worker_connections  1024;
        # 提高连接接受的效率
        multi_accept on; 
    }

    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        # 优化性能,减少磁盘和网络延迟
        tcp_nopush    on;
        keepalive_timeout  65;
         # 限制上传文件最大尺寸
        client_max_body_size 100m;

        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                              '$status $body_bytes_sent "$http_referer" '
                              '"$http_user_agent" "$http_x_forwarded_for"';

        access_log  /var/log/nginx/access.log  main;

        # 启用 Gzip 压缩
        gzip on;
        gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
        # 设置压缩级别,1-9,默认是 1,6 是平衡的压缩等级
        gzip_comp_level 6; 
        # 最小压缩文件大小,减少小文件的压缩开销
        gzip_min_length 1024; 

        upstream server {
            # 保证同一用户的请求路由到同一台服务器
            ip_hash;
            # gateway 地址
            server 127.0.0.1:8080;
            # 根据需要可以启用负载均衡的第二台后端服务器
            # server 127.0.0.1:8081;
        }

        include /usr/share/nginx/conf/webConf/*.conf;

        server {
            listen       80;
            server_name  localhost;

            # https配置参考 start
            #listen       443 ssl;

            # 证书直接存放 /docker/nginx/cert/ 目录下即可 更改证书名称即可 无需更改证书路径
            #ssl on;
            #ssl_certificate      /etc/nginx/cert/xxx.local.crt; # /etc/nginx/cert/ 为docker映射路径 不允许更改
            #ssl_certificate_key  /etc/nginx/cert/xxx.local.key; # /etc/nginx/cert/ 为docker映射路径 不允许更改
            #ssl_session_timeout 5m;
            #ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
            #ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            #ssl_prefer_server_ciphers on;
            # https配置参考 end

            # 演示环境配置 拦截除 GET POST 之外的所有请求
            # if ($request_method !~* GET|POST) {
            #     rewrite  ^/(.*)$  /403;
            # }

            # location = /403 {
            #     default_type application/json;
            #     return 200 '{"msg":"演示模式,不允许操作","code":500}';
            # }

            # 限制外网访问内网 actuator 相关路径
            location ~ ^(/[^/]*)?/actuator.*(/.*)?$ {
                return 403;
            }

            location / {
                root   /usr/share/nginx/html; # docker映射路径 不允许更改
                try_files $uri $uri/ /index.html;
                index  index.html index.htm;
            }

            location /prod-api/ {
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header REMOTE-HOST $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme; 
                proxy_read_timeout 86400s;
                # sse 与 websocket参数
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                # 关闭代理缓冲区,确保实时响应
                proxy_buffering off;
                # 禁用代理缓存,确保请求不被缓存
                proxy_cache off;
                proxy_pass http://server/;
            }

            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    }
4、登录访问地址

账号:sysadmin@thingsboard.org 密码sysadmin image.png image.png

5、视频地址

t.bilibili.com/10188854837…