飞布产品手册
官网B站Github
V1.0
V1.0
  • 序言
  • 更新日志
  • 产品简介
    • 什么是飞布?
    • 飞布的价值
    • 飞布的优势
    • 应用场景
    • 数据安全
    • 产品案例
  • 快速入门
    • 初识飞布
    • 快速上手
      • 图文版
    • 词汇概览
    • 工作原理
  • 基础-可视化开发
    • 概览
      • CLI
      • 控制台
        • 主功能区
    • 数据源
      • 数据库
        • 数据库连接
          • 高级设置
        • 数据建模
        • 数据预览
      • REST 数据源
      • GraphQL 数据源
      • 消息队列
    • API构建
      • 可视化构建
        • API规范
      • 批量新建
      • HTTP请求流程指令
      • 使用API
      • 实时查询
      • 实时推送
      • 关联查询
      • 数据缓存
      • 常见用例
    • 身份验证
      • 授权码模式
        • 身份验证(废弃)
      • 隐式模式
      • 数据权限控制
    • 身份授权
      • RBAC
        • 授权与访问控制(废弃)
      • 接口权限控制
      • 开放API
    • 文件存储
      • S3配置及使用
      • 文件管理面板
      • 高级配置:profile
  • 进阶-钩子机制
    • 钩子概览
    • 启动钩子
      • Node钩子
      • Golang钩子
      • Python钩子
      • Java钩子
    • OPERATION钩子
    • 身份验证钩子
    • graphql钩子
    • 函数钩子
      • functions(废弃)
      • proxys(废弃)
    • 文件上传钩子
    • 内部调用
  • 使用-部署上线
    • 部署运维
      • 手动部署
        • 流水线部署(废弃)
      • Docker部署
      • 飞布云
    • 接口安全
      • CSRF token 保护
      • 跨域访问
    • 客户端SDK
      • 微信小程序SDK
      • Flutter SDK
      • uniapp SDK
  • 环境准备
    • 文件存储 S3
    • 身份认证 OIDC
    • NodeJs环境
  • 实战案例
    • Fireboom Admin
      • 管理后台-refine(废弃)
    • 实时TODO LIST
    • 语音版ChatGPT
    • AI魔法师实战
    • 阿里低代码引擎
  • 路线图
  • 常见问题
  • 核心概念
    • GraphQL
    • 超图
    • 请求时序图
    • 服务端Operation
  • 二次开发
    • 钩子规范
      • 钩子规范bak
    • 模板规范
    • 自定义模板
    • 其它参考
由 GitBook 提供支持
在本页

这有帮助吗?

在GitHub上编辑
  1. 使用-部署上线
  2. 部署运维
  3. 手动部署

流水线部署(废弃)

上一页手动部署下一页Docker部署

最后更新于1年前

这有帮助吗?

流水线自动部署的思路整体和手动部署相似,只需要将重启脚本提前准备好即可。下面以 Github Action 部署为例介绍使用。

我们仍然用 作为部署项目。首先我们需要在部署服务器上提前准备好环境

  1. 安装 Nginx,新建项目部署位置 /path/to/deploy,添加一个 nginx conf 文件指向该目录,参考配置如下

upstream backend {
  server 127.0.0.1:9991;
}

server {
    listen 80;
    server_name your.domain;
    rewrite ^(.*) https://$server_name$1 permanent;
}

# https 配置,没有则将后续配置剪切到上面的80服务里
server {
  listen       443 ssl;
  server_name  your.domain;
  charset utf-8;

  access_log /var/log/nginx/app.fb.todomvc.access.log;
  error_log /var/log/nginx/app.fb.todomvc.error.log;

  # https://github.com/darktable/html5-boilerplate-server-configs/blob/master/nginx.conf
  # Enable Gzip
  gzip  on;
  gzip_http_version 1.0;
  gzip_comp_level 2;
  gzip_min_length 1100;
  gzip_buffers     4 8k;
  gzip_proxied any;
  gzip_types
    # text/html is always compressed by HttpGzipModule
    text/css
    text/javascript
    text/xml
    text/plain
    text/x-component
    application/javascript
    application/json
    application/xml
    application/rss+xml
    font/truetype
    font/opentype
    application/vnd.ms-fontobject
    image/svg+xml;

  gzip_static on;

  gzip_proxied        expired no-cache no-store private auth;
  gzip_disable        "MSIE [1-6]\.";
  gzip_vary           on;

  # 根据实际情况修改
  ssl_certificate /etc/nginx/cert/1_app.fb.todomvc.crt;
  ssl_certificate_key /etc/nginx/cert/2_app.fb.todomvc.key;
  ssl_session_timeout 5m;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
  ssl_prefer_server_ciphers on;

  location / {
    root   /path/to/deploy/web;
    index  index.html;
    try_files   $uri $uri/ /index.html;
  }
  
  location /operations {
    proxy_pass       http://backend/operations;
    proxy_set_header X-Real_IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X_Forward_For $proxy_add_x_forwarded_for;
    client_max_body_size 0;
  }
  
  location /auth {
    proxy_pass       http://backend/auth;
    proxy_set_header X-Real_IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X_Forward_For $proxy_add_x_forwarded_for;
    client_max_body_size 0;
  }
}

