From c39814e7b832ca0cd7f0ff23316c5961136f1dde Mon Sep 17 00:00:00 2001 From: zzdjx <116262724+zzdjx@users.noreply.github.com> Date: Tue, 10 Sep 2024 09:41:53 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E4=BA=8C=E8=BF=9B=E5=88=B6=E9=83=A8?= =?UTF-8?q?=E7=BD=B2=E6=96=87=E6=A1=A3=E4=BC=98=E5=8C=96=20#2537?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/install/binary/README.md | 220 ++++++++++++++++++++++++++-------- 1 file changed, 171 insertions(+), 49 deletions(-) diff --git a/docs/install/binary/README.md b/docs/install/binary/README.md index a91996d120..86d239883a 100644 --- a/docs/install/binary/README.md +++ b/docs/install/binary/README.md @@ -1,8 +1,16 @@ -# 安装部署 +# 安装部署指南 -## 1. 部署目录说明 +本文主要着重于二进制部署,基于项目原先的部署文档进行补充和完善。 -部署的目录遵循蓝鲸运营规范,这里举例以/data/bkee 作为主目录,用户可以自行更换,比如叫/a/b 都可以。目录层次多,需要仔细看,具体如下: +## 1. 前期准备说明 + +### 1.1 拉取代码以及编译 + +请参照仓库上的文档进行操作:[代码拉取及编译](../compile.md) + +### 1.2 部署目录说明 + +部署的目录遵循蓝鲸运营规范,这里举例以 `/data/bkee` 作为主目录,用户可以自行更换,比如叫 `/a/b` 都可以。目录层次多,需要仔细看,具体如下: ```shell |- /data/bkee # 蓝鲸根目录 @@ -10,95 +18,208 @@ |- 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= +export BK_REPO_MONGODB_PASSWORD= +export BK_REPO_MONGODB_ADDR= +export BK_REPO_MONGODB_DB_NAME= +export BK_REPO_SERVICE_PREFIX=bkrepo- +export BK_REPO_CONSUL_SERVER_HOST= +export BK_REPO_CONSUL_SERVER_PORT= +``` -### 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= -http-port=8081 -ui (本地执行) +consul agent -server -data-dir=/data/consul -ui -client=0.0.0.0 -bind= -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 后端微服务部署 @@ -106,4 +227,5 @@ chmod +x render_tpl - [后端服务部署](backend.md) - +访问 `BK_REPO_HOST` 进行验证。 +```