配置测试机

创建 work 账号

出于安全考虑,日常不会用root账号登录,权限太高了。
root登录,创建work账号。

  1. adduser work
  2. passwd work

添加 work 的 sudo 权限

  1. whereis sudoers # 找到文件位置 /etc/sudoers
  2. chmod u+w /etc/sudoers # 修改权限, u表示所有者, w表示写权限 +表示添加
  3. vim /etc/sudoers # 编辑该文件
  4. # 找到 `root ALL=(ALL) ALL`
  5. # 再加一行 `work ALL=(ALL) ALL`
  6. chmod u-w /etc/sudoers

然后使用 work 登录机器。输入 su 命令(命令用于变更为其他使用者的身份)再输入 root 账号的密码,即可拥有超级权限。

登录信任

使用work登录机器,创建~/.ssh/authorized_keys文件。

  1. # 修改文件夹权限
  2. chmod 700 ~/.ssh
  3. chmod 600 ~/.ssh/authorized_keys

将本机的 id_rsa.pub 内容粘贴进来。
退出重新用 work 登录,将不用再输入密码。

开放端口

开放需要开放的端口,否则外网无法访问该端口

  • B 端 FE - 80
  • B 端 server - 8081
  • C 端 - 8082
  • 统计服务,收集日志 - 8083
  • 统计服务 OpenAPl - 8080
  • admin FE - 8085
  • admin server - 8084

PS:线上环境,不会开放这么多端口,而是用nginx反向代,理.

思路有三种

【方法1】

  1. runner 使用 github actions 监听 dev 分支 push
  2. 登录测试机,获取最新 dev 分支代码
  3. 重新构建镜像 docker-compose build editor-server
  4. 重启所有容器 docker-compose up -d

自动发布到测试机 - 图1
【方法2】

yy用的方法

  1. github runner :构建镜像,并把镜像推到自建的镜像仓库
  2. 部署服务器:到统一部署平台那里点击发布时,会镜像仓库中的镜像拉取到部署服务器进行部署(kubectl) 。
    • 编写k8s-app.yaml文件,把需要部署的容器pod写进去,多个容器形成一个deployment。 ```shell $ kubectl apply -f k8s-app.yaml

$ kubectl get pods —selector “app=cra” -o wide NAME READY STATUS RESTARTS AGE IP cra-deployment-555dc66769-2kk7p 1/1 Running 0 10m 172.17.0.8 cra-deployment-555dc66769-fq9gd 1/1 Running 0 10m 172.17.0.9 cra-deployment-555dc66769-zhtp9 1/1 Running 0 10m 172.17.0.10

READY 3/3 表明全部部署成功

$ kubectl get deploy cra-deployment NAME READY UP-TO-DATE AVAILABLE AGE cra-deployment 3/3 3 3 42m

回滚

$ kubectl rollout undo deployment/nginx-deployment

  1. <a name="OPtoE"></a>
  2. ### 【方法3】
  3. 添加自己的gihub runner 然后部署和发布都在这台机器。
  4. <a name="aOCok"></a>
  5. ## 代码实现
  6. 新建 `deploy-dev.yml` 内容如下:
  7. ```shell
  8. name: deploy for dev
  9. on:
  10. push:
  11. branches:
  12. - 'dev' # 只针对 dev 分支
  13. paths:
  14. - '.github/workflows/*'
  15. # - '__test__/**' # dev 不需要立即测试
  16. - 'src/**'
  17. - 'Dockerfile'
  18. - 'docker-compose.yml'
  19. - 'bin/*'
  20. jobs:
  21. deploy-dev:
  22. runs-on: ubuntu-latest
  23. steps:
  24. - uses: actions/checkout@v2
  25. - name: set ssh key # 临时设置 ssh key
  26. run: |
  27. mkdir -p ~/.ssh/
  28. # secrets.WFP_ID_RSA github里面设置的
  29. echo "${{secrets.WJY_ID_RSA}}" > ~/.ssh/id_rsa
  30. chmod 600 ~/.ssh/id_rsa
  31. ssh-keyscan "114.132.153.108" >> ~/.ssh/known_hosts
  32. - name: deploy # 部署
  33. run: |
  34. ssh work@114.132.153.108 "
  35. # 【注意】用 work 账号登录,手动创建 /home/work/imooc-lego 目录
  36. # 然后 git clone https://username:password@github.com/imooc-lego/biz-editor-server.git -b dev (私有仓库,使用 github 用户名和密码)
  37. # 记得删除 origin ,否则会暴露 github 密码
  38. cd /home/work/low-code/biz-editor-server;
  39. git remote add origin https://wangfupeng1988:${{secrets.WFP_PASSWORD}}@github.com/imooc-lego/biz-editor-server.git;
  40. git checkout dev;
  41. git pull origin dev; # 重新下载最新代码
  42. git remote remove origin; # 删除 origin ,否则会暴露 github 密码
  43. # 启动 docker
  44. docker-compose build editor-server; # 和 docker-compose.yml service 名字一致
  45. docker-compose up -d;
  46. "
  47. - name: delete ssh key # 删除 ssh key
  48. run: rm -rf ~/.ssh/id_rsa
  • 登录测试机的思路:就是把本机的私钥和known_hosts文件放在github的服务器上,这样github的服务器就跟本机一样,可以直接通过ssh协议登录云服务器了。

WFP_ID_RSA是在github创建的变量