配置测试机
创建 work 账号
出于安全考虑,日常不会用root账号登录,权限太高了。
root登录,创建work账号。
adduser work
passwd work
添加 work 的 sudo 权限
whereis sudoers # 找到文件位置 /etc/sudoers
chmod 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 ~/.ssh
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】
- 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` 内容如下:
```shell
name: deploy for dev
on:
push:
branches:
- 'dev' # 只针对 dev 分支
paths:
- '.github/workflows/*'
# - '__test__/**' # dev 不需要立即测试
- 'src/**'
- 'Dockerfile'
- 'docker-compose.yml'
- 'bin/*'
jobs:
deploy-dev:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: set ssh key # 临时设置 ssh key
run: |
mkdir -p ~/.ssh/
# secrets.WFP_ID_RSA github里面设置的
echo "${{secrets.WJY_ID_RSA}}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-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 密码
# 启动 docker
docker-compose build editor-server; # 和 docker-compose.yml service 名字一致
docker-compose up -d;
"
- name: delete ssh key # 删除 ssh key
run: rm -rf ~/.ssh/id_rsa
- 登录测试机的思路:就是把本机的私钥和known_hosts文件放在github的服务器上,这样github的服务器就跟本机一样,可以直接通过ssh协议登录云服务器了。
WFP_ID_RSA是在github创建的变量