笔上云世界微服务版

目录

一、项目背景

二、项目功能

一功能介绍

三、环境准备

• 需要开发的端口

• Mysql

导入数据库

​编辑

• Redis

​编辑

• RabbitMQ

​编辑

在创建blog虚拟主机(方法如下)

• Nacos

• Nginx

四、前端部署

五、后端部署

六、测试计划操作

一功能测试

二 自动化测试

三 项目一些演示图


一、项目背景


笔上云世界采用前后端分离的方法来实现,同时使用了数据库来存储相关的数据,同时将其部署到云服务器上。前端主要有四个页面构成:登录页、列表页、详情页以及编辑页,以上模拟实现了最简单的大众博客系统。其结合后端实现了以下的主要功能:登录、编辑博客、注销、删除博客、以及强制登录等功能。
但是该项目没有设计用户注册功能,只能提前在数据库中存储用户信息后经过校验登录;并且用户头像不能自己设定,在进行前端页面的书写过程中已经将头像的图片写为静态了;而用户信息中的文章数以及分类数也没有在后端中具体实现,直接在前端页面中写为了静态的。
该个人博客系统可以实现个人用户简单的博客记录,时间、标题、内容以及发布者等都可以进行详细地查看,该项目是在springboot的基础上进行项目迁移成spring cloud而形成的。

二、项目功能

一功能介绍


该笔上云世界主要实现了以下几个功能:登录,写博客以及用户管理等功能。

登录功能:用户名以及密码已经在后端写入了数据库,没有实现账户注册功能,即:用户名以及密码是已经存在的。登录成功后就会跳转到列表页面。在右上角存在主页和写博客两个按钮,但是在未登录情况下按下均只会跳转到登录页面。
列表页面:可以在列表页查看有限数量的博客简介,其包括博客标题、发布时间以及内容概要。在左侧可以看到登录的用户以及文章数、分类数等的模块。在右上角有主页、写博客和注销三个功能:主页即列表页,写博客即博客编辑页,注销即注销用户,回到登录页面。
详情页面:在列表页面点击“查看全文”按钮就会跳转到详情页,此时就可以看到该篇博客的完整内容。在右上角同样有主页、写博客、删除和注销四个功能:删除即删除该篇博客,删除之后就会跳转到列表页面,该篇博客就被成功删除。
写博客:在登录之后的任意界面点击“写博客”之后就会进入博客编辑页面,此时就可以进行博客的编写,点击“发布文章”后就可以成功发布文章,此时就会跳转到列表页。

三、环境准备

• 需要开发的端口

• Mysql

yum -y install unzip

yum -y install lrzsz

yum -y install mysql80-community-release-el7-11.noarch.rpm

 yum  -y install mysql-community-server


 systemctl start mysqld


grep "password" /var/log/mysqld.log
2024-01-29T10:43:55.523053Z 6 [Note] [MY-010454] [Server] A temporary password 
&hpkaqO:c4oK   #默认⽣成的密码

#登录数据库
mysql -uroot -p

#修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

导入数据库

-- 用户服务数据库
create database if not exists spring_cloud_user charset utf8mb4;

use spring_cloud_user;
-- 用户表
DROP TABLE IF EXISTS spring_cloud_user.user_info;
CREATE TABLE spring_cloud_user.user_info(
        `id` INT NOT NULL AUTO_INCREMENT,
        `user_name` VARCHAR ( 128 ) NOT NULL,
        `password` VARCHAR ( 128 ) NOT NULL,
        `github_url` VARCHAR ( 128 ) NULL,
        `email` VARCHAR ( 128 ) NULL,
        `delete_flag` TINYINT ( 4 ) NULL DEFAULT 0,
        `create_time` DATETIME DEFAULT now(),
        `update_time` DATETIME DEFAULT now() ON UPDATE now(),
        PRIMARY KEY ( id ),
UNIQUE INDEX user_name_UNIQUE (user_name ASC )) ENGINE = INNODB DEFAULT CHARACTER 
SET = utf8mb4 COMMENT = '用户表';

-- 新增用户信息
insert into spring_cloud_user.user_info (user_name, password,github_url)values("zhangsan","11eb2423c6064044aaa1df7ed6156331d1244f113ad54a982cb0215e0af22b68","https://gitee.com/ss190720173");
insert into spring_cloud_user.user_info (user_name, password,github_url)values("lisi","25ce8e32469c4bdb9868c182b6164d3006de2cb47383384df8279e7cfc251d9d","https://gitee.com/ss190720173");


-- 博客服务数据库
create database if not exists spring_cloud_blog charset utf8mb4;

use spring_cloud_blog;

