您的位置:首页 > 房产 > 建筑 > ai网页生成_嵌入式软件工程师培训_线下课程seo_搜索引擎的四个组成部分及作用

ai网页生成_嵌入式软件工程师培训_线下课程seo_搜索引擎的四个组成部分及作用

2025/4/30 6:47:09 来源:https://blog.csdn.net/qq_36833673/article/details/147460117  浏览:    关键词:ai网页生成_嵌入式软件工程师培训_线下课程seo_搜索引擎的四个组成部分及作用
ai网页生成_嵌入式软件工程师培训_线下课程seo_搜索引擎的四个组成部分及作用

        在平常的开发工作中,一个项目经历需求、开发、测试、上线等步骤。在开发测试完成后,我们需要部署测试环境、生产环境等,那么我们用 docker 方式应该怎么部署呢?前后端分离的项目又该如何部署呢?那么,今天我们总结下前后端分离项目从打包到部署的详细步骤。

     一:安装所需软件

        安装项目所需软件,如安装 mysql、redis、nacos等,这些安装方式在前面已经写过,这里不再赘述,安装步骤博客如下:

        1:docker 安装 mysql 详解_本机连接docker mysql-CSDN博客

        2:docker 安装 nginx 详解_docker 拉取nginx-CSDN博客

        3:docker 安装 redis 详解_docker 安装redis-CSDN博客

        4:docker 安装 Rabbitmq 详解_docker 安装rabbitmq-CSDN博客

        5:docker 安装 MinIO 步骤详解_docker minio-CSDN博客

     二:前端打包

        1:修改 .env.deployment 配置文件接口调用配置,用于部署环境的环境变量配置文件,通常与 .env 文件类似,但专门针对部署阶段(如生产环境、预发布环境等)的特定配置,如图:

        2:项目打包:npm run build,在 npm run build 时可以添加一些参数来调整打包。例如在 Vue CLI 项目中:npm run build -- --mode development:指定以开发模式进行打包。

        当看到控制台输出如下信息时,表示打包成功:

        打包成功,前端项目包如图所示:

     三:后端打包

        1:修改数据库信息为对应数据库,数据库配置一般在 application.yml 文件中配置。一般项目中会有多个配置文件,如 dev 开发环境、test 测试环境、prod 生产环境配置文件等,一定要注意每种配置文件中对应的数据库信息正确。如:

        2:如果需要修改部署在服务上项目的端口信息,在 application.yml 中修改端口信息,如:

        3:先点击 clean,然后点击 package 打包,操作如图所示:

     四:构建后端服务镜像

        1:编写 Dockerfile文件,Dockerfile 是一种纯文本文件,文件命名就是 “Dockerfile”,用来构建 Docker 镜像的文本文件,包含了一系列的指令和参数。通过 Dockerfile 构建的镜像可以保证开发环境、测试环境和生产环境的镜像一致,避免了换机器不能运行的问题。通过指令可以自动构建镜像。Dockerfile 可以与 Jenkins 等集成,实现自动化构建和部署。

# 使用OpenJDK 17基础镜像
FROM openjdk:17
# 创建一个名为/litemall/logs的目录
RUN mkdir -p /litemall/logs
# 切换工作目录
WORKDIR /litemall
# 配置环境变量
ENV SERVER_PORT=8085 \LANG=C.UTF-8 \LC_ALL=C.UTF-8# 暴露应用端口
EXPOSE 8085# 添加应用Jar包到容器中
ADD litemall-wx-api-0.1.0.jar ./app.jar# 设置启动命令
ENTRYPOINT ["java", \"-Dserver.port=${SERVER_PORT}", \"-Xlog:gc*:time,tags,level", \"-XX:+UseZGC", \"-jar", "app.jar"]

        2:docker build -t  镜像名:tag  .  如:docker build -t litemall-all:v1.0 . ,编写完 Dockerfile 文件后,这个时候就可以构建镜像了。注意版本后面有个 空格 点。使用点 . :表示使用当前目录下的 Dockerfile,如果不加这个点,Docker 不会知道从哪里获取 Dockerfile。镜像构建完成后,可以使用 docker images 查看生成的镜像。
  
          查看镜像:docker images
    

    五:启动后端服务

      1:编写后端服务 docker-compose.yml 文件。启动容器,可以直接用docker run  后面接一堆指令启动,也可以用 docker-compose.yml 文件管理指令,docker compose 是定义和运行多容器 Docker 应用的工具,用 docker compose 命令启动,这样更加的便捷。

