Skip to content

Commit

Permalink
docs: 二进制部署文档优化 TencentBlueKing#2537
Browse files Browse the repository at this point in the history
  • Loading branch information
zzdjx authored Sep 10, 2024
1 parent 64d0b2a commit c39814e
Showing 1 changed file with 171 additions and 49 deletions.
220 changes: 171 additions & 49 deletions docs/install/binary/README.md
Original file line number Diff line number Diff line change
@@ -1,109 +1,231 @@
# 安装部署
# 安装部署指南

## 1. 部署目录说明
本文主要着重于二进制部署,基于项目原先的部署文档进行补充和完善。

部署的目录遵循蓝鲸运营规范,这里举例以/data/bkee 作为主目录,用户可以自行更换,比如叫/a/b 都可以。目录层次多,需要仔细看,具体如下:
## 1. 前期准备说明

### 1.1 拉取代码以及编译

请参照仓库上的文档进行操作:[代码拉取及编译](../compile.md)

### 1.2 部署目录说明

部署的目录遵循蓝鲸运营规范,这里举例以 `/data/bkee` 作为主目录,用户可以自行更换,比如叫 `/a/b` 都可以。目录层次多,需要仔细看,具体如下:

```shell
|- /data/bkee # 蓝鲸根目录
|- ci # ci部署程序目录
|- bkrepo # bkrepo部署目录
```

具体说明下以下章节
具体说明如下章节

### 1.1 bkrepo部署目录
### 1.3 bkrepo部署目录

```shell
|- /data/bkee/bkrepo # 程序主目录
|- backend # 后端程序目录
|- frontend # 存放的前端发布的静态资源目录
|- gateway # 网关配置文件及lua脚本
|- scripts # 部署脚本
|- support-files # 配置文件目录
|- src
|- backend # 后端程序目录
|- frontend # 存放前端发布的静态资源目录
|- gateway # 网关配置文件及lua脚本
|- scripts # 部署脚本
|- support-files # 配置文件目录
```

### 1.4 系统要求

## 2.服务部署
- CentOS 7.x +
- JDK 1.8
- MongoDB 3.6 +
- Consul 1.0 +

### 2.1 系统要求
### 1.5 设置部署环境变量

- CentOS 7.X
- jdk: 1.8
- mongodb 3.6
- Consul 1.0+ [Consul安装](consul.md)
编辑系统环境变量文件:

```bash
sudo vim /etc/profile
```

### 2.2 设置部署环境变量

| 变量名 | 用途 |
| ------------ |---------------------------|
|WORK_DIR| bkrepo安装目录,以/data/bkee/为例 |
|BK_REPO_MONGODB_USER| mongodb 用户名 |
|BK_REPO_MONGODB_PASSWORD| mongodb密码 |
|BK_REPO_MONGODB_ADDR| mongodb地址 |
|BK_REPO_MONGODB_DB_NAME| mongodb数据库名 |
|BK_REPO_SERVICE_PREFIX| bkrepo服务前缀,默认为bkrepo- |
|BK_REPO_CONSUL_SERVER_HOST| bkrepo consul服务ip |
|BK_REPO_CONSUL_SERVER_PORT| bkrepo consul服务port |
添加以下内容:

```bash
export WORK_DIR=/data/bkee
export BK_REPO_MONGODB_USER=<mongodb用户名>
export BK_REPO_MONGODB_PASSWORD=<mongodb密码>
export BK_REPO_MONGODB_ADDR=<mongodb地址>
export BK_REPO_MONGODB_DB_NAME=<mongodb数据库名>
export BK_REPO_SERVICE_PREFIX=bkrepo-
export BK_REPO_CONSUL_SERVER_HOST=<consul服务IP>
export BK_REPO_CONSUL_SERVER_PORT=<consul服务端口>
```

### 2.2 mongodb数据库初始化
### 1.6 MongoDB初始化

将support-files/sql 目录下按文件序号顺序执行
按文件序号顺序执行 `support-files/sql` 目录下的脚本:

```shell
```bash
mongo -u $BK_REPO_MONGODB_USER -p $BK_REPO_MONGODB_PASSWORD $BK_REPO_MONGODB_ADDR/$BK_REPO_MONGODB_DB_NAME init-data.js
```

### 2.2 consul配置初始化,后端配置文件渲染
### 1.7 repo.env文件完善

涉及到配置文件里面有双"_"下划线定义的变量需要做占位符号替换,已经抽离到scripts/repo.env文件里:
配置 `$WORK_DIR/bkrepo/scripts/repo.env` 相关参数,按照说明进行补充完善空白,例如Redis的配置信息等。[env说明文档](../env.md)

- scripts/repo.env 中有对应的配置项,需要进行修改,如果遇到配置项涉及到蓝鲸的或者不会用到的,则可以保持默认配置不修改即可,修改后保存退出
注意:`BK_REPO_DEPLOY_MODE` 应设置为 `standalone` 而非 `ci`

- 修改INSTALL_PATH,这个为安装主目录,默认是/data/bkee
- 修改MODULE变量建议不要修改,默认为bkrepo

```shell
## 2. 安装Consul

### 2.1 安装及启动

参照官方文档进行安装:[安装consul](consul.md)

推荐采用服务端和客户端的方式启动。

示例:

```bash
consul agent -data-dir=/usr/local/var/consul -datacenter=bk-repo -domain=bk-repo -bind=<本地IP> -retry-join=<consul服务端IP> -http-port=8081 -ui (本地执行)
consul agent -server -data-dir=/data/consul -ui -client=0.0.0.0 -bind=<consul服务端IP> -http-port=8500 -datacenter=bk-repo -domain=bk-repo -bootstrap (工作机执行)
```