-- 博客表
drop table if exists spring_cloud_blog.blog_info;
CREATE TABLE spring_cloud_blog.blog_info (
  `id` INT NOT NULL AUTO_INCREMENT,
  `title` VARCHAR(200) NULL,
  `content` TEXT NULL,
  `user_id` INT(11) NULL,
  `delete_flag` TINYINT(4) NULL DEFAULT 0,
  `create_time` DATETIME DEFAULT now(),
  `update_time` DATETIME DEFAULT now() ON UPDATE now(),
  PRIMARY KEY (id))
ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '博客表';



insert into spring_cloud_blog.blog_info (title,content,user_id) values("第一篇博客","111我是博客正文我是博客正文我是博客正文",1);
insert into spring_cloud_blog.blog_info (title,content,user_id) values("第二篇博客","222我是博客正文我是博客正文我是博客正文",2);

• Redis

#使⽤yum安装Redis
 yum -y install redis
#启动redis
systemctl start redis

• RabbitMQ

wget --content-disposition "https://packagecloud.io/rabbitmq/erlang/packages/el/7/erlang-23.3.4.11-1.el7.x86_64.rpm/download.rpm?distro_version_id=140"

yum localinstall erlang-23.3.4.11-1.el7.x86_64.rpm
#测试
erl

wget --content-disposition  "https://packagecloud.io/rabbitmq/rabbitmq-server/packages/el/7/rabbitmq-server-3.8.30-1.el7.noarch.rpm/download.rpm?distro_version_id=140"

yum localinstall rabbitmq-server-3.8.30-1.el7.noarch.rpm



rabbitmq-plugins enable rabbitmq_management
#启动
service rabbitmq-server start

http://162.14.71.227:15672/ (15672 为默认端⼝号,云服务器需要开启端⼝)
默认⽤⼾名和密码都是:guest
添加⽤⼾admin,密码:admin
rabbitmqctl add_user admin admin

rabbitmqctl set_user_tags admin administrator

通过IP:port访问,并使⽤刚才设置的⽤⼾名和密码登录
http://162.14.71.227:15672/

在创建blog虚拟主机(方法如下)



xRabbitMQ 教你如何创建虚拟主机_rabbitmq 创建虚拟机-CSDN博客

• Nacos

https://github.com/alibaba/nacos/releases

cd /usr/local/src/

unzip nacos-server-2.2.3.zip
cd nacos/bin
#启动
sh startup.sh -m standalone

#若报错,将安装java8

yum install java-1.8.0-openjdk* -y
#测试
java -version

• Nginx

 yum -y install nginx
systemctl start nginx

四、前端部署


mkdir /var/www/blog   
创建⽂件夹
 

cd /var/www/blog/     
进⼊⽂件夹

/var/www/blog# rz -E     #
上传代码
 
root@iZ2vc7a1n9gvhfp589oav7Z:/var/www/blog# ls
 blog-html.zip

root@iZ2vc7a1n9gvhfp589oav7Z: /var/www/blog# unzip blog-html.zip  #解压


/var/www/blog/blog-html# pwd     #查看路径

/var/www/blog/blog-html
# 修改nginx配置文件
 cd /etc/nginx/
 ls
 vim nginx.conf

#修改完在重新启动

修改完效果如图

五、后端部署

1 修改代码(可跳过)

 #
基础配置
 
server:
 port: 9090
 spring:
 application:
 name: blog-service
 datasource:
 url: jdbc:mysql://127.0.0.1:3306/spring_cloud_blog?
 characterEncoding=utf8&useSSL=false
 username: root
 password: ${mysql.password}
 driver-class-name: com.mysql.cj.jdbc.Driver
 cloud:
 nacos:
 discovery:
 server-addr: ${nacos.address}
 mybatis-plus:
 configuration:
 map-underscore-to-camel-case: true
 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
 logging:
 file:
 name: blog.log--
#
开发环境
 
spring:
 config:
 activate:
 on-profile: dev
 nacos:
 address: 47.108.157.13:8848
 mysql:
 password: root


 server:
 port: 8080
 spring:
 application:
 name: user-service
 datasource:
 url: jdbc:mysql://127.0.0.1:3306/spring_cloud_user?
 characterEncoding=utf8&useSSL=false
 username: root
 password: ${mysql.password}
 driver-class-name: com.mysql.cj.jdbc.Driver
 data:
 redis:
 host: 127.0.0.1
 port: 6379
 timeout: 60s #
连接空闲超过
N(s
秒、
ms
毫秒
)
后关闭,
0
为禁⽤,这⾥配置值和
tcp
keepalive
值⼀致
 
lettuce:
 pool:
 max-active: 8  #
允许最⼤连接数
 
