PmHub 是一套基于 SpringCloud Alibaba 分布式微服务 & LLM 的智能项目管理系统,这个项目旨在让同学们快速掌握微服务/分布式项目的架构设计和开发流程,如果想在校招或者社招中拿到一个满意的 offer,PmHub 将是一个非常 nice 的选择。
PmHub 包括用户、流程、项目管理、认证等服务。包含了 Redis 缓存、RocketMQ 消息队列、Docker 容器化、Jenkins 自动化部署、Spring Security 安全框架、Nacos 服务注册和发现、Elasticsearch 搜索引擎、Kibana 可视化工具、Zipkin 链路追踪、OAuth2 统一认证、Vue3 前端框架等互联网开发中需要用到的主流技术栈,可以帮助同学们快速掌握微服务/分布式项目的核心知识点。
如果对开源项目感兴趣,可以关注二哥的另外一个实战项目:技术派,一个前后端分离的社区项目。GitHub 上已经星标 1.5k+,不少同学就是靠这个项目在往年的校招中拿到了不错的 offer。
为了方便大家循序渐进式的学习,我们将会推出两个版本:
- 单体架构版本:适合初学者,直接运行 pmhub-admin 中的 PmhubApplication 类即可。
- 微服务架构版本:适合有一定基础,想进阶学习微服务/分布式的同学,可以分别启动用户、流程、项目管理、认证等多个服务。
可以根据自己的实际情况选择合适的版本进行学习,我们将会倾其所有,在第一时间帮助大家解决所有学习过程遇到的问题,让你的学习曲线变得非常丝滑😁。
此为 PmHub 单体版本说明文档!微服务版本说明文档请移步:https://github.com/laigeoffer/pmhub
来个 offer 组织由二哥发起,苍何主理,旨在帮助同学们在校招、社招中拿到满意的 offer。
- 二哥,原创公众号“沉默王二”累计 18 万+ 读者,GitHub 星标 11000+ 开源知识库《二哥的 Java 进阶之路》作者,帮助很多很多同学成功拿到满意的 offer。
- 苍何,原创公众号“苍何”作者,前大厂高级开发,曾就职于蚂蚁金服,科大讯飞,现国企技术总监,技术、管理、面试经验丰富。
加入二哥的编程星球后,即可解锁来个 offer 组织下的所有项目的付费文档,以及 1 对 1 的技术面试辅导服务。
项目 | 码云 | GitHub | 简介 |
---|---|---|---|
PmHub | Gitee | GitHub | 一套智能项目管理系统,即将帮助不少同学在接下来的校招/社招中斩获满意 offer。 |
技术派 | Gitee | GitHub | 一个前后端分离的社区项目,帮助过不少同学在秋招中斩获满意 offer。 |
下面这张系统架构图可以帮助大家快速了解 PmHub 项目的组织架构,从前端到网关、从服务应用到基础服务、从存储技术到运维部署,可以说是一目了然。
优质的项目,离不开一张清晰的鸟瞰图(😄)。
- 项目仓库(GitHub):https://github.com/laigeoffer/pmhub
- 项目仓库(码云):https://gitee.com/laigeoffer/pmhub (国内访问速度更快)
- 项目演示地址:https://pmhub.laigeoffer.cn(微信搜索「苍何」,关注我们的公众号,回复
pmhub
获取账号和密码,帮我们增加一个粉丝,哈哈哈,开源不易,请满足一下我的虚荣心(😁)。)
pmhub
├── pmhub-admin -- 核心配置,如:国际化、mybatis、日志、swagger及配置文件
├── pmhub-common -- 通用组件都放在这个模块,各模块公共方法、注解、配置、常量、模型转换、异常、过滤器,全局预防 xss 脚本攻击
├── pmhub-workflow -- 流程管理模块,包含流程分类、表单设计、流程设计、部署管理
├── pmhub-framework -- 关于框架相关功能都在这个模块,如多数据源配置,限流处理、MybatisPlus、redis、连接池配置等
├── pmhub-generator -- 代码生成相关控制器及配置
├── pmhub-oa -- 企微绑定以及第三方 OA 系统绑定,统一登录认证中心
├── pmhub-project -- 涉及项目管理,任务管理、项目设置,任务流转等
├── pmhub-quartz -- 定时任务调度中心
├── pmhub-system -- 对应系统管理模块,含用户管理、角色管理、日志管理等
├── pmhub-ui -- 前端项目源码
微服务版本请参考:微服务版本部署手册
- JDK 1.8
- Maven 3.6
- MySQL 5.7
- Redis 6.0
- RocketMQ 5.0.4
①、使用 Git 命令
网络比较通畅的小伙伴可以直接从 GitHub 上拉取,命令如下:
git clone [email protected]:laigeoffer/pmhub.git
国内的小伙伴也可以直接使用码云 Gitee 上的镜像仓库地址拉取:
git clone https://gitee.com/laigeoffer/pmhub.git
②、直接下载压缩包
也可以直接下载 GitHub 上的压缩包,然后解压到本地。
③、直接通过 GitHub 桌面版
我个人一直比较喜欢实用 GitHub 桌面版来管理仓库,图形化界面操作起来也比较舒服。
这一步应该就不需要我多讲了,相信大家都能搞定。
推荐大家使用 Navicat 这款图形化数据库管理工具。
①、创建数据库 laigeoffer-pmhub
也可以是其他名字,只要在配置文件里修改对应的数据库名即可。
②、导入数据库文件,路径在 pmhub/sql/pmhub_20240305.sql
可以直接右键在 terminal 终端中打开,然后通过 pwd 和 ls 命令查看文件的绝对路径。
拿到绝对路径后,就可以在 Navicat 中导入数据库文件了。
导入完成后,刷新一下就可以看到最新的数据库表了。
在 pmhub/pmhub-admin/src/main/resources/application-local.yml 中修改数据库连接信息。
- 如果数据库名也是 laigeoffer-pmhub,那么只需要修改用户名和密码即可。
- 如果用户名也是 root,那么只需要修改密码即可。
- 如果密码也一样,那么就不需要修改了(不可能,绝对不可能这么巧😂)。
①、如果你是 macOS 用户,可以直接在终端输入redis-server
启动 Redis。
②、如果你是 Windows 用户,可以直接双击 redis-server.exe 启动 Redis。
找到 PmhubApplication 类,右键 Run PmhubApplication.main()。
如果出现以下的日志,表明项目已经启动成功了。
请参考 pmhub-ui 项目的 README.md 文档,前端工程结构说明
http://localhost:1024/dev-api/swagger-ui/index.html
这里统一以 Debian 系统为例,Centos 系统自行替换操作命令即可!
1、更新软件包索引:
sudo apt update
2、安装一些必要的软件包,这些软件包允许apt通过HTTPS使用仓库:
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
3、添加Docker的官方GPG密钥:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
4、设置稳定版仓库:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
5、再次更新软件包索引以包含Docker仓库:
sudo apt update
6、安装Docker Engine:
sudo apt install docker-ce docker-ce-cli containerd.io
7、验证Docker是否安装成功:
sudo docker run hello-world
这条命令会下载一个测试镜像并在容器中运行,如果安装正确,您将看到欢迎信息。
安装启动命令:
1、安装 mysql
docker pull mysql:5.7
2、运行容器(详细启动挂载如下)
docker run -p 3306:3306 --name mysql \
-v /home/mysql/log:/var/log/mysql \
-v /home/mysql/data:/var/lib/mysql \
--memory 1.5g \
--restart=always \
-e MYSQL_ROOT_PASSWORD=设置mysql密码 -d mysql:5.7
3、阿里云开启安全组
4、防火墙
ufw allow 33706/tcp
运行容器各部分解释:
# 将容器的 3306 端口映射到主机的 3306 端口,这样就可以通过主机的 IP 地址和端口号访问 MySQL 服务。
# 指定容器的名称为 mysql,方便后续管理和操作
docker run -p 3306:3306 --name mysql \
# 将主机的 /home/mysql/log 目录挂载到容器的 /var/log/mysql 目录,用于存储 MySQL 的日志文件。
-v /home/mysql/log:/var/log/mysql \
# 将主机的 /home/mysql/data 目录挂载到容器的 /var/lib/mysql 目录,用于存储 MySQL 的数据文件。
-v /home/mysql/data:/var/lib/mysql \
# 设置 MySQL 的 root 用户密码为 root。这个参数使用了环境变量来传递密码信息。
-e MYSOL_ROOT_PASSWORD=123456 \
# 以后台模式运行 MySQL 容器,
-d
# 内存限制
--memory
# 内存保留
--memory-reservation
特别注意: 端口请设置为非3306,密码尽量设置复杂一些,否则数据库服务很可能被勒索攻击,另外如果可能的话,推荐将数据服务和应用服务分开不要放在一个容易或者一个服务器中。
1、安装redis
docker pull redis
2、启动
docker run --name redis -d -p 6379:6379 redis
3、云服务器安全组
4、开启6379防火墙端口
ufw allow 6379/tcp
先要将 pmhub 上传到你的服务器,或者使用 git clone 拉取最新代码
# 进入项目目录(进入 pmhub 的路径)
cd /var/lib/xxx/xxx/pmhub
1、打包构建项目
mvn -T 1C clean package -Dmaven.test.skip=true -Dmaven.compile.fork=true
2、构建镜像
mkdir -p build
cp pmhub-admin/target/*.jar build/app.jar
cp Dockerfile.prod build/Dockerfile
cd build
docker build -t pmhub:latest .
3、运行容器
docker run -p 8010:8010 --name pmhub \
-v /home/pmhub:/data \
-d pmhub:latest
4、开启8010端口安全组
5、开启8010端口防火墙
ufw allow 5010/tcp
6、查看容器
docker ps
7、查看容器日志
docker logs pmhub
特别注意: 因 build 需要过多资源且比较慢,如果服务器内存比较小(比如只有2G)推荐采用本地构建后上传到服务器。
npm run build:prod
把 dist 上传到服务器同级目录下,如果需要域名访问,配置Nginx就可以直接访问啦!
后端技术栈
PmHub 教程共 100+ 篇,从中整理出 15 篇,供大家免费学习。
- (🌟 新人必看)PmHub 系统架构&功能模块一览
- (🌟 新人必看)小白如何学习 PmHub
- (🌟 新人必看)如何将 PmHub 写入简历
- (🌟 新人必看)PmHub 架构方案设计
- (🌟 新人必看)PmHub 技术方案设计
- (🌟 新人必看)PmHub 项目管理流程
- (🌟 新人必看)PmHub 分层架构
- (🌟 新人必看)PmHub 项目工程搭建手册
- (👍 强烈推荐)PmHub 企业微信自动登录
- (👍 强烈推荐)PmHub Mysql/Redis缓存一致性
- (👍 强烈推荐)PmHub 消息队列 Rocketmq
- (👍 强烈推荐)PmHub 实现接入 flowable 流程管理
- (👍 强烈推荐)PmHub 分布式事务实现
- (👍 强烈推荐)PmHub 定时任务实现
- (👍 扬帆起航)送给坚持到最后的自己,一起杨帆起航
工具 | 说明 | 官网 |
---|---|---|
IDEA | java开发工具 | https://www.jetbrains.com |
visualstudio | web开发工具 | https://code.visualstudio.com/ |
Chrome | 浏览器 | https://www.google.com/intl/zh-CN/chrome |
ScreenToGif | gif录屏 | https://www.screentogif.com |
SniPaste | 截图 | https://www.snipaste.com |
PicPick | 图片处理工具 | https://picpick.app |
MarkText | markdown编辑器 | https://github.com/marktext/marktext |
curl | http终端请求 | https://curl.se |
Postman | API接口调试 | https://www.postman.com |
draw.io | 流程图、架构图绘制 | https://www.diagrams.net/ |
Axure | 原型图设计工具 | https://www.axure.com |
navicat | 数据库连接工具 | https://www.navicat.com |
DBeaver | 免费开源的数据库连接工具 | https://dbeaver.io |
iTerm2 | mac终端 | https://iterm2.com |
windows terminal | win终端 | https://learn.microsoft.com/en-us/windows/terminal/install |
SwitchHosts | host管理 | https://github.com/oldj/SwitchHosts/releases |
工具 | 版本 | 下载 |
---|---|---|
jdk | 1.8+ | https://www.oracle.com/java/technologies/downloads/#java8 |
maven | 3.4+ | https://maven.apache.org/ |
mysql | 5.7+/8.0+ | https://www.mysql.com/downloads/ |
redis | 5.0+ | https://redis.io/download/ |
elasticsearch | 8.0.0+ | https://www.elastic.co/cn/downloads/elasticsearch |
nginx | 1.10+ | https://nginx.org/en/download.html |
rocketmq | 5.0.4+ | https://www.rabbitmq.com/news.html |
ali-oss | 3.15.1 | https://help.aliyun.com/document_detail/31946.html |
git | 2.34.1 | http://github.com/ |
docker | 4.10.0+ | https://docs.docker.com/desktop/ |
freessl | https证书 | https://freessl.cn/ |
- 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
- 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
- 岗位管理:配置系统用户所属担任职务。
- 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
- 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
- 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
- 参数管理:对系统动态配置常用参数。
- 通知公告:系统通知公告信息发布维护。
- 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
- 登录日志:系统登录日志记录查询包含登录异常。
- 在线用户:当前系统中活跃用户状态监控。
- 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
- 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
- 系统接口:根据业务代码自动生成相关的api接口文档。
- 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
- 缓存监控:对系统的缓存信息查询,命令统计等。
- 在线构建器:拖动表单元素生成相应的HTML代码。
- 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。
- laigeoffer :🚀🚀🚀来个 offer 官方社区,这里汇集了很多的校招/社招优质项目,助力学生党和工作党拿个更好的 offer💪🏻
- paicoding :⭐️一款好用又强大的开源社区,基于 Spring Boot、MyBatis-Plus、MySQL、Redis、ElasticSearch、MongoDB、Docker、RabbitMQ 等主流技术栈
- toBeBetterjavaer :一份通俗易懂、风趣幽默的Java学习指南,内容涵盖Java基础、Java并发编程、Java虚拟机、Java企业级开发、Java面试等核心知识点。学Java,就认准二哥的Java进阶之路😄
感谢所有参与开源贡献的小伙伴,PmHub 因你们而更强大!
微信搜 苍何 或扫描下方二维码关注苍何的原创公众号,回复 666 即可免费领取 2000G 编程学习资源。
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
Copyright (c) 2023-2024 PmHub(苍何、沉默王二)