services:litemall-all:image: litemall-all:v1.0container_name : litemall-allenvironment:- SERVER_PORT=8085- JAVA_OPTS="-Xmx2g -Xms2g" - TZ=Asia/Shanghairestart: alwaysnetwork_mode: "host"

        2:启动后端服务  docker compose up -d 命令,docker compose up 是阻塞窗口的,带上 -d 是非阻塞的。docker compose up -d 启动,可以更方便的管理启动命令。
        遇到的问题:
        报错 1 如下:下载镜像报错

    解决方法:
    修改 /etc/daemon.json文件中镜像加速器配置,如果遇见下载镜像错误,基本都是这种解决方法。但是修改了好久镜像加速器配置,就是没有解决,一直以为是加速器没有配置对,导致问题,后面发现是 docker-compose.yml 中 image 镜像名称写错了,所以导致下载镜像一直失败,Dockerfile 文件中的镜像,如图:
   

     报错 2 如下:无法找到运行的主类

  解决方法:找到服务所在模块的 pom.xml 中如下配置:

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><id>repackage</id><configuration><executable>true</executable><classifier>exec</classifier></configuration> </execution></executions></plugin></plugins>
</build>

 将 <execution> 标签中的内容改为如下,即可解决:

<goals><goal>repackage</goal><goal>build-info</goal>
</goals>

        4:测试后端服务
        在服务器上执行:curl -v http://localhost:8085/wx/auth/login  后面接口为后端服务中的接口,查看返回信息,如果返回 200,则表示接口调用成功;如果连接失败,-v 会显示错误详情(如 Connection refused 表示端口未监听)。

     六:nginx 配置

        1:编写 nginx.conf 文件,主要作用是将 Nginx 服务器配置为监听 6255 端口,处理前端静态资源请求和后端接口请求,通过反向代理将以 /wx/ 开头的请求转发到 http://localhost:8085 后端服务器。

user  nginx;
worker_processes  auto;events {worker_connections  1024;
}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;autoindex on;keepalive_timeout  65;server {listen 6255;server_name localhost;charset utf-8;# 处理前端静态资源请求location / {root  /usr/share/nginx/html;index index.html index.htm;}# 处理后端接口请求location /wx/ {proxy_pass http://localhost:8085;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}}
}

        2:编写 docker-compose.yml 文件,定义了使用镜像及版本,容器名称、环境配置及端口映射,挂载了宿主机目录等,使用 docker-compose.yml 文件,可以更好的管理启动命令,方便使用。

services:nginx:image: nginx:latestcontainer_name: nginx-litemall-testenvironment:TZ: Asia/Shanghaiports:- "8085:8085"volumes:# 配置文件映射- /litemall/nginx/conf/nginx.conf:/etc/nginx/nginx.conf- /litemall/nginx/conf:/etc/nginx/conf# 页面目录- /litemall/html/dist:/usr/share/nginx/htmlprivileged: truenetwork_mode: "host"

        3:启动 nginx,用  docker compose up 启动,可以实时看到启动日志。可以 docker ps 查看是否启动成功。

        4:遇到的问题:访问报 404,如下:
  
   nginx 报错如下:无法打开 /html 文件夹,没有此文件或者目录
    
    解决方法:搜了好多方法,基本都是说文件夹权限问题,chmod 修改文件夹权限,各种修改权限,看目录路径是否正确,修改了好久,没有解决,后面发现是 nginx.conf 中
前端文件目录写的是宿主机的文件目录,而不是容器的目录,所以导致一直找不到,
        修改前、后如下图:

        

        
        此处要注意:nginx 文件挂载目录映射位置:

        

     七:测试

        根据 http://xx.xx.xx.xx:6255 进行访问,访问页面如下:

        
        可能会遇到的问题:项目启动成功,访问失败,可以查看项目端口是否因没开防火墙导致无法访问。如果是,解决步骤如下:
        (1):查看防火墙开的端口:firewall-cmd --zone=public --list-ports
        (2):若端口未开,则添加,比如开放 8008 端口:firewall-cmd --zone=public --add-port=8008/tcp --permanent
        (3):修改完成后,重启防火墙:firewall-cmd --reload

     八:总结

        首先装需要的软件,如部署需要的 nginx、redis、rabbitmq、nacos、mysql等,接着就是 打前端包,打后端包,包打完之后,将包上传到服务器,构建后端服务镜像,编写启动后端服务 docker-compose.yml 文件。创建 nginx.conf 文件,nginx.conf 文件的配置 和 nginx 的 docker-compose.yml 文件中配置尤为重要,监听的端口,挂载文件目录,一定要注意书写正确,否则可能看着都没问题,但是就是访问失败。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com