当前位置: 首页 > news >正文

笔上云世界微服务版

目录

一、项目背景

二、项目功能

一功能介绍

三、环境准备

• 需要开发的端口

• Mysql

导入数据库

​编辑

• Redis

​编辑

• RabbitMQ

​编辑

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

• Nacos

• Nginx

四、前端部署

五、后端部署

六、测试计划操作

一功能测试

二 自动化测试

三 项目一些演示图


一、项目背景


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

二、项目功能

一功能介绍


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

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

三、环境准备

• 需要开发的端口

• Mysql

yum -y install unzipyum -y install lrzszyum -y install mysql80-community-release-el7-11.noarch.rpmyum  -y install mysql-community-serversystemctl start mysqldgrep "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安装Redisyum -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
#测试
erlwget --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.rpmrabbitmq-plugins enable rabbitmq_management
#启动
service rabbitmq-server starthttp://162.14.71.227:15672/ (15672 为默认端⼝号,云服务器需要开启端⼝)
默认⽤⼾名和密码都是:guest
添加⽤⼾admin,密码:admin
rabbitmqctl add_user admin adminrabbitmqctl 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#若报错,将安装java8yum 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# lsblog-html.ziproot@iZ2vc7a1n9gvhfp589oav7Z: /var/www/blog# unzip blog-html.zip  #解压/var/www/blog/blog-html# pwd     #查看路径/var/www/blog/blog-html
# 修改nginx配置文件cd /etc/nginx/lsvim nginx.conf#修改完在重新启动

修改完效果如图

五、后端部署

1 修改代码(可跳过)

 #
基础配置server:port: 9090spring:application:name: blog-servicedatasource:url: jdbc:mysql://127.0.0.1:3306/spring_cloud_blog?characterEncoding=utf8&useSSL=falseusername: rootpassword: ${mysql.password}driver-class-name: com.mysql.cj.jdbc.Drivercloud:nacos:discovery:server-addr: ${nacos.address}mybatis-plus:configuration:map-underscore-to-camel-case: truelog-impl: org.apache.ibatis.logging.stdout.StdOutImpllogging:file:name: blog.log--
#
开发环境spring:config:activate:on-profile: devnacos:address: 47.108.157.13:8848mysql:password: rootserver:port: 8080spring:application:name: user-servicedatasource:url: jdbc:mysql://127.0.0.1:3306/spring_cloud_user?characterEncoding=utf8&useSSL=falseusername: rootpassword: ${mysql.password}driver-class-name: com.mysql.cj.jdbc.Driverdata:redis:host: 127.0.0.1port: 6379timeout: 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: truelog-impl: org.apache.ibatis.logging.stdout.StdOutImpllogging: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博客

三 项目一些演示图

相关文章:

笔上云世界微服务版

目录 一、项目背景 二、项目功能 一功能介绍 三、环境准备 • 需要开发的端口 • Mysql 导入数据库 ​编辑 • Redis ​编辑 • RabbitMQ ​编辑 在创建blog虚拟主机(方法如下) • Nacos • Nginx 四、前端部署 五、后端部署 六、测试计划操作 一功能测试 二…...

linux安装redis及Python操作redis

目录 一、Redis安装 1、下载安装包 2、解压文件 3、迁移文件夹 4、编译 5、管理redis文件 6、修改配置文件 7、启动Redis 8、将redis服务交给systemd管理 二、Redis介绍 1、数据结构 ①字符串String ②列表List ③哈希Hash ④集合Set ⑤有序集合Sorted Set 2、…...

node.js内置模块之---stream 模块

stream 模块的作用 在 Node.js 中,stream 模块是一个用于处理流(stream)的核心模块。流是一种处理数据的抽象方式,允许程序处理大量数据时不会一次性将所有数据加载到内存中,从而提高性能和内存效率。通过流&#xff0…...

《learn_the_architecture_-_aarch64_exception_model》学习笔记

1.当发生异常时,异常级别可以增加或保持不变,永远无法通过异常来转移到较低的权限级别。从异常返回时,异常级别可能会降低或保持不变,永远无法通过从异常返回来移动到更高的权限级别。EL0级不进行异常处理,异常必须在比…...

【C++项目实战】贪吃蛇小游戏

一、引言 贪吃蛇,这款经典的电子游戏,自1976年诞生以来,一直受到全球玩家的喜爱。它的规则简单,玩法直观,但同时也充满了挑战性。在这篇文章中,我们将一起探索如何开发一个贪吃蛇游戏,无论是作为…...

Python基于matplotlib实现树形图的绘制

在Python中,你可以使用matplotlib库来绘制树形图(Tree Diagram)。虽然matplotlib本身没有专门的树形图绘制函数,但你可以通过组合不同的图形元素(如线条和文本)来实现这一点。 以下是一个简单的示例&#…...

【UE5 C++课程系列笔记】21——弱指针的简单使用

目录 概念 声明和初始化 转换为共享指针 打破循环引用 弱指针使用警告 概念 在UE C 中,弱指针(TWeakPtr )也是一种智能指针类型,主要用于解决循环引用问题以及在不需要强引用保证对象始终有效的场景下,提供一种可…...

