07 jetlinks-ubuntu20-rk3588-部署

1. 前言

本文聚焦于在搭载 RK3588 芯片的 Ubuntu 20.04 系统环境下,完成 JetLinks 社区版(2.10.0 版本)的部署落地。JetLinks 作为面向物联网领域的开源平台,其稳定运行依赖 PostgreSQL 数据库及 TimescaleDB 时序数据库插件的支撑;而 RK3588 作为 ARM 架构的 8 核高性能处理器,在编译、环境适配层面与 x86 架构存在差异,因此本文将详细梳理从环境配置、数据库搭建到插件编译、平台启动的全流程,解决 ARM 架构下 PostgreSQL 12.22 安装、TimescaleDB 2.11.0 源码编译适配等核心问题,为同类 ARM 硬件环境下部署 JetLinks 提供可落地的实操指南。

  • 对应版本 2.10.0

  • 编译 mvn clean install -T 12C

    • rk3588 为8核心cpu,配置12C可以加快编译速度

    • mvn 为3.6版本

      text 复制代码
      root@zhongrui:/work/jetlinks/jetlinks-community-me# mvn -v
      Apache Maven 3.6.3
      Maven home: /usr/share/maven
      Java version: 17.0.15, vendor: Ubuntu, runtime: /usr/lib/jvm/java-17-openjdk-arm64
      Default locale: en_US, platform encoding: ANSI_X3.4-1968
      OS name: "linux", version: "5.10.160", arch: "aarch64", family: "unix"
      root@zhongrui:/work/jetlinks/jetlinks-community-me# 
  • 配置数据库

    目前只改了这几个地方,其他按照默认即可,什么都不改

3. 安装 postgresql

  • 对应版本为 12.22

    text 复制代码
    root@zhongrui:/work/jetlinks/jetlinks-community-me# psql --version
    psql (PostgreSQL) 12.22 (Ubuntu 12.22-0ubuntu0.20.04.4)
    root@zhongrui:/work/jetlinks/jetlinks-community-me# 
  • 创建账号及数据库

    shell 复制代码
      # 1. 切换到postgres系统用户(默认无密码)
      su - postgres
    
      # 2. 进入psql命令行
      psql
    
    
      CREATE DATABASE jetlinks WITH ENCODING 'UTF8';
      CREATE USER jetlinks WITH PASSWORD 'JetLinks@123456';
      GRANT ALL PRIVILEGES ON DATABASE jetlinks TO jetlinks;
      \q
  • 查看账号及数据库

    text 复制代码
    root@zhongrui:/work/jetlinks/jetlinks-community-me# su - postgres
    postgres@zhongrui:~$ psql
    psql (12.22 (Ubuntu 12.22-0ubuntu0.20.04.4))
    Type "help" for help.
    
    postgres=# \du
                                    List of roles
    Role name |                         Attributes                         | Member of
    -----------+------------------------------------------------------------+-----------
    jetlinks  |                                                            | {}
    postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
    
    postgres=# \l
                                List of databases
        Name     |  Owner   | Encoding | Collate |  Ctype  |   Access privileges
    -------------+----------+----------+---------+---------+-----------------------
    jetlinks    | postgres | UTF8     | C.UTF-8 | C.UTF-8 | =Tc/postgres         +
                |          |          |         |         | postgres=CTc/postgres+
                |          |          |         |         | jetlinks=CTc/postgres
    postgres    | postgres | UTF8     | C.UTF-8 | C.UTF-8 |
    template0   | postgres | UTF8     | C.UTF-8 | C.UTF-8 | =c/postgres          +
                |          |          |         |         | postgres=CTc/postgres
    template1   | postgres | UTF8     | C.UTF-8 | C.UTF-8 | =c/postgres          +
                |          |          |         |         | postgres=CTc/postgres
    thingsboard | postgres | UTF8     | C.UTF-8 | C.UTF-8 | =Tc/postgres         +
                |          |          |         |         | postgres=CTc/postgres
    (5 rows)
    
    postgres=#

4. 安装 TimescaleDB 插件

