用户中心项目部署上线
参考笔记
直播回放时间点
多环境
参考文章:https://blog.csdn.net/weixin_41701290/article/details/120173283(鱼皮写的文章🤪) 本地开发:localhost(127.0.0.1) 多环境:指同一套项目代码在不同的阶段需要根据实际情况来调整配置并且部署到不同的机器上。
TIP
💡 为什么需要?
- 每个环境互不影响
- 区分不同的阶段:开发 / 测试 / 生产
- 对项目进行优化: a. 本地日志级别 b. 精简依赖,节省项目体积 c. 项目的环境 / 参数可以调整,比如 JVM 参数 针对不同环境做不同的事情。
多环境分类
- 本地环境(自己的电脑)localhost
- 开发环境(远程开发)大家连同一台机器,为了大家开发方便
- 测试环境(测试)开发 / 测试 / 产品,单元测试 / 性能测试 / 功能测试 / 系统集成测试,独立的数据库、独立的服务器
- 预发布环境(体验服):和正式环境一致,正式数据库,更严谨,查出更多问题
- 正式环境(线上,公开对外访问的项目):尽量不要改动,保证上线前的代码是 “完美” 运行
- 沙箱环境(实验环境):为了做实验
前端多环境实战
先跳过
后端多环境实战
🤔 想一下咱们后端做了什么事情,是不是就是提供了用户的增删改查、登录注册。 那咱们用户的增删改查的数据是存在本地的mysql数据库,上线的时候,是不是要把这个数据库地址改成一个远程的地址,起码要公网可访问,或者说自己的前/后端项目部署的那个服务器能访问
后端多环境主要是改:
后端怎么去区分不同的环境?
这种模式就跟前端是一样的,基本上所有的项目都是这种模式;咱们前端项目刚刚讲过,通过在配置文件后面加一个后缀来区分环境,那后端项目也一样。
我们后端的SpringBoot 项目,通过 application.yml(配置文件) 添加不同的后缀来区分配置文件 复制application.yml,粘贴到resources包下,重命名为application-prod.yml
application.yml就是公共的配置,公共配置就是任何环境它都会加载这个配置,所以像一些什么这种框架层面的,就任何环境都一样的配置,就写在公共配置里就好了;
但是像这个数据库的配置,咱们是不是要在线上的时候去做一个修改,现在修改一下
TIP
我们在做后台开发的时候,要做这样一件事情,就是把你每次建好的数据库的创建表的语句全部保存下来,可以写到文档里,可以写到自己的本地。
点击Go To DDL
在user-center包下新建sql包,在sql包下创建create_table.sql文件
::: danger⚠️注意 建表语句一定要保存下来 ❗ 把建表语句放到项目目录中,前提是这个语句是可以给其他人看的,或者是给团队、开源数据的话,可以给别人看 :::
复制建表语句粘贴进create_table.sql中
现在我们就把sql语句保存下来了,那如果说要在线上创建一个这样的表,就可以直接复制这个语句
在云服务器上安装配置mysql
我们上线的时候一般都是采用云服务器,所以我们需要在云服务器上安装配置MySQL
原生服务器安装配置
参考文章
【centos7安装mysql 附加:在云服务器上安装配置mysql】
宝塔面板安装
为了方便,我这里就选择宝塔面板安装了,但是我总是忘记宝塔登录地址和密码!!! 别急,可以找回参考教程 https://blog.csdn.net/qq_40994734/article/details/121866666
输入命令
/etc/init.d/bt default
上面失败了,要用管理员
sudo /etc/init.d/bt default
输入外网地址进行访问
输入账号密码登录
安装宝塔 Java 环境
安装需要的 JDK ,这个项目安装 1.8.0_371 就可以
安装 MySQL
1. 安装MySQL
2. 放行端口
3. 还有服务器防火墙
4. 创建数据库
5、允许远程连接
6、使用测试工具进行连接 (以 IDEA 自带的为例)
navicat也可以
连接失败怎么办?
1、检查服务器端口是否放开
2、检查创建数据库的时候选择的 访问权限 是否是 所有人KUhuf/js2uQZnINTlALrSouorF18dHFsUdDt/2cgod4=
3、检查用户名和密码
安装 Redis(可选)
1. 安装 Redis
2. 修改设置文件
修改 bind 变成
0.0.0.0
然后设置requirepass
这个就是密码 然后重载配置
3. 放行端口
还有服务器
4. 尝试连接
不需要填写用户名 密码填写之际之前在服务器requirepass
5. 连接成功
这里因为我之前没有连接过,所以没有redis驱动,第一次连接IDEA会跳出来让下载驱动,直接下载就可以,就和JDK一样,其实JDK不用特意下,创建Java项目的时候选的时候会自动下
项目部署
后端项目部署
宝塔面板部署
1. 连接线上数据库
2. 执行建表语句
3. 修改数据库配置文件
4. 打包
⚠️注意
这里报错了,这是因为我们打包的时候要把test移除掉
这次成功啦
5. 上传 jar 包到服务器任意文件夹 比如 /www
--spring.profiles.active=prod 最后面添加上这个,在运行命令最后面,只有写这个生效的配置文件才是 application-prod.yml
显示运行中了
6. 放行8080端口
别忘了服务器也放行一下
输入ip地址+8080+随便加个路径成功了
已经可以查出来了,只是没有登录管理员权限而已
原始部署
原始部署这里就不操作了,可以参考笔记
Docker方式部署
⚠️注意
🦥 大公司绝大多数的项目都是用容器。它有一个好处,整个项目的环境,以及项目的代码,我们刚刚是手动安装软件、上传代码,现在可以把这些软件和代码全部封装到一个镜像里面,就像我们装操作系统一样。
之后如果需要启动这个项目,直接启动这个镜像,把这镜像拿下来运行一下就好了,不需要去反复执行命令去安装了。
🪔 docker 是容器,可以将项目的环境(比如 java、nginx)和项目的代码一起打包成镜像,所有人都能下载镜像,更容易分发和移植。
再启动项目时,不需要敲一大堆命令,而是直接下载镜像、启动镜像就可以了。
docker 可以理解为软件安装包。
Docker 安装 或者 宝塔安装 那我肯定是宝塔啊 😂
安装后,去看看有没有安装成功了
怎么把咱们的前后端项目制作成镜像,肯定是需要有一个文件来定义,就我们要把咱们的前端项目的依赖、启动流程,全部写到一个文件里面,这个文件就叫Dockerfile。
TIP
💡 Dockerfile 用于指定构建 Docker 镜像的方法; Dockerfile 一般情况下不需要完全从 0 自己写,建议去 github、gitee 等托管平台参考同类项目(比如 springboot)
采用不上传jar的方法
就可以完全实现
- 配置插件
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.2</version>
<executions>
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<dockerHost>http://106.15.188.158:2375</dockerHost>
<imageName>user/${project.artifactId}</imageName>
<imageTags>
<imageTag>${project.version}</imageTag>
</imageTags>
<forceTags>true</forceTags>
<dockerDirectory>${project.basedir}</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
- 运行容器
sudo docker run -d --name user -p 8080:8080 user/user-center:0.0.1-SNAPSHOT
- 输入接口测试
bug
这里命令镜像名字的时候要注意规则,否则就会报错,导致构建失败 参考教程 https://blog.csdn.net/zmj199536/article/details/103406788