说明
- 前记:最近跟着哔站码神之路做了一个SpringBoot练手项目,第一次操作碰到了很多困难和问题,尤其是在部署部分,走了很多弯路,这里写下自己的部署过程,供大家参考,也欢迎大家提出宝贵的意见。
- 哔站码神视频链接:https://www.bilibili.com/video/BV1Gb4y1d7zbp=36
- 我的网站:www.zhangshidi.space(可能过一段时间会更新为其他内容哈~ 我的网站已经下线有一段时间了,服务器另做他用)
- 创作不易,希望大家走过路过点个赞。
- 一些指令可能会出错,大家可以结合手动操作的方式进行(比如,我看的教程中用mkdir创建文件比如blog.conf,但是文件格式有问题,总是会带有一个后缀比如blog.conf.swp什么的,然后我就在左边文件目录手动新建文件,后来发现touch新建文件可以成功;mkdir用来创建文件夹比较好)
前置知识
- 以下知识点希望大家首先搜一搜,读一读,有一个大概的了解。
- 什么是Linux以及掌握Linux的一些基本指令。
- 什么是docker,docker部署的原理
- 什么是nginx
- 我们要做哪些事情
- 将vue前端项目打包到云服务器
- 将springboot后端项目(主网页,下面称为app)(后台管理系统,下面称为admin)打包到云服务器
- 利用docker部署mysql,redis,ngix,app,admin。然后用docker-compose进行一个服务编排,使得项目分次序启动。
文件目录
- 如果完全按照我的思路,大家可以对照着我的文件目录,检查哪里是不是文件没有搞对。
1 环境准备:服务器购买(以及域名)
- 基本环境(云服务器及域名)–提前做!
- 我的云配置:阿里云1核 2 GiB服务器+腾讯云域名。
- 云服务器相当于我们的第二台电脑,不过他处于云端,因为他在云端的关系,我们可以随意的蹂躏他,发生了比较麻烦的问题可以直接重装系统,不会对我们的电脑本身造成影响。
- 首先,我们需要一个云服务器,那就需要去购买一个云服务器,如果需要域名的话那就需要购买一个域名,并且完成域名与云服务器Ip地址的绑定(解析)。如果不用域名暂时用Ip地址的话也是可以的。
- 需要提前做的原因:因为域名是需要备案的,据说备案时间长的可能达到一个星期,我的(在腾讯云购买的普通域名-十年180)还好,一天就备案完成了。云服务器是去年2021年双十一的阿里云活动购买的。至于哪家好哪家不好,我觉得应该差不多吧,我是挑的便宜的买的。
- 购买服务器之后需要在服务器上安装linux系统,我选择的是centoS 7.8版本。
- 然后对于这台云服务器的使用,我们可以直接在云服务器上输入指令|也可以用第三方工具,比如Xshell。(我用的就是xshell,bug少一点,也更加流畅)
- 以上步骤请大家自行搜索。
- 完成这些步骤后有一个非常重要的事情就是开放端口,阿里云的话就是在配置安全组规则里,比如我们要用的8888端口,redis端口,数据库端口啥的,不然可能无法访问。
2 Docker安装
- 我对docker的理解,docker可以理解为一个容器,相当于一个更加微型的linux系统,我们可以在里面部署各种环境和配置。
- docker的更加具体的知识,咱们可以参考这篇文章:https://blog.csdn.net/weixin_46628200/article/details/106668209
开始安装
- 首先进入我们的云服务器管理面板-远程连接,可以看到这样空荡荡的页面,随后我们在这里输入各种命令。
- 我们注意到,左上角有两个符号,一个是【新建命令窗口】;一个是【可视化查看文件】,这就和我们平常查看文件差不多了。有时候懒得用复制指令也可以直接在文件里移动。
docker安装
-
将以下一连串的命令逐步输入到你的命令窗口中
1、yum 包更新到最新
yum update
2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
3、 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
4、 安装docker,出现输入的界面都按 y
yum install -y docker-ce
5、 查看docker版本,验证是否验证成功
docker -v
#启动docker
/bin/systemctl start docker.service
拉取docker镜像
-
docker镜像可以理解为普通的镜像,利用docker镜像来创建我们的docker容器。
-
依旧是在命令窗口输入以下指令
docker pull nginx
docker pull redis:5.0.3
docker pull java:8
docker pull mysql:5.7
3 docker配置mysql
- 接下来,我会把云服务器统称为宿主机。
思路:构建一个docker来配置MySQL;并将mysql数据文件布置到宿主机中,稍微麻烦一些,但是安全性得以提高
配置mysql之前,希望大家先在自己的宿主机上安装MySQL,linux上保姆级的mysql安装教程,跟着做就可以了。
之所以这么做,是因为我希望将mysql数据存储在宿主机上,docker中只是配置一个mysql环境,如果将数据库文件存储在docker上,一旦删除容器(通过rm指令),所有的数据文件都会消失,很不安全。
-
建立宿主机上的MySQL目录(创建文件夹指令mkdir,cd是切换目录指令)
mkdir -p /mnt/docker/mysql
cd /mnt/docker/mysql -
继续在命令窗口运行以下指令
- 其中
run
有着[创建并运行]mysql容器的作用 - -p是建立宿主机3307端口与容器3306端口的映射
- -v是生成挂载目录,挂载可以理解为共享/同步一个文件目录,冒号前的目录是宿主机目录,冒号后为docker中的MySQL数据目录,即使docker被删除,数据仍然可以保留到宿主机的目录中
- 值得一提的是 码神的笔记中挂载了三个目录,分别是配置文件,日志,数据文件。我在实际操作中日志一直出错,所以干脆只配置最重要的数据文件
- 下一步则是指定宿主机MySQL的默认密码,不设置默认密码可能会报错。
docker run -id
-p 3307:3306
–name=mysql
-v /mnt/docker/mysql/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=root
mysql:5.7 - 其中
接下来我们需要进入容器,开放权限
docker ps
查看容器是否已经运行- 应该可以看到mysql5.7的容器已经在运行
- 进入