【游戏设计原理】46 - 魔杖

幻想,人们可以通过多种形式来引发,比如文字,图片,绘画,语言等,但游戏与以上这些形式的区别,正如游戏与其他艺术形式的区别一样,游戏作为一种艺术和娱乐形式,其独特之处在…...

【路径跟踪】PIDMPC

路径跟踪(Path Tracking)是指在实际行驶过程中,根据预先规划好的路径进行控制,能够沿着设定的路径行驶。常见的路径跟踪算法包括基于模型的控制方法(如PID控制器)、模型预测控制(Model Predicti…...

Spring源码分析之事件机制——观察者模式(二)

目录 获取监听器的入口方法 实际检索监听器的核心方法 监听器类型检查方法 监听器的注册过程 监听器的存储结构 过程总结 Spring源码分析之事件机制——观察者模式(一)-CSDN博客 Spring源码分析之事件机制——观察者模式(二&#xff…...

热备份路由HSRP及配置案例

✍作者:柒烨带你飞 💪格言:生活的情况越艰难,我越感到自己更坚强;我这个人走得很慢,但我从不后退。 📜系列专栏:网路安全入门系列 目录 一,HSRP的相关概念二,…...

仿生的群体智能算法总结之三(十种)

群体智能算法是一类通过模拟自然界中的群体行为来解决复杂优化问题的方法。以下是30种常见的群体智能算法,本文汇总第21-30种。接上文 : 编号 算法名称(英文) 算法名称(中文) 年份 作者 1 Ant Colony Optimization (ACO) 蚁群优化算法 1991 Marco Dorigo 2 Particle Swar…...

CentOS 7系统 OpenSSH和OpenSSL版本升级指南

文章目录 CentOS 7系统 OpenSSH和OpenSSL版本升级指南环境说明当前系统版本当前组件版本 现存安全漏洞升级目标版本升级准备工作OpenSSL升级步骤1. 下载和解压2. 编译安装3. 配置环境 OpenSSH升级步骤1. 下载和解压2. 编译安装3. 创建systemd服务配置4. 更新SSH配置文件5. 设置…...

【专题】2024年出口跨境电商促销趋势白皮书报告汇总PDF洞察(附原数据表)

原文链接:https://tecdat.cn/?p38722 在当今全球化加速演进、数字经济蓬勃发展的大背景下,跨境电商行业正以前所未有的态势重塑国际贸易格局,成为各方瞩目的焦点领域。 根据亚马逊发布的《2024年出口跨境电商促销趋势白皮书》,…...

【Ubuntu】不能连上网络

1. ping路由器的IP地址 ping 192.168.1.1 如果ping不通的话,可能是网络故障导致的。需要重启配置ip地址。配置文件 sudo vi /etc/network/interface 2. ping 8.8.8.8 如果ping不通的话,可能是路由器不能链接往外网; 或者路由器显示了当…...

CSS3 框大小

CSS3 框大小 CSS3 是网页设计和开发中不可或缺的一部分,它为开发者提供了更多样化、更灵活的样式和布局选择。在 CSS3 中,框大小(Box Sizing)是一个重要的概念,它决定了元素内容的宽度和高度以及元素整体的大小。本文将详细介绍 CSS3 框大小的概念、用法以及最佳实践。 …...

联发科MTK6771/MT6771安卓核心板规格参数介绍

MT6771,也被称为Helio P60,是联发科技(MediaTek)推出的一款中央处理器(CPU)芯片,可运行 android9.0 操作系统的 4G AI 安卓智能模块。MT6771芯片采用了12纳米工艺制造,拥有八个ARM Cortex-A73和Cortex-A53核心,主频分别…...

python中的时间模块--datetime模块、time模块

python中的时间模块 一.datetime模块二.time模块 一.datetime模块 引入时间模块 from datetime import datetime获取当前时间 print(datetime.today()) # 前的日期和时间 print(datetime.now()) # 当前的日期和时间 print(datetime.now().year) # 当前的年份 print(datetime…...

CV 处理全流程:从数据采集到模型部署的整个过程,体现全面性

CV 处理全流程:从数据采集到模型部署的整个过程,体现全面性 Numpy广播 OpenCV - Python归一化提取ROI(感兴趣区域)分离和合并通道 Pytorch 基础算子自动梯度计算 CV 全流程图像数据采集1. 确认目标2. 分析过程(使用目标-手段分析法&#xff0…...

OWASP ZAP之API 请求基础知识

ZAP API 提供对 ZAP 大部分核心功能的访问,例如主动扫描器和蜘蛛。ZAP API 在守护进程模式和桌面模式下默认启用。如果您使用 ZAP 桌面,则可以通过访问以下屏幕来配置 API: Tools -> Options -> API。 ZAP 需要 API 密钥才能通过 REST API 执行特定操作。必须在所有 …...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

无法与IP建立连接,未能下载VSCode服务器

如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂&#xff…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...