前言
介绍邮件发送
邮箱授权码通常在:邮箱设置-账号与安全-设备管理-开启服务
然后就有授权码了
先引入依赖
xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
然后配置邮箱
xml
spring
mail:
# 指定邮件服务器地址
host: smtp.qq.com
# 登录账户
username: [email protected]
# 登录密码
password: 授权码
# 端口
port: 465
# 默认编码
default-encoding: UTF-8
# 使用的协议
protocol: smtps
注意要声明端口号不然运行不起来,这个是服务器的端口号
这样就可以了,可以写密码,不写授权码的话
然后开始测试
这样就可以了
然后就收到邮件了
我的社区,那个是发件人的名字,就是新起的一个名称
发送邮件
先把方法进行封装,在blog-comon里面
先引入依赖
xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
这个工具包无法注入JavaMailSender,因为user-service中spring扫描不到这个,或者blog-common也无法扫描这个,因为它没有spring的扫描机制
还是采用redis的使用方法,就是用构造方法,配置文件

然后就是邮箱那些东西都可以用配置
发件人名称也用配置文件
收件人是一个变量
邮件信息也是配置文件
然后发件人和名称就是配置了
xml
private MailProperties mailProperties;
引入这个对象
然后就是构造函数传入进来这个变量,因为我们不能直接构造,blog-common就不是一个spring项目,就没有启动类,所以无法注入的,只能用构造函数传进来了

这个对象MailProperties就可以获得配置了
mailProperties.getUsername()可以获取邮箱
但是发件人名字呢
这个要自定义属性了
properties就是自定义属性了
而且这个配置是写在user-service,因为传进来的参数是来自user-service的,所以mailProperties获取的配置也是user-service的
xml
spring
properties:
personal: "康氏社区"
这样就可以了

这个方法就分装好了
然后开始应用
先在user-service里面创建config,注入bean
这样就可以了
然后我们把这个配置放在Blog-comon里面

然后就是做配置了

这样引入依赖,就会自动注入bean了
然后就是只有使用了Mail,才会注入bean

这样就可以了
然后就是在消息队列,消费者那里监听,成功后,发送邮件
xml
@Autowired
private Mail mail;
先注入
发送内容可以拼接html
xml
UserInfo userInfo = JSON.parseObject(body, UserInfo.class);
String content = new StringBuilder()
.append("尊敬的").append(userInfo.getUserName()).append(", 您好! <br/>")
.append("感谢您注册成为我们博客社区的⼀员! 我们很⾼兴您决定加⼊我们的⼤家庭. <br/>")
.append("您的注册信息如下: </br/>")
.append("⽤⼾名:").append(userInfo.getUserName()).append("<br/>")
.append("为了确保您的账⼾安全,请妥善保管您的登录信息. 如果使⽤过程中, 遇到任何 问题, 欢迎联系我们的⽀持团队. [email protected] <br/>")
.append("再次感谢您的加⼊,我们期待看到您的精彩内容!<br/>")
.append("最好的祝愿<br/>")
.append("康氏博客团队").toString(); mail.send(userInfo.getEmail(), "欢迎加⼊⽐特博客社区", content);
这样就可以运行了
注册的时候用可以用的邮箱,就成功了
前端服务部署
Nginx介绍
Nginx是⼀款开源的Web服务器软件,可以⽤作反向代理、负载均衡器.它因⾼性能,⾼稳定性,丰富的
功能和低资源消耗⽽闻名.
Nginx本⾝也是⼀个静态资源的服务器,当只有静态资源的时候,可以使⽤Nginx来做服务器实现部署
前端作为一个服务来启动

Windows下载第三个,linux下载第二个
我先下载Windows

直接双击nginx.exe就可以启动了
一闪而过的
然后开始访问
出现了这个就成功了
端口号默认是80,80可以不用输入
然后就是如何关闭nginx
第一任务管理器,搜索nginx,然后停掉
第二是命令关闭
先进入安装目录
xml
.\nginx.exe -s stop
或者
xml
nginx -s stop
输入这个就可以了
然后就是nginx如何部署服务
conf->打开nginx.conf

这里可以看出默认访问的就是html下的index.html
改这个路径就可以了,要部署我们的服务的话
直接把前端代码放在一个文件中,然后复制路径

这样就可以了
nginx启动,也可以用命令
start nginx
但还是要在本目录下
这样就有了
但是这个是无法登录的
xml
start nginx
# 停⽌
.\nginx.exe -s stop
或者
.\nginx.exe -s quit

因为这个里面的url是有问题的
我们要加上前缀才可以
统一加上前缀
在common.js里面加上去就可以了
我们先安装一个vscode
然后安装几个插件
这个是让前端代码的<>与</>里面的内容自动对齐的