安装 TimescaleDB 插件相对比较复杂,试了使用apt安装,死活安装不上,最后使用源码编译,编译的过程,大家也可以参考这篇文章https://blog.csdn.net/junxuezheng/article/details/103637845

  • 对应版本 2.11.0

    其他版本没试过也不知道行不行,根据postgresql为12版本,确认需要使用2.11.0,编译之后没问题,就没折腾其他的了,能用就行

  • 编译

    shell 复制代码
    ./bootstrap
    cd ./build && make
    make install  # 安装 
  • 修改 /etc/postgresql/12/main/postgresql.conf 文件

    启动该扩展,修改之后重启下 postgresql。

    text 复制代码
    # default configuration for text search
    default_text_search_config = 'pg_catalog.english'
  • 配置数据库
    很重要,说明

    • 如果扩展已经存在,IF NOT EXISTS 会避免重复创建。
    • 扩展只能在单个数据库中启用,因此需要针对每个需要使用 TimescaleDB 的数据库执行此命令。
    • 配置之后也要重启下数据库
    shell 复制代码
    \c jetlinks
    CREATE EXTENSION IF NOT EXISTS timescaledb;
    text 复制代码
    root@zhongrui:/work/jetlinks/timescaledb/build# su - postgres
    postgres@zhongrui:~$ psql
    psql (12.22 (Ubuntu 12.22-0ubuntu0.20.04.4))
    Type "help" for help.
    
    postgres=# \c jetlinks
    You are now connected to database "jetlinks" as user "postgres".
    jetlinks=# CREATE EXTENSION IF NOT EXISTS timescaledb;
    NOTICE:  extension "timescaledb" already exists, skipping
    CREATE EXTENSION
    jetlinks=# SELECT extname, extversion
    jetlinks-# FROM pg_extension
    jetlinks-# WHERE extname = 'timescaledb';
      extname   | extversion 
    -------------+------------
    timescaledb | 2.11.0
    (1 row)
    
    jetlinks=# 

5. 验证

执行命令,按照官方是要求java 17的,但是不知道为什么实际使用中会有很多问题,因此加了很多选项才跑起来,不过能用就行,先用再说

  • java 版本

    text 复制代码
    root@zhongrui:/work/jetlinks/timescaledb/build# java --version
    openjdk 17.0.15 2025-04-15
    OpenJDK Runtime Environment (build 17.0.15+6-Ubuntu-0ubuntu120.04)
    OpenJDK 64-Bit Server VM (build 17.0.15+6-Ubuntu-0ubuntu120.04, mixed mode, sharing)
    root@zhongrui:/work/jetlinks/timescaledb/build# 
  • 运行jar 包

    shell 复制代码
    java   --add-opens java.base/java.lang=ALL-UNNAMED   --add-opens java.base/java.util=ALL-UNNAMED   --add-opens java.base/java.math=ALL-UNNAMED   --add-opens java.base/java.util.concurrent=ALL-UNNAMED   --add-opens java.base/java.net=ALL-UNNAMED   --add-opens java.base/java.text=ALL-UNNAMED   --add-opens java.base/java.io=ALL-UNNAMED   --add-opens java.base/java.nio=ALL-UNNAMED   --add-opens java.base/sun.net=ALL-UNNAMED   --add-opens java.base/sun.net.www.protocol=ALL-UNNAMED   --add-opens java.base/sun.nio.ch=ALL-UNNAMED   --add-opens java.base/sun.util.calendar=ALL-UNNAMED   --add-opens java.base/sun.reflect=ALL-UNNAMED   --add-opens java.base/jdk.internal.reflect=ALL-UNNAMED   -jar target/application.jar
  • 运行web

    默认账号及密码

    text 复制代码
    admin
    JetLinks.C0mmVn1ty

6.总结

  1. 环境核心适配:针对RK3588(ARM64架构)+Ubuntu 20.04环境,确定了JetLinks 2.10.0、PostgreSQL 12.22、TimescaleDB 2.11.0的版本组合,其中TimescaleDB因apt安装失败,采用源码编译方式完成适配。
  2. 关键操作步骤:完成PostgreSQL数据库/用户创建、TimescaleDB插件编译安装与启用后,需通过添加Java 17的开放模块参数,解决JetLinks启动兼容性问题,最终可通过默认账号密码访问Web端验证部署成功。
  3. 性能与兼容性优化 :编译JetLinks时利用RK3588的8核特性配置-T 12C加速编译,所有核心组件配置完成后均需重启数据库/服务,确保配置生效。
相关推荐
噔噔君2 小时前
ip link show输出详解
网络·网络协议·tcp/ip
Realdagongzai2 小时前
Python学习过程记录3-操作列表
linux·vscode·python·kernel
坐怀不乱杯魂2 小时前
Linux网络 - Socket编程(IPv4&IPv6)
linux·服务器·网络·c++·udp·tcp
燃于AC之乐2 小时前
【Linux系统编程】进程地址空间完全指南:页表、写时拷贝与虚拟内存管理
linux·操作系统·虚拟内存·进程地址空间
网硕互联的小客服2 小时前
站群服务器里的8C/4C/2C/1C有什么区别?选择哪个比较好?
运维·服务器·网络
_OP_CHEN2 小时前
【Linux系统编程】(二十三)从块到块组:Ext2 文件系统核心架构的初步认识
linux·操作系统·文件系统·c/c++·ext2文件系统·磁盘分区·块组
刘某的Cloud2 小时前
docker cp 传文件,使用 docker exec 结合 tar 流传输,效率更高且能保留权限
linux·运维·docker·容器·系统
m0_748244962 小时前
【Linux 系列】Linux 命令/快捷键详解
linux·运维·服务器
德迅云安全—珍珍2 小时前
租用的服务器太卡怎么办?怎么优化
运维·服务器