项目实战记录 -【用户中心项目】用户中心项目上线部署

由于我是使用的自带宝塔的Linux所以我这里使用的部署方式是在服务器中部署以及在docker容器中部署,之前在项目上的堡垒机是winserver,后端部署准备一个脚本文件,前端就下载一个nginx改下配置文件把包丢进去启动就可以了

Linux原始部署

# 下载 Nginx 源码
curl -o nginx-1.21.6.tar.gz http://nginx.org/download/nginx-1.21.6.tar.gz

# 解压源码包
tar -zxvf nginx-1.21.6.tar.gz

# 进入 Nginx 源码目录
cd nginx-1.21.6

# 安装所需的依赖包
yum install pcre pcre-devel openssl openssl-devel -y

# 配置 Nginx
./configure --with-http_ssl_module --with-http_v2_module --with-stream

# 编译 Nginx
make

# 安装 Nginx
make install

# 将 Nginx 可执行文件路径添加到环境变量
echo 'export PATH=$PATH:/usr/local/nginx/sbin' >> /etc/profile

# 使配置生效
source /etc/profile

# 启动 Nginx
nginx

# 查看 Nginx 启动情况
netstat -ntlp | grep nginx

后端

# 安装 Java 环境
yum install -y java-1.8.0-openjdk*

# 下载并解压 Maven
curl -o apache-maven-3.8.5-bin.tar.gz https://dlcdn.apache.org/maven/maven-3/3.8.5/binaries/apache-maven-3.8.5-bin.tar.gz
# 下载代码
git clone xxx 

# 打包构建,跳过测试
mvn package -DskipTests

# 后台启动 Spring Boot 应用
nohup java -jar ./user-center-backend-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod > /dev/null 2>&1 &

# 查看应用启动情况
netstat -ntlp | grep java

Linux宝塔面板部署

首先登录宝塔面板,登录后在网站栏中的PHP项目点击添加站点,创建一个站点信息,域名这里是需要访问哪个域名或ip来访问这个项目,根据个人情况填写域名或ip,根目录是你项目的根路径位置,所有必填内容填完后点击提交

此时就会帮忙创建好了一个空站点,同时帮忙配置好了nginx,我们需要把我们打包好的前端项目添加到根目录中。需要注意的是,这里是将dist文件夹中的文件以及文件夹放到项目根目录中,而不是把dist文件夹放到根目录中,这样就不需要重新配置nginx的路径了,这样前端项目就可以访问了

接下来是后端的部署,点击宝塔面板中网站部分的java项目,添加java项目然后填写相对应的信息,这里如果宝塔面板没有安装jdk或者版本与项目不一致也没有关系,可以在这里选择添加jdk信息,它会在网上拉取下载,你可以根据自己项目不同的jdk版本进行切换,将自己打好的jar包上传服务器后选择项目路径,填写完整信息后,操作正确的情况下java项目就会自动部署并执行了,就这么简单,右边有一个java项目部署的教程,我把地址也贴出来供大家参考【宝塔 新版Java 项目部署教程 – Linux面板 – 宝塔面板论坛 (bt.cn)

docker容器部署

还记得之前在前后端项目中都添加了dockerfile文件吧,这里就可以使用咱们编写好的dockerfile对我们的项目进行镜像构建以及容器部署了

根据 Dockerfile 构建镜像,构建时需要注意,构建时执行构建命令的路径是否时项目根目录或者说当前目录下是否有需要构建的dockerfile文件

# 后端
docker build -t xxx:v0.0.1 .

# 前端
docker build -t xxxx:v0.0.1 .

命令解释

docker build: 根据 Dockerfile 文件构建 Docker 镜像
-t xxx:v1.0.0: 为镜像命名为 xxx 并标记为版本 v1.0.0
.: 代表当前目录,即 Docker 将在此处查找 Dockerfile 及用于构建镜像的上下文文件

构建好后可以通过docker -images查询所有镜像,确认构建的镜像存在后启动镜像

# 前端
docker run -p 80:80 -d xxxx:v0.0.1

# 后端
docker run -p 8080:8080 xxx:v0.0.1

命令解释

docker run: 启动一个 Docker 容器
-p 8080:8080: 将主机的8080端口映射到容器的8080端口
-p <主机端口>:<容器端口>

通过docker ps命令查看当前已经启动的docker容器,也可以通过docker ps -a来查看当前docker中有哪些容器,通过 docker logs 容器id或容器名查看容器日志

相关命令

# 进入容器
docker exec -i -t  容器id /bin/bash
# 查看容器进程
docker ps
# 查看日志
docker logs -f [container-id]
# 杀死容器
docker kill
# 强制删除镜像
docker rmi -f

这里有一点需要重申一下,在执行docker镜像构建时需要确保自己项目中的dockerfile文件所需要执行的命令是否完全正确,否则有可能在运行容器时报错,报错也不要慌张,可以通过宝塔面板自带的docker管理工具查看日志以及管理容器和镜像

在前端的dockerfile中请注意项目根目录下docker/nginx配置文件中的代理配置是否正确,这里同样再次贴出代理配置并再次强调代理配置是否正确,因为如果这里存在问题,那么构建出的镜像在容器部署时大概率会部署失败,这也算是踩过最痛的一个坑了

   # 跨域配置
   location ^~ /api/ {
   # 跨域配置
   proxy_pass http://公网ip/api/;
   add_header 'Access-Control-Allow-Origin' $http_origin;
   add_header 'Access-Control-Allow-Credentials' 'true';
   add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
   add_header Access-Control-Allow-Headers '*';
   if ($request_method = 'OPTIONS') {
   add_header 'Access-Control-Allow-Credentials' 'true';
   add_header 'Access-Control-Allow-Origin' $http_origin;
   add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
   add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
   add_header 'Access-Control-Max-Age' 1728000;
   add_header 'Content-Type' 'text/plain; charset=utf-8';
   add_header 'Content-Length' 0;
   return 204;
   }
   }

那么至此所有的部署方式已经完成了,访问项目如果可以正常调用到后端服务说明前后端已经打通了,整个项目用时大概15天左右,大多数时间在踩坑,由于平时部署操作比较少,所以大多数错误地方还是在配置方面,好在是通过查阅资料以及通过鱼友的踩坑记录解决了,此篇已完结!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

*

856 次浏览