Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

你知道,前端工程部署有哪些方式嘛? #37

Open
HerryLo opened this issue Jan 11, 2023 · 0 comments
Open

你知道,前端工程部署有哪些方式嘛? #37

HerryLo opened this issue Jan 11, 2023 · 0 comments
Assignees
Labels
Blog 文章

Comments

@HerryLo
Copy link
Member

HerryLo commented Jan 11, 2023

你知道,前端工程部署有哪些方式嘛?

本文原文地址;

我将其分为四个阶段:手动部署命令工具部署docker镜像部署平台化部署
这几个阶段,越往后越复杂,越往后越友好,毕竟平台化部署有备份还可回退,那是相当安全的。

手动部署

// 打包文件,生产dist目标文件 
npm run build

将dist下的文件使用 _FTP文件传输工具 _,上传到服务器上去,就可以直接访问最新文件了。

前提:服务器上已有web服务器,类似nginx服务、Apache服务,服务代理已经启动

流程:本地build构建打包 ——> FTP文件上传 ——> 通过域名访问最新文件

命令工具部署

命令工具部署其实和 手动部署是一样,只是简化而已。

命令工具部署就是将本地build构建 和 FTP文件上传,直接通过程序来实现。例如我们通过gitlab的CI/CD工具 或 github action上传前端文件。

gitlab CI/CD或github action通过监听master分支push操作,进行运行你的配置命令,下面我以github action配置作为例子:

// .github/workflows/main.yml
# name: deploy to aliyun
# on:
#   push:
#     branches:
#       - master
# jobs:
#   build:
#     runs-on: ubuntu-latest
#     steps:
#       # 切换分支
#       - name: Checkout
#         uses: actions/checkout@master
#       - name: work around permission issue
#         run: git config --global --add safe.directory /github/workspace
#       # 使用 node:10
#       - name: use Node.js 10
#         uses: actions/setup-node@v1
#         with:
#           node-version: 10
#       # npm install 同时 build 打包
#       - name: npm install and build
#         run: |
#           npm install
#           npm run build
#         env:
#           CI: true
#       # Deploy 上传到阿里云, secrets.ACCESS_TOKEN为配置token
#       - name: Deploy aliyun
#         uses: easingthemes/[email protected]
#         env:
#           SSH_PRIVATE_KEY: ${{ secrets.ACCESS_TOKEN }}
#           ARGS: "-avz --delete"
#           SOURCE: "./docs/.vuepress/dist/"
#           REMOTE_HOST: "47.111.149.160"
#           REMOTE_USER: "root"
#           TARGET: "/var/www/HerryLo.github.io"

具体细节可以参考下面的文章↓

真香!GitHub Action一键部署;

前提:服务器上已有web服务器,类似nginx服务、Apache服务,服务代理已经启动

流程:git push代码到代码仓库 ——> gitlab CI/CD或github action 依赖配置文件打包并构建上传 ——> 通过域名访问最新文件

Docker镜像部署

docker部署是平台化部署的基础,算是命令工具部署,如果说便捷程度,其实**命令工具部署 和 docker部署 **差不多,但是它有个好处:docker镜像可备份;

// 打包文件,生产dist目标文件 
npm run build

打包构建之后,就可以通过docker构架镜像啦,下面是docker镜像的Dockerfile文件和配置:

FROM node:latest
COPY package.json /
RUN npm i --registry=https://registry.npm.taobao.org
RUN npm run build

FROM nginx:latest
# 这里的dist/目录是你的项目打包后的文件目录
COPY ./dist/ /usr/share/nginx/html/
COPY ./nginx.conf /etc/nginx/conf.d/

EXPOSE 80

nginx配置文件:

server {
    listen 80 default_server;
    server_name _;

    location / {
      root   /usr/share/nginx/html/web;
      index  index.html index.htm;
      try_files $uri $uri/ /index.html;
    }

    # 接口代理示例
    # location /api {
    #     proxy_pass http://xxx.com;
    #     proxy_set_header Host $host:$server_port;
    #     proxy_set_header X-Real-IP $remote_addr;
        #     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    #     proxy_set_header Cookie $http_cookie;
    #     proxy_buffering off;
    #     proxy_cache off;
    # }
  }

之后 通过 docker build 、docker push 镜像名 将镜像打包并推到远端仓库(一般是自己公司项目的私库),然后在服务器上拉取更新最新的镜像,然后将最新的镜像启动即可。

提示:docker 镜像一般会直接把nginx服务打包在一起,所以不用再在服务器上开启单独的服务,只需要将docker端口开放即可。当然,如果是为了统一管理端口,也是可以通过专门的代理服务管理。

流程:本地 build打包文件** ——> **docker打包镜像_ ——> 服务器更新镜像并开启最新镜像 ——> 通过域名访问最新文件_

具体细节可以参考下面的文章↓

Docker构建前端项目;

平台化部署

平台化部署其实就是全流程: **命令工具部署 **+ docker镜像的组合版。

只需要将代码push提交,之后通过网页访问构建打包平台,例如:阿里云效流水线 或 jekins打包构建 等平台,可以通过点击按钮,下一步下一步的方式,完成打包构建,镜像上传。

至于更新,我是使用rancher平台来进行,服务的管理或更新,镜像上传完之后,可以在rancher平台配置好相关的负载服务,剩下就只是点击更新按钮就可以。

下面是以 阿里codeup流水线 + rancher作为流程示例:

提示:_阿里codeup流水线 或 jekins打包构建 就类似于docker镜像打包,rancher部署就类似于我们将最新镜像上传到服务器上,然后开启服务。(rancher部署可能更加复杂,因为还涉及到k8s集群知识

流程:git push代码到代码仓库 ——> 通过_codeup_流水线构建打包上传镜像 ——> rancher等平台更新镜像 ——> 通过域名访问最新文件

具体细节可以参考下面的文章↓

知识扩展-Rancher前端服务发布

总结

前端应用部署变化到现在的阶段,也是项目众多不便于管理导致,实际的业务情况,进而推动部署方式的发展。
前端部署的流程每个公司都有一套自己的流程,学习它,适应它,就好了,没有太多疑难问题。

使用工具没有什么难度,难度可能就是你用的不太熟。

你的点赞、收藏是我的更新的动力!!

@HerryLo HerryLo added the Blog 文章 label Jan 11, 2023
@HerryLo HerryLo self-assigned this Jan 11, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Blog 文章
Projects
None yet
Development

No branches or pull requests

1 participant