# eblog **Repository Path**: kkcoco/eblog ## Basic Information - **Project Name**: eblog - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-03-15 - **Last Updated**: 2025-05-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 竹隐寒烟博客 ### 介绍 假期为了搭建一个属于自己的博客系统,所编写的一个小社区。 ### 软件架构 前端基于layui提供前端社区模板,后端采用springboot构建,使用freemaker作为模板引擎。 整合了阿里云SMS发送短信、OSS服务储存头像和博客的图片(可选择是否开启,默认不开启:会存入项目根目录下的upload文件夹),email邮件服务发送激活邮件,可以通过邮件找回密码。 项目集成了webSocket即时通讯,当有用户评论了你发的文章或者评论,会进行实时提醒,可收藏,评论文章,管理员可以置顶、加精等的操作。 搜索引擎使用了elasticsearch,目前设置一天同步一次数据,修改文章即时同步,管理员也可在个人中心手动同步。 使用redis实现页面右侧本周热议的显示,显示出本周前十条最活跃的文章。并且结合tio实现社区即时群聊,支持匿名发言,可以保存一周内的100条聊天记录 用户签名调用[一言](https://hitokoto.cn/)的接口获得语句,用户注册时会自动将该语句设置为用户签名,后期用户可自行更改 发帖和评论需要审核后才能显示 ### 技术选型 1. SpringBoot 项目快速构建 2. redis 缓存长时间不会更改或不需要持久化的数据 3. elasticsearch 用做搜索引擎 4. rabbitmq 更新或新增博客时通知es更新数据 5. freemarker 页面渲染引擎 6. mysql 7. lombok 简化开发 8. MybatisPlus 操作数据库 9. MybatisPlusGenerator 代码生成器 10. HibernateValidator 数据表单校验 11. kaptcha 验证码生成 12. shiro 权限控制 13. websocket 即时通知 14. tio-websocket 通讯聊天 ### 安装教程 1. 修改application.yml、application-dev.yml配置文件中的连接信息,默认为dev环境 2. 如需更换到prod环境,则需更改application.yml文件第五行的dev为prod,并修改application-prod.yml文件的连接信息 3. 部署到服务器需注意: 1. 不使用docker-compose 1. 安装需要的docker容器,需要 Redis,ES 7.*,RabbitMQ, MySQL8,[点击查看安装教程](https://blog.csdn.net/wwwwssw_/article/details/117856750) 2. 更换到prod环境,自行修改自己的连接配置信息,在项目根目录执行:`mvn clean install -Dmaven.test.skip=true` 命令 3. 找到打好的Jar包,上传到服务器中 4. 运行 `docker build -f Dockerfile -t eblog:latest .`构建镜像,注意后面的点不要省略 5. 执行以下命令 ,启动容器。 ```sh docker run --name eblog \ --restart always \ -e JAVA_OPTS='-Xmx1g -Djasypt.encryptor.password=xxx' \ -v /mydata/docker-data/eblog/static/upload:/upload \ -v /mydata/docker-data/eblog/static/ipRegion:/ipRegion \ -v /mydata/docker-data/eblog/lib:/eblog/lib \ -p 9999:9999 \ -p 9326:9326 \ -d eblog ``` 6. 也可安装Nginx代理,编辑配置文件。nginx.conf ```sh worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name 你的域名; location /res/** { root /mydata/docker-data/eblog/static/res/; # 静态文件路径,在项目中的static中的res } location /upload/** { root /mydata/docker-data/eblog/static/upload/; # 上传的文件路径,也是docker映射的那个路径 } location / { 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_pass http://127.0.0.1:9999/; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } } ``` 2. 使用docker-compose 1. 更换到prod环境,在项目根目录执行:`mvn clean install -Dmaven.test.skip=true` 命令 2. docker-compose.yml、Dockerfile、redis.conf这几个文件和打包后的项目jar包须在一个文件夹内,如果修改了版本号等,需要自行修改Dockerfile文件 3. 需在项目jar包同级目录创建 upload、data、redis_data文件夹,data文件夹下创建elasticsearch文件夹,elasticsearch文件夹下创建data文件夹。 4. 在项目jar包同级目录输入命令 `docker-compose up -d` 运行项目(需要安装docker,可参考docker的官方文档),第一次运行用时会很长,因为需要拉取镜像 ### 参与贡献