笔上云世界微服务版

news2025/1/6 23:56:33

目录

一、项目背景

二、项目功能

一功能介绍

三、环境准备

• 需要开发的端口

• 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博客

三 项目一些演示图

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL Server 数据库 忘记密码

1、先用windows 身份验证 连接 2、安全性--登录名 3、设置 身份验证 4、重启电脑 5、登录 登陆成功!!! ------------------------------------------------------------------ --1、查询登录账号信息 ------------------------------------------------------------------ -- …

windows安装并配置Maven

Maven官网下载 https://maven.apache.org 将下载好的解压到自己想要存放的路径中(路径中不要有中文或者影响环境的字符) 在此目录内新建一个名为repository的文件夹,此文件的目的是作为本地Maven的仓库来使用 配置环境变量 按下windows加r键…

Huginn - 构建代理、执行自动化任务

文章目录 一、关于 Huginn什么是Huginn?Huginn 功能加入Huginn展示 二、安装1、Docker2、本地安装3、开发 三、使用Huginn代理gems四、部署1、Heroku2、OpenShiftOpenShift 在线 3、在任何服务器上手动安装4、可选设置4.1 私人开发设置4.2 启用WeatherAgent4.3 禁用…

Android Glide判断当前运行环境是否为主线程的工具方法,Kotlin

Android Glide判断当前运行环境是否为主线程的工具方法,Kotlin private fun assertMainThread() {if (!isOnMainThread()) {throw IllegalArgumentException("You must call this method on the main thread");}}private fun isOnMainThread(): Boolean {…

Visual Point Cloud Forecasting enables Scalable Autonomous Driving——点云论文阅读(12)

此内容是论文总结,重点看思路!! 文章概述 这篇文章介绍了一个名为 ViDAR 的视觉点云预测框架,它通过预测历史视觉输入生成未来点云,作为自动驾驶的预训练任务。ViDAR 集成了语义、三维几何和时间动态信息,有效提升了感知、预测和规划等自动驾驶核心任务的性能。实验表明…

MacBook_Xcode_Swift雨燕

Swift Swift Swift Swift是苹果公司开发的现代化编程语言, 专为Apple平台设计。其简洁语法、类型安全、Optionals处理、Playgrounds交互式环境、泛型编程、协议与扩展、闭包功能、枚举与关联值、结构体与类的高效内存管理、异步编程的async/await语法、Swift Packa…

STM32完全学习——使用LIBJPEG库解码图片

一、有关配置 这个库的移植可以说是,很简单,直接使用CubMAX工具就可以帮我们生成移植好的代码,如果你想移植到其他平台,将CubMAX生成的那几个文件拷到你的工程里面就可以了。主要是这个如何使用起来,其实也不难&#…

验证码识别插件 - captcha-killer

验证码识别插件 - captcha-killer 简介 captcha-killer 是一款用于 Burpsuite 的验证码识别插件。它的主要功能是调用各种验证码识别接口,以便在进行渗透测试时能够自动识别和绕过验证码。这个插件本身并不直接进行验证码的识别,而是通过调用外部的 OC…

unity团结云下载项目

今天开plastic scm发现它云服务好像停了哈,在hub里下载云端项目也不会出现在项目列表里,之前也有发邮件说让提前迁移到团结云。打开云仓库会弹这个,大概就是plastic scm无法解析域名地址吧 研究了一下团结云咋使,官方手册看半天也…

【VUE】使用create-vue快速创建一个vue + vite +vue-route 等其他查看的工程

create-vue 简介 GitHub:https://github.com/vuejs/create-vue 创建的选项有多个,具体的可以看下方截图,当创建完成的时候可以发现工程中是自带vite的。 下面对其中的各种内容进行简单的说明 JSX (可以选择,但是我感觉没什么必要) 全称:JavaScript XML 允许你在 Java…

RIP配置实验

RIP配置实验 案例简介 天一公司下属三个分公司,属于不同的地区,三个公司之间用路由器连接,路由器名称分别为分别为 Router0、Router1、Router2,请把一公司的部门pc0,通过二公司路由器,连接三公司的部门pc1,公司之间通…

video.js视频播放上手

html案例 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>videojs视频播放</title> </head> <link href"https://cdnjs.cloudflare.com/ajax/libs/video.js/7.3.0/video-js.min.cs…

Introducing Optimization

Chapter6&#xff1a;Introducing Optimization 声明&#xff1a;本篇博客笔记来源于《Neural Networks from scratch in Python》&#xff0c;作者的youtube 其实关于神经网络的入门博主已经写过几篇了&#xff0c;这里就不再赘述&#xff0c;附上链接。 1.一文窥见神经网络 2…

解决Git中没有小绿勾与红叉叉的问题

一、检查自己的软件 必须安装Git和Tortoisegit&#xff08;也就是俗称的小乌龟&#xff09;这两个软件。 Git的下载地址&#xff1a; CNPM Binaries Mirrorhttps://registry.npmmirror.com/binary.html?pathgit-for-windows/ 寻找与自己电脑相配的软件版本就可以了。 Tor…

向量数据库技术

前言 这里有一些狗&#xff0c;熟悉犬类的朋友应该能很快区分出它们的品种&#xff0c;我们之所以能做到这一点&#xff0c;是因为我们会从不同的角度来观察它们的特征。 比如体型的大小&#xff0c;如果我们使用一个坐标轴来表示这个特征&#xff0c;这些狗将落在不同的坐标点…

算法攻略:顺序表的进阶之路——移除元素

题目如下&#xff1a; 思路&#xff1a; 双指针法 nums[src] val&#xff0c;srcnums[src] ! val&#xff0c;src的值赋值给dst&#xff0c;src和dst都 注&#xff1a; 1&#xff09;双指针法&#xff1a;只是抽象出了两个指向数组的变量&#xff0c;并不是真的指针。 2&#…

docker Error response from daemon

问题 Error response from daemon: Get "https://index.docker.io/v1/search?qnginx&n25": read tcp 192.168.50.233:54354->54.198.86.24:443: read: connection reset by peer Unable to find image redis:latest locally docker: Error response from d…

【HTML】Day02

【HTML】Day02 1. 列表标签1.1 无序列表1.2 有序列表1.3 定义列表 2. 表格标签2.1 合并单元格 3. 表单标签3.1 input标签基本使用3.2 上传多个文件 4. 下拉菜单、文本域5. label标签6. 按钮button7. div与span、字符实体字符实体 1. 列表标签 作用&#xff1a;布局内容排列整齐…

iOS 11 中的 HEIF 图像格式 - 您需要了解的内容

HEIF&#xff0c;也称为高效图像格式&#xff0c;是iOS 11 之后发布的新图像格式&#xff0c;以能够在不压缩图像质量的情况下以较小尺寸保存照片而闻名。换句话说&#xff0c;HEIF 图像格式可以具有相同或更好的照片质量&#xff0c;同时比 JPEG、PNG、GIF、TIFF 占用更少的设…