### 2.2 Consul配置初始化及后端配置文件渲染

涉及到配置文件里面有双"_"下划线定义的变量需要做占位符号替换,已经抽离到 `scripts/repo.env` 文件里:

- `scripts/repo.env` 中有对应的配置项,需要进行修改,如果遇到配置项涉及到蓝鲸的或者不会用到的,则可以保持默认配置不修改即可,修改后保存退出。

- 修改 `INSTALL_PATH`,这个为安装主目录,默认是 `/data/bkee`
- 修改 `MODULE` 变量建议不要修改,默认为 `bkrepo`

```bash
cd $WORK_DIR/bkrepo/scripts
chmod +x render_tpl
./render_tpl -u -p $WORK_DIR -m bkrepo -e repo.env $WORK_DIR/bkrepo/support-files/templates/*.yaml

services=(auth repository dockerapi generic docker helm maven npm)
for var in ${services[@]};
do
for var in ${services[@]}; do
service=$BK_REPO_SERVICE_PREFIX$var
echo $service
curl -T $WORK_DIR/etc/bkrepo/$var.yaml http://$BK_REPO_CONSUL_SERVER_HOST:$BK_REPO_CONSUL_SERVER_PORT/v1/kv/bkrepo-config/$service/data
done

curl -T $WORK_DIR/etc/bkrepo/application.yaml http://$BK_REPO_CONSUL_SERVER_HOST:$BK_REPO_CONSUL_SERVER_PORT/v1/kv/bkrepo-config/application/data
echo "put config to consul kv success."
```

注意:生成的配置文件部分服务可能会有问题,例如 `auth` 模块,后续需要手动调整。auth报错是因为github拉下来的代码鉴权模式默认为bkiam,要更改为local。

## 3 程序部署
## 3. 程序部署

### 3.1 网关部署

采用OpenResty作为网关服务器,部署主要分为OpenResty安装, gateway的lua和nginx配置代码部署两部分。
采用OpenResty作为网关服务器,部署主要分为OpenResty安装,gateway的lua和nginx配置代码部署两部分。

- [bkrepo网关部署](gateway.md)
#### 3.1.1 安装OpenResty

本次安装的是OpenResty 1.15.8.3版本。

### 3.2 前端部署
安装完毕后检查安装情况:

- [前端编译](frontend.md),对编译有兴趣可以自行研究
```bash
cd /usr/local/openresty/nginx && ./sbin/nginx -v
```

前端配置文件渲染
如果出现 `nginx version: openresty/1.15.8.3` 则代表安装成功。

```shell
#### 3.1.2 配置网关

确保前面的 `repo.env` 文件配置正确。

```bash
cd $WORK_DIR/bkrepo/scripts
chmod +x render_tpl
./render_tpl -u -p /data/bkee -m bkrepo -e repo.env /data/workspace/frontend/ui/frontend#ui#index.html
./render_tpl -u -p /data/bkee -m bkrepo -e repo.env $WORK_DIR/bkrepo/support-files/templates/gateway*
```

执行上述命令会在代码目录生成一个 `gateway` 模块,将其移动到代码目录 `src` 下的 `gateway` 包中。

然后将 `/src/gateway` 模块软链接到nginx的 `conf` 目录下:

```bash
rm -rf /usr/local/openresty/nginx/conf
ln -s $WORK_DIR/bkrepo/gateway /usr/local/openresty/nginx/conf
```

另外,`repo.env` 中的 `BK_REPO_HOST` 需要在本地和工作机上配置:

```bash
sudo vim /etc/hosts
```

例如:

```bash
<工作机IP> bkrepo.example.com (访问域名自己定义)
```

#### 3.1.3 启动命令

```bash
mkdir -p /usr/local/openresty/nginx/run/ # 创建PID目录
cd /usr/local/openresty/nginx # 进入nginx安装目录
./sbin/nginx -t # 验证nginx的配置是否正确
./sbin/nginx # 启动nginx
./sbin/nginx -s reload # 重启nginx
```

### 3.2 前端部署

#### 3.2.1 前端编译

- [前端编译](frontend.md),对编译有兴趣可以自行研究

#### 3.2.2 打包压缩

```bash
cd ${WORK_DIR}/src/frontend/frontend/
zip -r ui_raw.zip ui
mv ui_raw.zip ${WORK_DIR}
```

#### 3.2.3 渲染配置出包

```bash
rm -rf ${WORK_DIR}/web
chmod +x ${WORK_DIR}/scripts/render_tpl
cd $WORK_DIR
mkdir -p ${WORK_DIR}/web/frontend/ui/
cp -r ${WORK_DIR}/src/frontend/frontend/ui/* ${WORK_DIR}/web/frontend/ui/
${WORK_DIR}/scripts/render_tpl -u -p . -m web -e ${WORK_DIR}/scripts/repo.env -E BK_REPO_DEPLOY_MODE=standalone ${WORK_DIR}/src/frontend/frontend/ui/frontend*
```

重新打包:

```bash
cd ${WORK_DIR}/web/frontend/
zip -r ui.zip ui
mv ui.zip ${WORK_DIR}/frontend
```

解压:

```bash
cd ${WORK_DIR}/frontend
rm -rf ui
unzip ui.zip
```

检查 `src/gateway/lua/init.lua` 中的 `static_dir` 和解压的 `ui` 目录是否一致,例如:

```lua
static_dir = "/data/bkee/bkrepo/frontend"
```

### 3.3 后端微服务部署

- [后端服务部署](backend.md)



访问 `BK_REPO_HOST` 进行验证。
```

0 comments on commit c39814e

Please sign in to comment.