这个是在vscode中打开页面
右键,view in browser
这个是后端代码修改,前端页面跟着变
右键,open with live server
这个是相当于在本地启动一个服务,来启动前端页面,所以写的代码保存后页面就可以动态跟着变
然后继续在common.js里面加上去就可以了
里面的这个就是在发送请求之前做的处理
给所有的url都加上前缀
这样写就可以了
记得启动服务

这个Access-Control-Allow-Origin报错就是跨域的问题
跨域
跨域(Cross-Origin)指的是浏览器阻⽌前端⽹⻚从⼀个域名(Origin)向另⼀个域名的服务器发送请求.
具体来说,⼀个⻚⾯的协议,域名,端⼝三者任意⼀个与请求的⽬标地址不同,就被视为跨域请求.
当前前端和后端不在⼀个服务,端⼝号也就不同,就会存在跨域问题
所以我们要配置网关,允许跨域
配置⽹关项⽬允许跨域
xml
spring:
cloud:
gateway:
# 网关全局跨域配置
globalcors:
# 解决options请求被拦截的问题
add-to-simple-url-handler-mapping: true
cors-configurations:
'[/**]':
allowedOriginPatterns: "*" #设置允许跨域的来源
allowedMethods: "*"
allowedHeaders: "*"
allowCredentials: true
这个就是跨域的网关配置
这样就可以了

这样就成功了
前端用户注册开发
然后我们添加用户注册页面,和注册成功页面,然后还有register.css 到我们要启动的页面下
还有一个图片
然后就是修改登录页面,里面增加一个注册的跳转页面、
然后就是开始写前端代码来访问了

这样就可以了
直接注册


环境准备与前端部署
就这么多个环境
Mysql •
Redis •
RabbitMQ •
Nacos •
Nginx
Mysql :
xml
mysql -uroot -p
show datebases;
然后就是初始化数据
就是以前的sql脚本
xml
show databases;
use spring_cloud_blog;
redis
redis-cli
ok
RibbtMQ
ok
nacos
http://139.159.230.105:10020/nacos
ok
nginx
xml
#更新软件包
sudo apt-get update
#安装nginx
sudo apt-get install nginx
#查看nginx版本
nginx -v
#启动nginx
systemctl start nginx
#查看nginx状态
systemctl status nginx

要开放80端口号
部署前端
需要修改统一的url前缀

这样前端代码就改好了
xml
mkdir /var/www/blog #创建⽂件夹
cd /var/www/blog/ #进⼊⽂件夹
rz -E #上传代码
ls
unzip blog-html.zip #解压
pwd #查看路径
/var/www里面有一个html,这个就是nginx的页面

先对前端代码压缩,然后上传

然后开始配置nginx的访问目录
在/etc/nginx/sites-enabled下有一个default文件
就是这个文件
到server这里,把root和index都给修改了
然后直接重启nginx
xml
systemctl restart nginx

这样前端就部署好了
后端部署
以前我们用的是多个配置文件来进行环境的区分
我们还可以用---来区分环境
总共部署三个
blog,网关,user
要变化的就是mysql(密码),和naocs(本机)
blog-service:
我们这个是定义变量的方式,也可以不用这个方式,就是直接和第一部分一样的配置
就是这样就可以了
xml
nacos:
address: 139.159.230.105:10020
mysql:
password: "123456"
这个是定义的变量
xml
spring:
config:
activate:
on-profile: dev
这个是配置自带属性,区分环境的
然后是网关:
application.yml:
bootstrap.yml:

然后是user
redis不用改了,就是本地的
要改的还有mq,mysql,nacos
然后就是开始打包
确认要有插件------------》maven-plugin
就打包这三个
就是blog-servicee,网关,user-service
因为都引入了blog-common
所以单个项目是打包不成功的
因为从中央仓库打包,找不到blog-comon
所以用整体打包的方式
直接在root这里打包
但是他说blog-info/blog-info-api有问题
因为我们的blog-info/blog-info-api也加了maven打包插件, 让blog-info/blog-info-api作为一个项目打包了,所以肯定错了

取消掉就可以了
然后还有user-api,blog-common
记得刷新maven
我们这里打包出现错误
看错误日志发现
(D:\spring-project2\spring-cloud-blog\pom.xml)中的modules的19行有问题
就是这里有问题,因为有重复的module
改一下
这样就可以了
但是这样也是不行的
因为父工程只能声明子工程的module,不能声明子孙的module
这样就可以了
然后就是没有引入maven,打包组件的就不会打包
然后打包的时候记得跳过测试test
这样就OK了
mkdir spring-cloud-blog
总共三个jar包
上传
然后运行的时候要指定环境
nohup java -jar -Dspring-profiles.active=prod xxx.jar &
tail -100f user.log
tail -100f blog.log
这个可以看日志,这个日志文件也是配置的
我这里就不演示了,因为实在太卡了,机器不行