max-idle: 8 #
最⼤空闲连接数
, 
默认
8 
min-idle: 0  #
最⼩空闲连接数
 
max-wait: 5s  #
请求获取连接等待时间
 
rabbitmq: #
配置
RabbitMQ
的基本信息
 
addresses: ${rabbitmq.address}
 cloud:
 nacos:
 discovery:
 server-addr: ${nacos.address}
 mail:
 host: smtp.qq.com    
username: 2689241679@qq.com    
password: yzvpkrwhlmmudeeb     
#
需要在设置中开启
 smtp 
#
发件⼈的邮箱
 
default-encoding: UTF-8     
properties:
 personal: 
#
邮箱的授权码
, 
并⾮个⼈密码
 
#
字符集编码
, 
默认
 UTF-8 
mybatis-plus:
 configuration:
 map-underscore-to-camel-case: true
 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
 logging:
 file:
 name: user.log--
#
开发环境
 
spring:
 config:

2 在主项目下打包项目

3 把下面在服务器上运行

mkdir /root/spring-cloud-blog/

cd /root/spring-cloud-blog/
#部署博客服务
nohup java -jar -Dspring.profiles.active=prod blog-info-service-1.0-SNAPSHOT.jar &
#部署用户服务
nohup java -jar -Dspring.profiles.active=prod user-info-service-1.0-SNAPSHOT.jar &
#部署网关服务
nohup java -jar -Dspring.profiles.active=prod gateway-service-1.0-SNAPSHOT.jar  &

六、测试计划操作


一功能测试


1测试用例:

实际执行测试的部分操作步骤/截图
1正常登录:

2写博客测试

二 自动化测试

详细请看这篇博客

大众博客系统测试报告【项目】-CSDN博客

三 项目一些演示图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/946589.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

厦门大学联合网易提出StoryWeaver,可根据统一模型内给定的角色实现高质量的故事可视化

厦门大学联合网易提出StoryWeaver,可以根据统一模型内给定的角色实现高质量的故事可视化。可根据故事文本生成与之匹配的图像,并且确保每个角色在不同的场景中保持一致。本文的方法主要包括以下几个步骤: 角色图构建:设计一个角色…

vscode 多项目冲突:进行 vscode 工作区配置

