配置测试机
创建 work 账号
出于安全考虑,日常不会用root账号登录,权限太高了。
root登录,创建work账号。
adduser workpasswd work
添加 work 的 sudo 权限
whereis sudoers # 找到文件位置 /etc/sudoerschmod u+w /etc/sudoers # 修改权限, u表示所有者, w表示写权限 +表示添加vim /etc/sudoers # 编辑该文件# 找到 `root ALL=(ALL) ALL`# 再加一行 `work ALL=(ALL) ALL`chmod u-w /etc/sudoers
然后使用 work 登录机器。输入 su 命令(命令用于变更为其他使用者的身份)再输入 root 账号的密码,即可拥有超级权限。
登录信任
使用work登录机器,创建~/.ssh/authorized_keys文件。
# 修改文件夹权限chmod 700 ~/.sshchmod 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】
- runner 使用 github actions 监听 dev 分支 push
- 登录测试机,获取最新 dev 分支代码
- 重新构建镜像
docker-compose build editor-server - 重启所有容器
docker-compose up -d

【方法2】
yy用的方法
- github runner :构建镜像,并把镜像推到自建的镜像仓库
- 部署服务器:到统一部署平台那里点击发布时,会镜像仓库中的镜像拉取到部署服务器进行部署(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
<a name="OPtoE"></a>### 【方法3】添加自己的gihub runner 然后部署和发布都在这台机器。<a name="aOCok"></a>## 代码实现新建 `deploy-dev.yml` 内容如下:```shellname: deploy for devon:push:branches:- 'dev' # 只针对 dev 分支paths:- '.github/workflows/*'# - '__test__/**' # dev 不需要立即测试- 'src/**'- 'Dockerfile'- 'docker-compose.yml'- 'bin/*'jobs:deploy-dev:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v2- name: set ssh key # 临时设置 ssh keyrun: |mkdir -p ~/.ssh/# secrets.WFP_ID_RSA github里面设置的echo "${{secrets.WJY_ID_RSA}}" > ~/.ssh/id_rsachmod 600 ~/.ssh/id_rsassh-keyscan "114.132.153.108" >> ~/.ssh/known_hosts- name: deploy # 部署run: |ssh work@114.132.153.108 "# 【注意】用 work 账号登录,手动创建 /home/work/imooc-lego 目录# 然后 git clone https://username:password@github.com/imooc-lego/biz-editor-server.git -b dev (私有仓库,使用 github 用户名和密码)# 记得删除 origin ,否则会暴露 github 密码cd /home/work/low-code/biz-editor-server;git remote add origin https://wangfupeng1988:${{secrets.WFP_PASSWORD}}@github.com/imooc-lego/biz-editor-server.git;git checkout dev;git pull origin dev; # 重新下载最新代码git remote remove origin; # 删除 origin ,否则会暴露 github 密码# 启动 dockerdocker-compose build editor-server; # 和 docker-compose.yml service 名字一致docker-compose up -d;"- name: delete ssh key # 删除 ssh keyrun: rm -rf ~/.ssh/id_rsa
- 登录测试机的思路:就是把本机的私钥和known_hosts文件放在github的服务器上,这样github的服务器就跟本机一样,可以直接通过ssh协议登录云服务器了。
WFP_ID_RSA是在github创建的变量
