本文最后更新于 2024年7月4日 上午
简介
前后端完整的网址导航服务,可以用于公司内部内网使用,提供多种的卡片图标生成方式,能将上传的原型压缩包自动生成可访问的地址,支持私密卡片,发布倒计时等功能。
用于在公司内网部署使用,可在线修改上传、可拖拽排序等。
项目地址:https://github.com/tuituidan/team-nav
要求Java版本为 1.8.0
功能说明
- 首页
- 最高支持三级分类的显示,可搜索,点击左侧菜单支持高亮定位右侧卡片。
- 支持设置自定义主题。
- 附件的在线查看和下载。
- 头部可显示通知公告,支持倒计时模式。
- 设置常用卡片分类,收藏个人常用网址。
- 申请提交卡片。
- 后台管理
- 仅支持管理员角色进入后台管理(管理员角色可设置多人),其他人只能通过首页的卡片申请进行卡片添加,由管理员审核后生效。
- 后台管理-分类管理
- 三级分类树的基本增删改查及排序。
- 对需要归档的分类支持移除到历史分类中,移除后不再显示到首页,可随时从历史分类中还原回来。
- 可为卡片分类分配角色,未分配角色为公共分类,对所有人公开,不管登录与否,设置角色后必须登录且有对应角色的人才能看到(人员角色设置下面在角色和用户管理模块中)。
- 后台管理-卡片管理
- 卡片基本的增删改查及排序。
- 管理员进行卡片审核。
- 三种卡片类型:
- 普通卡片:一般的内容型卡片,承载少量信息,可添加链接进行点击跳转。
- 静态网站:上传发布成静态网站的压缩包(根目录带index.html)。
- 动态卡片:内容将根据配置的http请求或sql动态更新(开发中)。
- 支持私密信息添加,仅登录后人员才能查看。
- 卡片图标支持上传,选择自定义图片,自动获取链接
favicon.ico
、文字图标四种方式。
- 支持附件上传。
- 后台管理-角色管理
- 角色基本增删改查,管理员角色不支持修改删除。
- 可以给角色分配卡片分类,不支持给管理员分配卡片分类,因为他本来就能看到所有。
- 可以给角色分配人员。
- 后台管理-用户管理
- 后台管理-通知公告
- 通知公告的基本增删改查及排序。
- 通知内容支持富文本编辑,如果选择截止时间,会自动出现倒计时,一般用于项目发布倒计时,同时有多个通知公告时,会定时切换,切换时间在系统设置中设置。
- 后台管理-系统设置
- 基本设置,包括设置当前网站服务名、LOGO、公告切换时间等设置。
- 卡片自定义图标上传。
效果图
首页
首页-主题切换
首页-未登录
后台管理-分类管理
后台管理-卡片管理
后台管理-卡片添加
后台管理-角色管理
后台管理-用户管理
后台管理-通知公告
后台管理-系统设置
部署
ZIP包部署
系统:Rocky Linux 8/9 (关闭SE Linux 关闭防火墙)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| dnf install vim wget java-1.8.0-openjdk -y
# 安装JDK 8
cd /opt/
wget https://github.com/tuituidan/team-nav/releases/download/v2.0.2/team-nav.tar.gz
# 下载,也可以手动下载,上传到opt目录下。(https://github.com/tuituidan/team-nav/releases)
tar -zxvf team-nav.tar.gz
# 解压
tree /opt . ├── team-nav │ ├── bin │ │ ├── restart.sh │ │ ├── start.sh │ │ ├── status.sh │ │ └── stop.sh │ ├── config │ │ └── application.yml │ ├── docs │ ├── logs │ ├── README.md │ ├── readme.txt │ └── team-nav.jar └── team-nav.tar.gz
# 目录结构如上
chmod +x /opt/team-nav/bin/*
# 给予脚本权限
/opt/team-nav/bin/start.sh
# 启动
/opt/team-nav/bin/status.sh team-nav 服务正在运行中 (PID: 9527). [is running ...]
# 查看是否运行
/opt/team-nav/bin/stop.sh
# 停止运行
|
默认端口为8080,通过8080端口访问服务,修改端口可以进入/opt/team-nav/config/application.yml配置。
添加为Sysemd服务
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| vim /usr/lib/systemd/system/team-nav.service
[Unit] Description=team-nav After=network.target
[Service] User=root Type=forking ExecStart=/opt/team-nav/bin/start.sh ExecStop=/opt/team-nav/bin/stop.sh RemainAfterExit=yes
[Install] WantedBy=multi-user.target
|
写入到文件保存。
systemctl daemon-reload
加载自定义服务
systemctl start team-nav.service
systemctl status team-nav.service
尝试启动,并查看状态。
systemctl enable team-nav.service
设置开启及并启动
Docker部署
Docker 安装参考:https://yeasy.gitbook.io/docker_practice/install/centos
1 2 3 4 5
| mkdir -p /opt/team-nav/logs mkdir /opt/team-nav/database mkdir /opt/team-nav/ext-resources mkdir /opt/team-nav/config
|
创建日志、数据库、图片、配置文件夹。
1 2 3 4 5 6 7 8 9 10
| docker run -d -p 8080:8080 \ -v /opt/team-nav/logs:/logs \ -v /opt/team-nav/database:/database \ -v /opt/team-nav/ext-resources:/ext-resources \ -v /opt/team-nav/config:/config \ -e nav-name="团队内部导航服务" \ --restart always \ --name team-nav \ registry.cn-chengdu.aliyuncs.com/tuituidan/team-nav:2.0.2
|
映射容器8080端口到宿主机8080端口,通过访问主机” http://127.0.0.1:8080 “。
映射上述步骤创建的文件夹
配置网站名字
配置为自动启动
配置容器名字
管理
登录
路径:http://127.0.0.1:8080/login
默认账号:admin
默认密码:123456
Nginx反向代理域名
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| vim /etc/nginx/conf.d/team.conf
server { listen 80; listen [::]:80;
server_name team.baidu.com;
# reverse proxy location / { proxy_pass http://127.0.0.1:8082/; proxy_http_version 1.1; proxy_cache_bypass $http_upgrade; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; } location /ext-resources/modules { alias /opt/team-nav/ext-resources/modules; index index.html index.htm; } }
|
一般来说只修改域名即可
从源码构建一体jar包
基于Rocky Linux 9
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| dnf install git maven java-1.8.0-openjdk -y
dnf module install nodejs:20 -y
dnf install npm -y
# 安装依赖
cd ~
git clone https://github.com/tuituidan/team-nav.git
cd team-nav/web
npm install
npm install @vue/cli-service -g
cd ..
mvn clean package -Dmaven.npm.skip=false
|
在 /root/team-nav/target/jpack/ 目录下有Linux部署的压缩包。
构建Docker镜像(要先操作完上面)
1 2 3 4 5 6 7 8
| cd team-nav
cat Dockerfile
docker build -t team-nav:2.0.2 .
|