问题:多个项目,每次打开会因为配置问题/包版本冲突,花费过长时间。 解决:可以通过启用工作区,使得各个项目的开发环境隔离。 vscode官网 对此有两种方法:方法一:启用工作区(workspa…

Unity3D仿星露谷物语开发14之Custom Property Attribute

1、目标 创建自定义属性特性,类似于[SerializeField]的属性标签。 当用该自定义属性特性标记变量时,可以在Inspector面板中看到相应的效果。 2、Property类 (1)PropertyAttribute类 propertyAttribute是Unity中用于派生自定义…

赛博周刊·2024年度工具精选(图片资源类)

1、EmojiSpark emoji表情包查找工具。 2、fluentui-emoji 微软开源的Fluent Emoji表情包。 3、开源Emoji库 一个开源的emoji库,目前拥有4000个emoji表情。 4、中国表情包大合集博物馆 一个专门收集中国表情包的项目,已收录5712张表情包,并…

RK3588,基于 Npu 实现 yolov11 Segment 推理

Ultralytics YOLO11是一款尖端的、最先进的模型,它在之前YOLO版本成功的基础上进行了构建,并引入了新功能和改进,以进一步提升性能和灵活性。YOLO11设计快速、准确且易于使用,使其成为各种物体检测和跟踪、实例分割、图像分类以及姿态估计任务的绝佳选择。 https://github.…

MySQL启动报错:发生系统错误 5。拒绝访问。

参考:https://blog.csdn.net/qq_40762011/article/details/105768798/ 1、错误样式 错误样式,如下图所示: 2、导致原因 未使用管理员角色进行此操作; 3、解决办法 3.1、临时办法 不需要更改任何东西,只需要在打开CMD命令提示符时…

数势科技:解锁数据分析 Agent 的智能密码(14/30)

一、数势科技引领数据分析变革 在当今数字化浪潮中,数据已然成为企业的核心资产,而数据分析则是挖掘这一资产价值的关键钥匙。数势科技,作为数据智能领域的领军者,以其前沿的技术与创新的产品,为企业开启了高效数据分析…

网络编程原理:回显服务器与客户端通信交互功能

文章目录 路由器及网络概念网络通信基础TCP/IP 五层协议封装和分用封装分用 网络编程(网络协议)UDP类 API使用实现回显通信程序回显服务器(UDP代码)回显客户端(UDP代码) TCP API使用回显服务器(TCP代码)回显客户端(TCP代码) 路由器及网络概念 网络发展是…

云手机+Facebook:让科技与娱乐完美结合

移动互联网时代,Facebook作为全球最大的社交媒体平台之一,早已成为企业、品牌和组织竞相角逐的营销阵地。而云手机的出现,则为Facebook营销注入了新的活力,其独特的优势让营销活动更加高效、精准且灵活。本文将深入探讨云手机在Fa…

git使用指南-实践-搭建git私服

一.创建git私服的核心基础 所谓的git私服,其实就是在一个服务器上创建一个个的git仓库,并且这些仓库允许其在一个网络上被其他用户访问。 创建一个最素的git私服:随便找一台linux服务器,这里假设其ip为192.168.0.6,使…

KAFKA入门:原理架构解析

文章目录 一、认识kafka二、架构介绍2.1 工作流程2.2 Kafka可靠性保证2.3 Kafka存储 一、认识kafka Kafka到底是个啥?用来干嘛的? 官方定义如下: Kafka is used for building real-time data pipelines and streaming apps. It is horizont…

深度学习——损失函数汇总

1. 连续值损失函数 总结:主要使用胡贝儿损失函数,应用于连续数值的预测之间的误差损失,参考地址 import torch import torch.nn as nna = torch.tensor([[1, 2], [3, 4]], dtype=torch.float) b = torch.tensor([[3, 5], [8, 6]], dtype=torch.float)loss_fn1 = torch.nn.M…

2025.01.01(IO模型分类,超时检测,抓包分析,机械臂客户端)

作业&#xff1a;基于机械臂服务器写出客户端代码并执行 #include <myhead.h> #define IP "192.168.124.62" #define PORT 8888int main(int argc, const char *argv[]) {//1.创建套接字int cfd socket(AF_INET,SOCK_STREAM,0);if(cfd-1){perror("socke…

Pandas-数据透视表

文章目录 一. Pandas透视表概述1. pivot_table函数介绍 二. 栗子-零售会员数据分析1. 案例业务介绍2. 会员存量、增量分析① group by② 透视表③ 可视化 一. Pandas透视表概述 数据透视表&#xff08;Pivot Table&#xff09;是一种交互式的表&#xff0c;可以进行某些计算&am…

STM32-笔记26-WWDG窗口看门狗

一、简介 窗口看门狗用于监测单片机程序运行时效是否精准&#xff0c;主要检测软件异常&#xff0c;一般用于需要精准检测程序运行时间的场合。 窗口看门狗的本质是一个能产生系统复位信号和提前唤醒中断的6位计数器&#xff08;有的地方说7位。其实都无所谓&#xff0…

【超好用远程工具】跨平台SSH工具WindTerm免费开源

WindTerm WindTerm概述免费开源、免费开源、免费开源下载、安装屏幕截图主窗口 &#xff08;zsh&#xff09;&#xff1a;拆分视图&#xff1a;DigeWhite 主题&#xff1a; 基本设置连接到服务器SSH 连接Telnet 连接串口连接SFTP 连接使用多标签页 高级功能脚本和自动化会话管理…

开源存储详解-分布式存储与ceph

ceph体系结构 rados&#xff1a;reliable, autonomous, distributed object storage, rados rados采用c开发 对象存储 ceph严格意义讲只提供对象存储能力&#xff0c;ceph的块存储能力实际是基于对象存储库librados的rbd 对象存储特点 对象存储采用put/get/delete&#xf…

Postman[2] 入门——界面介绍

可参考官方 文档 Postman 导航 | Postman 官方帮助文档中文版Postman 拥有各种工具、视图和控件&#xff0c;帮助你管理 API 项目。本指南是对 Postman 主要界面区域的高级概述&#xff1a;https://postman.xiniushu.com/docs/getting-started/navigating-postman 1. Header&a…

牛客网最新1129道 Java 面试题及答案整理

前言 面试&#xff0c;跳槽&#xff0c;每天都在发生&#xff0c;而对程序员来说"金三银四"更是面试和跳槽的高峰期&#xff0c;跳槽&#xff0c;更是很常见的&#xff0c;对于每个人来说&#xff0c;跳槽的意义也各不相同&#xff0c;可能是一个人更向往一个更大的…

项目总结-ElasticSearch性能优化考虑点

项目总结-ElasticSearch性能优化考虑点 一、概述二、硬件层面优化2.1 ES硬件层面-内存优化2.2 ES硬件层面-磁盘优化2.3 ES硬件层面-CPU优化2.4 ES硬件层面-网络优化 三、系统层面优化3.1 ES系统层面-文件句柄数优化3.2 ES系统层面-swap优化 四、JVM层面优化4.1 JVM层面-JVM堆大…