第二章 从零到一:JetLinks社区版本地开发环境全栈部署实战
1. JetLinks社区版开发环境搭建概述第一次接触JetLinks社区版的朋友可能会问这到底是个什么东西简单来说它是一个开源的物联网平台能帮你快速搭建起设备管理、数据采集、规则引擎等物联网核心功能。就像搭积木一样你可以基于它进行二次开发省去了从零造轮子的痛苦。我在实际项目中用过不少物联网平台比如ThingsBoard、IoTSharp等但JetLinks给我的印象最深。它的社区版完全开源免费功能却相当完善特别适合中小型物联网项目。最近帮朋友部署了一套用于智能家居系统开发从环境搭建到功能调试只用了两天时间。2. 后端环境部署实战2.1 基础环境准备在开始之前确保你的电脑已经安装好这些基础软件JDK 1.8或以上版本推荐OpenJDK 11Maven 3.6MySQL 5.7/MariaDBRedis 5.0Elasticsearch 7.x可选开发环境可以用内置的我建议使用Docker来管理这些服务能省去很多配置麻烦。比如用这个命令快速启动MySQLdocker run --name jetlinks-mysql -e MYSQL_ROOT_PASSWORD123456 -p 3306:3306 -d mysql:5.72.2 获取后端代码官方代码库有两个镜像地址GitHub: https://github.com/jetlinks/jetlinks-communityGitee: https://gitee.com/jetlinks/jetlinks-community国内用户建议用Gitee下载速度更快。我习惯用git clone方式获取代码方便后续更新git clone https://gitee.com/jetlinks/jetlinks-community.git cd jetlinks-community git checkout v2.1.0 # 切换到稳定版本2.3 关键配置详解打开jetlinks-standalone目录下的application.yml这几个配置需要特别注意数据库配置默认是PostgreSQL改成MySQLr2dbc: url: r2dbc:mysql://localhost:3306/jetlinks?sslfalse username: root password: 123456 easyorm: default-schema: jetlinks dialect: mysqlRedis配置如果没有密码可以省略password项redis: host: localhost port: 6379 password: yourpasswordElasticsearch配置开发环境建议用内置的elasticsearch: embedded: enabled: true >mvn clean package -DskipTests然后启动主应用java -jar jetlinks-standalone/target/jetlinks-standalone.jar第一次启动会比较慢因为要初始化数据库表结构。看到控制台输出JetLinks started就说明成功了。我遇到过端口冲突的问题如果8080端口被占用可以在配置文件中修改server.port。3. 前端环境部署指南3.1 获取前端代码Vue版前端代码库地址GitHub: https://github.com/jetlinks/jetlinks-ui-vueGitee: https://gitee.com/jetlinks/jetlinks-ui-vue同样建议使用git克隆git clone https://gitee.com/jetlinks/jetlinks-ui-vue.git cd jetlinks-ui-vue3.2 配置联调参数修改vite.config.ts中的API代理配置确保能访问到刚才启动的后端服务server: { proxy: { /api: { target: http://localhost:8080, changeOrigin: true } } }3.3 编译运行前端安装依赖并启动yarn install yarn dev如果遇到组件版本问题可以强制更新yarn add jetlinks-ui-componentslatest yarn dev:force启动成功后访问http://localhost:3000用默认账号admin/admin登录就能看到管理界面了。我建议首次登录后立即修改密码毕竟安全第一。4. 常见问题排查4.1 数据库连接失败如果启动时报数据库连接错误检查MySQL是否已创建空数据库只需要创建数据库表会自动生成账号密码是否正确数据库服务是否正常运行4.2 Redis连接超时典型的错误现象是启动卡在Redis连接阶段。除了检查配置外还可以redis-cli ping如果返回PONG说明连接正常。4.3 前端跨域问题如果前端访问接口出现跨域错误可以在后端配置中添加spring: web: cors: allowed-origins: * allowed-methods: *4.4 端口冲突处理如果发现端口被占用可以通过这些命令查找占用进程# Linux/Mac lsof -i :8080 # Windows netstat -ano | findstr 80805. 开发环境优化建议5.1 使用IDE调试推荐用IntelliJ IDEA打开后端项目直接运行JetLinksApplication类可以开启调试模式。我在开发时经常用断点调试规则引擎比打日志高效多了。5.2 配置热部署前端Vite本身支持热更新后端可以添加devtools依赖实现热部署dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-devtools/artifactId scoperuntime/scope optionaltrue/optional /dependency5.3 文档资源利用JetLinks官方文档很全面遇到问题可以先查官网文档https://jetlinks.cnGitHub Wikihttps://github.com/jetlinks/jetlinks-community/wiki6. 进阶配置技巧6.1 多环境配置管理实际开发中通常需要多套环境配置可以这样组织resources/ ├── application.yml ├── application-dev.yml └── application-prod.yml通过启动参数切换环境java -jar -Dspring.profiles.activedev jetlinks-standalone.jar6.2 日志配置优化默认日志输出比较简略可以调整logback配置logger nameorg.jetlinks levelDEBUG/ logger nameorg.springframework levelWARN/6.3 性能监控配置集成Spring Boot Actuator可以查看运行状态management: endpoints: web: exposure: include: *访问/actuator/health等端点就能获取系统信息。我在压力测试时发现这个功能特别有用能快速定位性能瓶颈。