从零到一部署、发布和上线一个SpringBoot+VUE项目

1、服务器准备

1.1、购买服务器

购买服务器是为了最终部署完成之后可以通过外网访问,如果只是单纯想练手的话不买也可以下载一个:VMware Workstation Pro。用虚拟机也可以。

建议大家去阿里云,新人的话是免费给三个月的试用服务器,首页应该就可以看到,点进去按照步骤操作即可,错失机会的可以用家人朋友的账号,能白嫖就白嫖。

如果为了长期使用,可以等618或双十一的时候去买华为云或者阿里云的,会比较便宜,比如我的服务器就是618在华为云买的,35块钱一年还送域名,很合适了。

总之,我们需要一个CentOS虚拟机(实际上Ubuntu也可以,或者其他主流虚拟机都可以,如果果只是单纯部署则不需要可视化界面,Ubuntu还是更适合嵌入式),我的CentOS版本是8.0,大家可以自行选择合适的版本。关于相关配置可参考云服务器购买平台相关资料。

购买服务器参考:如何购买一台云服务器-CSDN博客

1.2、下载JDK

我们在使用shell连接工具连接上服务器后:

输入命令:

yum install -y java-1.8.0-openjdk

进行安装jdk,我这里是1.8版本,可自行选择适合自己的版本。

回车可以看到已经开始下载了:

然后输入:

java -version 

可以看到已经安装完成,已经显示了版本。

1.3、下载docker

首先更新一下yum包:

yum -y update

然后正式安装docker

可以先看一下现在有没有docker

如果之前已经有的话就不用安装了,或者卸载掉,重新安装,卸载命令:

yum remove docker docker-common docker-selinux docker-engine

 安装docker的依赖环境:

yum install -y yum-utils device-mapper-persistent-data lvm2

 完成,然后我们安装docker-ce

yum -y install docker-ce

 安装成功:

如果报错:

则更换更稳定的docker源:

dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

然后重新安装:

dnf install -y docker-ce --nobest 

安装完成后,检查是否安装成功:

docker -v

ok,安装完成,我们接下来启动docker:

systemctl start docker

查看是否启动成功:

systemctl status docker 

 可以看到是启动状态,然后按ctrl+c退出即可。

设置docker开机自启:

systemctl enable docker 

 虽然云服务器一直是启动状态,但是为了防止你修改服务器后重启服务器,还是设置上比较好。

docker安装到此结束。

1.4、配置docker

1.4.1、docker安装MySQL

首先查看下可安装的镜像:

docker search mysql

 接下来拉取镜像(拉取指定5.7版本):

docker pull mysql:5.7

注意:若想拉取最新版本使用:docker pull mysql

如果出现以下情况:

是因为镜像源是国外或者镜像源太老了,更换镜像源即可,参考:更换CentOS中docker的镜像源-CSDN博客

拉取完毕,检查下:

docker images

就是拉取成功了,如果拉取不成功,参考上面连接换一下镜像试一下。

MySQL镜像拉取完毕,现在做启动容器前期准备。

首先创建一个新的 Docker 卷,由于Docker 容器原则上是短暂的,如果容器被删除,任何数据或配置都可能会丢失。然而,Docker 卷提供了一种机制来保存在 Docker 容器内创建的数据。它们是 Docker 用于存储 Docker 容器持久数据的首选机制。

docker volume create mysql-data

我们将会创建一个名叫mysql-data的新卷。 

查看现有的卷:

docker volume ls

现在启动容器并挂载在刚刚创建的卷中:

docker run -d --restart=always --name=mysql-server -p 3306:3306 -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=your-pwd mysql:5.7

注:将以上命令中的‘your-pwd’换成你想设置的数据库连接密码

 创建成功,我们检查一下:

docker ps

 现在连接下数据库,看是否启动成功:

点击测试连接

提示连接成功(失败往下划),随便进行一个操作:

create database project

可以看到也是成功了,至此数据库配置完成。

数据库连接失败解决方案:docker拉取MySQL后数据库连接失败解决方案-CSDN博客

1.4.2、安装nginx

docker pull nginx

检查是否拉取成功:

docker images 

 创建一个文件夹(后续直接把前端vue打包好的dist文件夹扔进去就行):

mkdir /home/nginx

mkdir/home/nginx/dist

 然后挂载部署容器:

 docker run -d -p 80:80 --name nginx  -v /home/nginx/dist:/usr/share/nginx/html --restart=always nginx

检查容器是否启动成功:

docker ps 

此时使用浏览器输入服务器域名可访问到nginx:

 

1.4.3、安装Redis(如果需要)

拉取redis

docker pull redis

查看是否成功:

docker images

 

启动容器: 

docker run \
-d \
--name redis \
-p 6379:6379 \
-v /home/redis/data:/data \
-v /home/redis/conf/redis.conf:/etc/redis/redis.conf \
redis /etc/redis/redis.conf 

 

 检查:

docker ps

 至此基础需求配置已完成,现在我们打包部署项目。

2、项目准备

2.1、前端:

首先想必各位已经有自己的前端代码,代码部分不再赘述,我我们在前端文件夹下执行打包命令:

npm run build

 

看到done就是打包成功了:

这时候再看我们的项目目录:

已经多出了一个dist文件夹。

然后直接把dist文件夹里面的内容复制到我们服务器路径 :/home/nginx/dist 文件夹下即可:

然后重启下docker中nginx:

docker restart nginx

然后在浏览器中输入服务器域名:

可以看到,前端的界面已经可以展示出来了(404是因为没部署后端,界面有自动展示图片的功能,是动态的,所以就报错,主要是可以展示出界面就可以了!)

2.2、后端:

后端我们用maven进行打包:

选中这三项即可(按住CTRL然后鼠标左键点击即可多选),然后点运行:

执行完毕:

打开项目目录:

打好的包就在target文件夹下:

我们把包上传到服务器中,首先创建一个文件夹:

mkdir /home/java

然后把包扔进去:

创建日志文件:

mkdir home/java/logs

然后我们启动包:

 nohup java -jar /home/java/vue-0.0.1-SNAPSHOT.jar >/home/java/logs/202408012log.txt &

 这行命令的意思是:启动tar包,并将日志输出并记录到java/logs文件夹下的20240812log.txt中,文件名可以随便改,最后的&符号不能丢!

然后我们打开日志文件查看信息:

可以看到已经正常启动了。

这时候已经成功了99%了。

2.3、配置nginx

这时候虽然前后端都已经部署完毕,但是由于vue项目在打包的时候,并不会把解决跨域的配置文件打包进去,因此,我们需要使用nginx的代理,将前后端用代理的方式进行跨域发送请求。

参考:解决Vue项目部署到服务器之后前端向后端发送请求报错404的问题(centos使用docker实现nginx的反向代理)_前后分离前端访问后端404-CSDN博客

至此,全部完成,其中有几个连接跳转,希望大家不要见怪,每一个连接都是我自己的文章,只是因为之前既然发布了相同内容的文章,就不占用大量篇幅了,因为上面几个都是报错的解决方法,并不是所有人都会遇到那些报错,因此不在重复赘述,望大家理解。过后我会基于本文更一篇如何实现一键打包、一键部署,会实现更加方便的部署项目。

最后的最后,感谢可以看到最后, 文章略显稚嫩,恳求各位批评指点。

  • 27
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值