上述配置制定了 /path/to/deploy/web 目录为 vue 打包后的目录,同时添加了 https 相关配置,实际情况请做相应修改。

  1. 在任意支持 unix 命令行的机器上生成一个公私钥对(本次示例中没有对密钥进行加密,如有需要,请做相应修改),用于后续的自动部署

ssh-keygen -t rsa -b 4096 -C "[email protected]"

在弹框中将密钥保存为 github-action,完成后将在 ~/.ssh 目录生成 github-action.pub 和 github-action 文件,前者是公钥,后者是私钥。将公钥添加到部署机器上

ssh-copy-id -i ~/.ssh/github-action.pub user@machine

上述命令使用 ssh-copy-id 将公钥复制到部署机器上。

  1. 提前在项目 Github 的 Setting 中添加以下 secrets

  • SSH_HOST 部署服务器 IP /域名

  • SSH_PORT 部署服务器 SSH 端口

  • SSH_PRIVATE_KEY 部署私钥

  • SSH_USER SSH 登录用户名

  1. 在项目根目录中创建.github/deploy.yml文件并写入自动部署配置。

# .github/deploy.yml
name: Build

on:
  push:
    branches:
      - main

jobs:
  build:
    steps:
      - name: Check out Git repository
        uses: actions/checkout@v1

      - name: Install pnpm
        uses: pnpm/action-setup@v2
        with:
          version: 7
    
      - name: Build vue
        run: cd vue && pnpm i && pnpm build

      - name: Install SSH Key
        uses: shimataro/ssh-key-action@v2
        with:
          # 需要提前生成一个公/私钥对,公钥添加到部署机器上
          # 私钥添加到 Github Action secrets里,其中name是SSH_PRIVATE_KEY,value是私钥内容
          # 其它 secrets 分别是:
          # SSH_HOST 部署服务器 IP /域名
          # SSH_PORT 部署服务器 SSH 端口
          # SSH_PRIVATE_KEY 部署私钥
          # SSH_USER SSH 登录用户名
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          known_hosts: unnecessary

      - name: Adding Known Hosts
        run: ssh-keyscan -p ${{ secrets.SSH_PORT}} -H ${{ secrets.SSH_HOST }}  >> ~/.ssh/known_hosts

      - name: Deploy with rsync
        # 将 server 目录同步到部署目录,将 vue 打包后的 dist 目录同步到 server 目录下的 web 文件夹
        run: |
          rsync -avz --exclude 'node_modules' --exclude 'fireboom' -e "ssh -p ${{ secrets.SSH_PORT }}" ./server/ ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:/path/to/deploy/
          rsync -avz -e "ssh -p ${{ secrets.SSH_PORT }}" ./vue/dist/ ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:/path/to/deploy/web

      - name: Restart Fireboom
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.SSH_HOST }}
          username: ${{ secrets.SSH_USER }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          port: ${{ secrets.SSH_PORT }}
          # 进入部署目录,重启 node,重启 fb
          script: |
            cd /path/to/deploy
            cd custom-ts
            npm install --production
            chown $(whoami) . # PM2 doesn't recognize root user from Github Actions
            pm2 restart 0
            cd ../
            systemctl restart fb
  1. 向代码仓库 main 分支提交,触发自动部署并查看部署日志,项目会自动部署到最新版本。

安装好 NodeJs 环境,配置好 systemd 服务。

Vue TodoMVC
参考手动部署章节