JetLinks社区版2.1本地部署踩坑实录:从MySQL配置到前端Vue项目启动的保姆级避坑指南
JetLinks社区版2.1本地部署实战MySQL配置与Vue前端联调深度解析第一次接触JetLinks社区版时我本以为按照官方文档就能顺利完成本地部署。然而从数据库切换到前后端联调几乎每个环节都遇到了意料之外的坑。这篇文章将分享我从零开始部署JetLinks 2.1社区版的完整过程特别是那些官方文档没有详细说明的配置细节和问题排查方法。1. 环境准备与项目初始化在开始部署前确保你的开发环境满足以下基本要求操作系统Windows 10/11或Linux/macOS本文以Windows为例Java环境JDK 11或更高版本Node.jsv16.x LTS版本数据库MySQL 8.0官方默认使用PostgreSQL其他服务Redis 6.x、Elasticsearch 7.x提示虽然JetLinks官方推荐使用PostgreSQL但在国内企业环境中MySQL更为常见。这也是我选择MySQL作为数据库的原因。1.1 项目代码获取JetLinks社区版的后端和前端代码分别托管在不同的仓库中# 后端代码 git clone https://gitee.com/jetlinks/jetlinks-community.git cd jetlinks-community git checkout v2.1.0 # 前端代码(Vue版本) git clone https://gitee.com/jetlinks/jetlinks-ui-vue.git cd jetlinks-ui-vue git checkout v2.1.0常见问题直接从GitHub克隆可能会遇到网络问题建议使用Gitee镜像源。2. 后端项目配置与启动2.1 MySQL数据库配置JetLinks默认使用PostgreSQL切换到MySQL需要进行以下配置修改打开jetlinks-standalone/src/main/resources/application.yml文件找到数据库配置部分修改为r2dbc: url: r2dbc:mysql://localhost:3306/jetlinks?sslfalseserverZoneIdAsia/Shanghai username: your_username password: your_password easyorm: default-schema: jetlinks dialect: mysql关键点必须提前手动创建数据库CREATE DATABASE jetlinks;serverZoneId参数对时区敏感的应用非常重要确保MySQL用户有足够的权限2.2 Redis配置Redis是JetLinks的必需组件配置相对简单redis: host: 127.0.0.1 port: 6379 lettuce: pool: max-active: 1024 timeout: 20s常见问题如果Redis设置了密码需要添加password字段Windows系统下Redis默认不启动需要手动启动服务2.3 Elasticsearch配置对于本地开发环境可以使用内置的Elasticsearchelasticsearch: embedded: enabled: true >elasticsearch: embedded: false spring: elasticsearch: uris: http://localhost:9200 username: elastic password: your_password性能优化开发环境下可以调整JVM参数减少资源占用# 在IDE的VM options中添加 -Des.set.netty.runtime.available.processorsfalse -Xms512m -Xmx512m2.4 项目启动与验证完成配置后启动JetLinksApplication主类。常见的启动问题及解决方案问题现象可能原因解决方案数据库连接失败时区配置错误检查serverZoneId参数Redis连接超时Redis服务未启动启动Redis服务Elasticsearch初始化失败端口冲突修改embedded.port或关闭其他ES实例启动成功后访问http://localhost:8848应该能看到JetLinks的后台接口文档。3. 前端项目配置与启动3.1 环境准备前端项目基于Vue 3和Vite需要确保Node.js环境正确node -v # 应该显示v16.x yarn -v # 推荐使用yarn作为包管理器3.2 项目配置关键的配置修改在vite.config.ts中server: { proxy: { /jetlinks: { target: http://localhost:8848, // 后端API地址 changeOrigin: true, }, /api: { target: http://localhost:8848, changeOrigin: true, } } }重要确保这里的端口与后端服务端口一致。3.3 依赖安装与启动yarn install yarn dev常见问题依赖安装失败检查node-sass版本兼容性尝试使用淘宝镜像源启动时报错清除缓存后重试yarn cache clean强制重新构建yarn dev:force3.4 前后端联调成功启动后访问http://localhost:3000应该能看到登录界面。使用默认账号admin/admin登录。跨域问题解决方案 如果遇到跨域问题可以在后端添加以下配置Bean public CorsFilter corsFilter() { UrlBasedCorsConfigurationSource source new UrlBasedCorsConfigurationSource(); CorsConfiguration config new CorsConfiguration(); config.addAllowedOrigin(*); config.addAllowedHeader(*); config.addAllowedMethod(*); source.registerCorsConfiguration(/**, config); return new CorsFilter(source); }4. 高级配置与优化4.1 数据库性能调优对于生产环境或性能测试建议调整MySQL连接池参数spring: r2dbc: pool: initial-size: 5 max-size: 20 max-idle-time: 30m4.2 Redis集群配置如果需要连接Redis集群redis: cluster: nodes: - 127.0.0.1:6379 - 127.0.0.1:6380 max-redirects: 34.3 Elasticsearch索引优化对于设备数据量大的场景可以预先配置索引模板PUT _template/jetlinks_template { index_patterns: [jetlinks-*], settings: { number_of_shards: 3, number_of_replicas: 1 } }4.4 前端自定义主题JetLinks UI支持主题定制修改src/styles/variables.scss$--color-primary: #1890ff; $--color-success: #52c41a; $--color-warning: #faad14; $--color-danger: #f5222d;5. 常见问题深度解析5.1 时区问题全解决方案跨时区部署时可能出现的问题及解决方案数据库时区不一致MySQL: 设置serverTimezoneAsia/Shanghai应用层: 确保JVM时区正确-Duser.timezoneAsia/Shanghai前端显示时间不对 使用day.js统一处理时间显示import dayjs from dayjs import timezone from dayjs/plugin/timezone dayjs.extend(timezone) dayjs.tz.setDefault(Asia/Shanghai)5.2 设备协议开发调试开发自定义协议时的调试技巧使用JetLinks提供的协议调试工具开启DEBUG日志级别logging: level: org.jetlinks: debug使用TCP调试工具模拟设备端5.3 性能监控与优化内置的监控端点/actuator/metrics- 系统指标/actuator/health- 健康检查/actuator/prometheus- Prometheus格式指标关键指标监控设备连接数消息处理延迟数据库查询性能6. 生产环境部署建议虽然本文主要介绍本地开发环境部署但有几个生产环境需要特别注意的点数据库高可用使用MySQL主从复制或集群定期备份数据服务监控集成Prometheus Grafana设置关键指标告警安全加固修改默认管理员密码启用HTTPS限制管理接口访问IP性能调优JVM参数优化数据库连接池调优Redis缓存策略优化在本地环境成功部署后可以尝试使用Docker Compose进行容器化部署这将大大简化依赖服务的部署和管理。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2516041.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!