# nre **Repository Path**: chejie1099/nre ## Basic Information - **Project Name**: nre - **Description**: nre yunwei - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-01-24 - **Last Updated**: 2024-01-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 部署说明 - [部署说明](#%E9%83%A8%E7%BD%B2%E8%AF%B4%E6%98%8E) - [部署清单](#%E9%83%A8%E7%BD%B2%E6%B8%85%E5%8D%95) - [环境信息](#%E7%8E%AF%E5%A2%83%E4%BF%A1%E6%81%AF) - [正式环境](#%E6%AD%A3%E5%BC%8F%E7%8E%AF%E5%A2%83) - [配置NTP时钟同步](#%E9%85%8D%E7%BD%AEntp%E6%97%B6%E9%92%9F%E5%90%8C%E6%AD%A5) - [部署/更新说明linux 服务器](#%E9%83%A8%E7%BD%B2%E6%9B%B4%E6%96%B0%E8%AF%B4%E6%98%8Elinux-%E6%9C%8D%E5%8A%A1%E5%99%A8) - [流程](#%E6%B5%81%E7%A8%8B) - [准备](#%E5%87%86%E5%A4%87) - [服务器环境准备](#%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87) - [安装自颁发证书CA证书](#%E5%AE%89%E8%A3%85%E8%87%AA%E9%A2%81%E5%8F%91%E8%AF%81%E4%B9%A6ca%E8%AF%81%E4%B9%A6) - [systemd 服务说明](#systemd-%E6%9C%8D%E5%8A%A1%E8%AF%B4%E6%98%8E) - [基本说明假设 服务名 为 kestrel-wiz_easc35_api_prod_nre](#%E5%9F%BA%E6%9C%AC%E8%AF%B4%E6%98%8E%E5%81%87%E8%AE%BE-%E6%9C%8D%E5%8A%A1%E5%90%8D-%E4%B8%BA-kestrel-wiz_easc35_api_prod_nre) - [部署应用假设 应用名 为 wiz_easc35_api](#%E9%83%A8%E7%BD%B2%E5%BA%94%E7%94%A8%E5%81%87%E8%AE%BE-%E5%BA%94%E7%94%A8%E5%90%8D-%E4%B8%BA-wiz_easc35_api) - [更新应用](#%E6%9B%B4%E6%96%B0%E5%BA%94%E7%94%A8) - [应用清单与 products.json 中一致](#%E5%BA%94%E7%94%A8%E6%B8%85%E5%8D%95%E4%B8%8E-productsjson-%E4%B8%AD%E4%B8%80%E8%87%B4) - [nginx 站点说明](#nginx-%E7%AB%99%E7%82%B9%E8%AF%B4%E6%98%8E) - [基本说明假设 应用名 为 wiz_easc35_ui](#%E5%9F%BA%E6%9C%AC%E8%AF%B4%E6%98%8E%E5%81%87%E8%AE%BE-%E5%BA%94%E7%94%A8%E5%90%8D-%E4%B8%BA-wiz_easc35_ui) - [部署应用假设 应用名为 wiz_easc35_ui](#%E9%83%A8%E7%BD%B2%E5%BA%94%E7%94%A8%E5%81%87%E8%AE%BE-%E5%BA%94%E7%94%A8%E5%90%8D%E4%B8%BA-wiz_easc35_ui) - [更新应用假设 应用名为 wiz_easc35_ui](#%E6%9B%B4%E6%96%B0%E5%BA%94%E7%94%A8%E5%81%87%E8%AE%BE-%E5%BA%94%E7%94%A8%E5%90%8D%E4%B8%BA-wiz_easc35_ui) - [应用清单与 products.json 中一致](#%E5%BA%94%E7%94%A8%E6%B8%85%E5%8D%95%E4%B8%8E-productsjson-%E4%B8%AD%E4%B8%80%E8%87%B4) - [wiz-io 部署和更新](#wiz-io-%E9%83%A8%E7%BD%B2%E5%92%8C%E6%9B%B4%E6%96%B0) - [说明](#%E8%AF%B4%E6%98%8E) - [首次部署](#%E9%A6%96%E6%AC%A1%E9%83%A8%E7%BD%B2) - [更新 wiz-io](#%E6%9B%B4%E6%96%B0-wiz-io) - [TPR 客户端升级](#tpr-%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%8D%87%E7%BA%A7) - [更新流程](#%E6%9B%B4%E6%96%B0%E6%B5%81%E7%A8%8B) - [升级站点信息](#%E5%8D%87%E7%BA%A7%E7%AB%99%E7%82%B9%E4%BF%A1%E6%81%AF) - [流程步骤说明](#%E6%B5%81%E7%A8%8B%E6%AD%A5%E9%AA%A4%E8%AF%B4%E6%98%8E) - [客户端需要配置应用和端口清单](#%E5%AE%A2%E6%88%B7%E7%AB%AF%E9%9C%80%E8%A6%81%E9%85%8D%E7%BD%AE%E5%BA%94%E7%94%A8%E5%92%8C%E7%AB%AF%E5%8F%A3%E6%B8%85%E5%8D%95) - [elasticsearch 7.17.3 部署](#elasticsearch-7173-%E9%83%A8%E7%BD%B2) - [说明](#%E8%AF%B4%E6%98%8E) - [部署](#%E9%83%A8%E7%BD%B2) - [zabbix 部署](#zabbix-%E9%83%A8%E7%BD%B2) - [说明](#%E8%AF%B4%E6%98%8E) - [部署](#%E9%83%A8%E7%BD%B2) - [使用](#%E4%BD%BF%E7%94%A8) - [tools 说明](#tools-%E8%AF%B4%E6%98%8E) - [应用信息配置文件 products.json](#%E5%BA%94%E7%94%A8%E4%BF%A1%E6%81%AF%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6-productsjson) - [自动部署脚本 deploy_app.sh](#%E8%87%AA%E5%8A%A8%E9%83%A8%E7%BD%B2%E8%84%9A%E6%9C%AC-deploy_appsh) - [FAQ](#faq) - [临时文件中转](#%E4%B8%B4%E6%97%B6%E6%96%87%E4%BB%B6%E4%B8%AD%E8%BD%AC) - [待办事项](#%E5%BE%85%E5%8A%9E%E4%BA%8B%E9%A1%B9) ## 部署清单 以现场正式环境为例, 见`excel`表 ## 环境信息 ### 正式环境 1. 服务器 | 服务器名称 | IP地址 | 操作系统 | 备注 | | --- | --- | --- | --- | | appserver01 | 172.16.8.102 | centos8.2 | | | appserver02 | 172.16.8.105 | windows2019 server standard | | 1. 部署环境名 `prod` 1. 部署实例名 `nre` #### 配置NTP时钟同步 1. `CentOS` ``` yum -y install chrony systemctl restart chronyd systemctl enable chronyd ``` 1. `Windows Server` - 手动配置 ## 部署/更新说明(linux 服务器) ### 流程 ```mermaid graph LR S(开始) --> 1[提交git] --> 2[jenkins发布] --> 3[deploy_app部署/更新] --> 4[验证] --> E(结束) ``` - `提交git` 开发人员 - `jenkins发布` 发布人员 - `deploy_app部署/更新` 现场实施人员 - `验证` 现场实施人员 ### 准备 1. 将本目录下所有的内容复制到服务器 `/tmp/setup/` 目录下 ### 服务器环境准备 1. **注意** 请修改 `/tmp/setup/init-host.sh` 中`CentOS`版本, 根据情况设置为 `8` 或 `7`, 可选目前正式环境为 `CentOS 8` ``` centos_ver=8 ``` 1. 执行初始化 ``` cd /tmp/setup/ bash init-host.sh ``` 1. 初始化会完成以下任务 - 创建部署用户 `pengrui`, 授予`sudo`权限 - 安装自动化部署脚本 `deploy_app.sh` - 创建部署目录 `/data/plantresource` - 安装工具软件 `rsync`, `jq` - 部署 `products.json` - 开放防火墙端口(防火墙关闭则不需要) - 安装 `aspnetcore` 运行环境 - `aspnetcore2.2` `aspnetcore6.0` - `libgdiplus-devel` `libunwind` - 服务模板 - 安装 `java` 运行环境 - `java-1.8.0-openjdk` - 服务模板 - 安装 `nginx` 和 `前端` 运行环境 - `nginx` - 服务模板 ### 安装自颁发证书CA证书 ``` cd /tmp/setup/ bash install-trusted-ca.sh ``` - 信任我司自颁发的证书 - 解决在本服务器运行的系统(如`OA系统`)访问 自颁发证书应用 时出现非法证书问题 ### `systemd` 服务说明 #### 基本说明(假设 服务名 为 `kestrel-wiz_easc35_api_prod_nre`) - `systemd` 服务配置文件: `/etc/systemd/system/kestrel-wiz_easc35_api_prod_nre.service` - 管理服务 1. 启动服务 ``` systemctl start kestrel-wiz_easc35_api_prod_nre ``` 1. 重启服务 ``` systemctl restart kestrel-wiz_easc35_api_prod_nre ``` 1. 停止服务 ``` systemctl stop kestrel-wiz_easc35_api_prod_nre ``` 1. 禁用服务(下次系统重启时服务**不会**自动重启) ``` systemctl disable kestrel-wiz_easc35_api_prod_nre ``` 1. 启用服务(下次系统重启时服务**会**自动重启) ``` systemctl enable kestrel-wiz_easc35_api_prod_nre ``` #### 部署应用(假设 应用名 为 `wiz_easc35_api`) 1. (可选) 复制原有部署 ``` mkdir -p /data/plantresource/wiz_easc35_api/prod_nre/current cp -r /path_to_olddeploy/* /data/plantresource/wiz_easc35_api/prod_nre/current/ chown -R pengrui:pengrui /data/plantresource/wiz_easc35_api/prod_nre/current ``` 1. 以 pengrui 用户执行以下脚本 ``` su pengrui deploy_app.sh -p wiz_easc35_api ``` - 此过程会自动创建服务, 并从发布服务拉取部署 #### 更新应用 1. 以 `pengrui` 用户执行以下脚本 ``` su pengrui deploy_app.sh -p wiz_easc35_api ``` - 此过程会自动从发布服务器**增量**方式拉取更新包, 部署成功后会重启服务 - 如果对服务做了变更(如修改了端口), 请加上 `--changed` 选项 执行 ``` deploy_app.sh -p wiz_easc35_api --changed ``` - 此时将修改 `systemd` 服务配置 #### 应用清单(与 `products.json` 中一致) 1. `wiz_easc35_api` - 以`systemd`服务运行 - 服务运行账号为 `pengrui` - 服务名为 `kestrel-wiz_easc35_api_prod_nre` - 部署路径: `/data/plantresource/wiz_easc35_api/prod_nre/current` - 服务类型: `aspnetcore` 1. `wiz_stdmanage_api` - 以systemd服务运行 - 服务运行账号为 `pengrui` - 服务名为 `kestrel-wiz_stdmanage_api_prod_nre` - 部署路径: `/data/plantresource/wiz_stdmanage_api/prod_nre/current` - 服务类型: `aspnetcore` 1. `wiz_meeting_server` - 以systemd服务运行 - 服务运行账号为 `pengrui` - 服务名为 `kestrel-wiz_meeting_server_prod_nre` - 部署路径: `/data/plantresource/wiz_meeting_server/prod_nre/current` - 服务类型: `aspnetcore` 1. `wiz_niger_server` - 以`systemd`服务运行 - 服务运行账号为 `pengrui` - 服务名为 `kestrel-wiz_niger_server_prod_nre` - 部署路径: `/data/plantresource/wiz_niger_server/prod_nre/current` - 服务类型: `aspnetcore` 1. `wiz_niger_taskjob` - 以`systemd`服务运行 - 服务运行账号为 `pengrui` - 服务名为 `kestrel-wiz_niger_taskjob_prod_nre` - 部署路径: `/data/plantresource/wiz_niger_taskjob/prod_nre/current` - 服务类型: `aspnetcore` 1. `wiz_log` - 以`systemd`服务运行 - 服务运行账号为 `pengrui` - 服务名为 `kestrel-wiz_log_prod_nre` - 部署路径: `/data/plantresource/wiz_log/prod_nre/current` - 服务类型: `aspnetcore` 1. `wiz_survey` - 以`systemd`服务运行 - 服务运行账号为 `pengrui` - 服务名为 `java-wiz_survey_prod_nre` - 部署路径: `/data/plantresource/wiz_survey/prod_nre/current` - 服务类型: `jre` 1. `wiz_visualization` - 以`systemd`服务运行 - 服务运行账号为 `pengrui` - 服务名为 `java-wiz_visualization_prod_nre` - 部署路径: `/data/plantresource/wiz_visualization/prod_nre/current` - 服务类型: `jre` - 安装完成后初始化步骤 1. 将 dataease.zip 解压存放到/opt目录下 - 解压后结构如下: `/opt/dataease/data` - 压缩包位置: `minio03/downloads/tools/dataease.zip` 1. `wiz_kettle` - 以`systemd`服务运行 - 服务运行账号为 `pengrui` - 服务名为 `java-wiz_kettle_prod_nre` - 部署路径: `/data/plantresource/wiz_kettle/prod_nre/current` - 服务类型: `jre` - 安装完成后步骤 - 在客户机安装转换工具,并创建空资源库 - 安装方式: 解压 `pdi-ce-8.0.0.0-28.zip ` - 压缩包位置: `minio03/downloads/tools/pdi-ce-8.0.0.0-28.zip` - 创建空资源库方法: [参考文档](https://doc.weixin.qq.com/doc/w3_AEMAIgZ0ALEYzFGvYexTJuFGRMUQd?scode=AJwA4AevAAsIbLzvcdAJUAxAbnAOU) ### `nginx` 站点说明 #### 基本说明(假设 应用名 为 `wiz_easc35_ui`) - `nginx` 配置文件: `/data/plantresource/conf/wiz_easc35_ui_prod_nre.conf` - 管理服务 1. 重新加载 `nginx` 配置 ``` systemctl reload nginx ``` 1. 启动服务 ``` systemctl start nginx ``` 1. 重启服务 ``` systemctl restart nginx ``` 1. 停止服务 ``` systemctl stop nginx ``` 1. 禁用服务(下次系统重启时服务**不会**自动重启) ``` systemctl disable nginx ``` 1. 启用服务(下次系统重启时服务**会**自动重启) ``` systemctl enable nginx ``` #### 部署应用(假设 应用名为 `wiz_easc35_ui`) 1. (可选) 复制原有部署 ``` mkdir -p /data/plantresource/wiz_easc35_ui/prod_nre/current cp -r /path_to_olddeploy/* /data/plantresource/wiz_easc35_ui/prod_nre/current/ chown -R pengrui:pengrui /data/plantresource/wiz_easc35_ui/prod_nre/current ``` 1. 以 `pengrui` 用户执行以下脚本 ``` su pengrui deploy_app.sh -p wiz_easc35_ui ``` - 此过程会自动创建 `nginx` 配置文件, 并从发布服务拉取部署 #### 更新应用(假设 应用名为 `wiz_easc35_ui`) 1. 以 `pengrui` 用户执行以下脚本 ``` su pengrui deploy_app.sh -p wiz_easc35_ui ``` - 此过程会自动从发布服务器以**增量**方式拉取更新包, 部署成功后会重启 `nginx` 服务 - 如果对服务做了变更(如修改了端口), 请加上 `--changed` 选项 执行 ``` deploy_app.sh -p wiz_easc35_ui --changed ``` - 此时会修改 `nginx` 配置文件 #### 应用清单(与 `products.json` 中一致) 1. `wiz_easc35_ui` - 以`systemd`服务运行(`nginx`) - `nginx` 配置文件路径: `/data/plantresource/conf/wiz_easc35_ui_prod_nre.conf` - 服务名为 `nginx` - 部署路径: `/data/plantresource/wiz_easc35_ui/prod_nre/current` - 服务类型: `vueui` 1. `wiz_stdmanage_ui` - 以`systemd`服务运行(`nginx`) - `nginx` 配置文件路径: `/data/plantresource/conf/wiz_stdmanage_ui_prod_nre.conf` - 服务名为 `nginx` - 部署路径: `/data/plantresource/wiz_stdmanage_ui/prod_nre/current` - 服务类型: `vueui` 1. `wiz_survey_ui` - 以systemd服务运行(`nginx`) - `nginx` 配置文件路径: `/data/plantresource/conf/wiz_survey_ui_prod_nre.conf` - 服务名为 `nginx` - 部署路径: `/data/plantresource/wiz_survey_ui/prod_nre/current` - 服务类型: `vueui` - **no_pull** 跳过自动拉取部署包(打包有问题) 1. `wiz_avatar` - 以`systemd`服务运行(`nginx`) - `nginx` 配置文件路径: `/data/plantresource/conf/wiz_avatar_prod_nre.conf` - 服务名为 `nginx` - 部署路径: `/data/plantresource/wiz_avatar/prod_nre/current` - 服务类型: `vueui` - **no_pull** 跳过自动拉取部署包 1. `wiz_task` - 以`systemd`服务运行(`nginx`) - `nginx` 配置文件路径: `/data/plantresource/conf/wiz_task_prod_nre.conf` - 服务名为 `nginx` - 部署路径: `/data/plantresource/wiz_task/prod_nre/current` - 服务类型: `vueui` - **no_pull** 跳过自动拉取部署包 1. `wiz_visualization_ui` - 以`systemd`服务运行(`nginx`) - `nginx` 配置文件路径: `/data/plantresource/conf/wiz_visualization_ui_prod_nre.conf` - 服务名为 `nginx` - 部署路径: `/data/plantresource/wiz_visualization_ui/prod_nre/current` - 服务类型: `vueui` 1. `oa`(由于`oa`也使用`nginx`做承载, 只做了`nginx`配置文件, 不做部署和更新) - 以`systemd`服务运行(`nginx`) - `nginx` 配置文件路径: `/data/plantresource/conf/oa.conf` - 服务名为 `nginx` - 部署路径: `/data/oa/build/server/front/river` ### `wiz-io` 部署和更新 #### 说明 1. wiz_io 服务 - 以`systemd`服务运行 - 服务运行账号为 `pengrui` - 服务名为 `wiz_io` - 部署路径: `/data/plantresource/wiz_io/prod_nre/current/` - 环境变量文件: `/data/plantresource/wiz_io.env` - `console` 文件路径: `/usr/local/bin/console` - 定制管理控制台 1. minio 服务 - 以`systemd`服务运行 - 服务运行账号为 `pengrui` - 服务名为 `minio` - 部署路径: `/data/plantresource/wiz_io/prod_nre/current/` - 环境变量文件: `/data/plantresource/minio.env` - `minio` 文件路径: `/usr/local/bin/minio` - oss存储服务 1. kkfileview文件下载站点 - 以`systemd`服务运行(`nginx`) - `nginx` 配置文件路径: `/data/plantresource/conf/wiz-io-fileview-prod_nre.conf` - 服务名为 `nginx` - 站点路径: `/data/plantresource/wiz_io/prod_nre/current/` #### 首次部署 1. (可选) 复制原有部署 ``` mkdir -p /data/plantresource/wiz_io/prod_nre/current/ cp -r /path_to_olddeploy/* /data/plantresource/wiz_io/prod_nre/current/ chown -R pengrui:pengrui /data/plantresource/wiz_io/prod_nre/current/ ``` 1. 执行以下脚本安装 ``` cd /tmp/setup/ bash install-wiz-io.sh ``` - **注意** 安装过程中会提示输入`minio`的用户名和密码,请直接输入回车 - 安装 `minio` 服务 - 安装 `wiz_io` 服务 - 安装 更新脚本 `update-wiz-io.sh` #### 更新 `wiz-io` 1. 执行以下脚本(以`pengrui`账号运行 `su pengrui`) ``` update-wiz-io.sh ``` - 先会判断发布服务器上是否有更新(根据md5判断) - 没有更新, 则提示退出 - 有更新, 则更新本地 `wiz_io` 1. wiz_io 更新流程 ```mermaid graph LR S(开始) --> 1[提交git] --> 2[发布] --> 3[更新] --> 4[验证] --> E(结束) ``` - `提交git` 开发人员 - `发布` 发布人员 - `更新` 现场实施人员(updata-wiz-io.sh) - `验证` 现场实施人员 ### TPR 客户端升级 #### 更新流程 ```mermaid graph LR S(开始) --> 0[确定发布版本号] --> 1[提交git] --> 2[发布] --> 3[更新] --> 4[升级] -->5[验证] --> E(结束) ``` - `确定发布版本号` 项目经理确定, 每次发布前必须确定 - `提交git` 开发人员(应设置本次发布正确的版本号) - `发布` 开发人员(upload_trp_client.bat) - `更新` 现场实施人员(update-trp-client.sh, 在应用系统添加本次发布版本号(这个用于什么地方?)) - `升级` 用户(客户端比对版本, 根据用户选择自动升级) - `验证` 现场实施人员/用户 #### 升级站点信息 1. 存储客户端最新版本升级文件的下载站点 - 以`systemd`服务运行(`nginx`) - `nginx` 配置文件路径: `/data/plantresource/conf/wiz_trp_client_prod_nre.conf` - 服务名为 `nginx` - 站点路径: `/data/plantresource/wiz_trp_client/prod_nre/current/` #### 流程步骤说明 1. 确定发布版本号 - 每次发布前必须写好, 不能随意修改版本, 通知开发人员和现场实施人员 1. 提交git - 应设置本次发布正确的版本号 - 提交git并建立发布tag 1. 发布 - 打包客户端 - 发布客户端 - [操作说明](./nre-client.md) 1. 更新(需要以 `pengrui` 账号执行以下脚本 su pengrui) 1. 更新客户程序包和生成文件版本清单 ``` update-trp-client.sh ``` - 此脚本实现: 1. 将发布服务器上的新版客户端部署到服务器供客户端自动升级 - 下载最新版本后会删除当前版本 - 会跳过配置文件 `Interface/scripts/pr/config.js` 1. 生成 `current.version.json` 文件 1. 只重新生成文件版本清单 ``` update-trp-client.sh -c ``` - 重新生成 `current.version.json` 文件 - 用于 `current.version.json` 和 实际客户端 不一致时 1. 只更新配置文件 ``` update-trp-client.sh -u ``` - 从发布服务器拉取最新配置文件(`Interface/scripts/pr/config.js`)进行更新 - **重要** 应用中配置文件不允许手动修改, 只能通过脚本更新 1. 只上传配置文件 ``` update-trp-client.sh -f ``` - `CONFIGFILE` 指定的配置文件 - 将 指定的配置文件 上传到发布服务器 - 使用 指定的配置文件 更新配置文件(`Interface/scripts/pr/config.js`) 1. 升级 - 客户端配置 - 文件版本地址: `https://xxxx:7885/current.version.json` - 客户端拉取地址: `http://xxxx:7885/current/` - 升级过程 1. 客户端启动时 或 从菜单选择 检查升级 时 1. 客户端判断本地版本是否为最新(...) - 是, 提示并结束 - 否, 显示新版本号和更新内容, 提示用户是否升级 - 用户选择不升级, 结束 - 用户选择升级, - 客户端下载 current.version.json 文件, 与本地 current.version.json 做比较 - 对于有更新的文件, 拉取最新替换本地文件 - 对于没有变化的文件, 跳过 - 提示更新成功, 重新加载客户端 #### 客户端需要配置应用和端口清单 ### `elasticsearch 7.17.3` 部署 #### 说明 1. 以`systemd`服务运行 1. 服务运行账号为 `elasticsearch` 1. 服务名为 `elasticsearch` 1. 配置文件路径 `/etc/elasticsearch/elasticsearch.yml` 1. 部署路径: `/data/plantresource/elasticsearch/data` 1. 日志文件目录: `/data/plantresource/elasticsearch/logs` #### 部署 1. 以root执行以下脚本安装 ``` cd /tmp/setup/ bash install-es.sh ``` 1. (可选) 复制原有部署(在安装成功后立即处理, **没有验证过**) ``` systemctl stop elasticsearch cp -r /data_path_to_olddeploy/* /data/plantresource/elasticsearch/data cp -r /logs_path_to_olddeploy/* /data/plantresource/elasticsearch/logs chown -R pengrui:pengrui /data/plantresource/elasticsearch systemctl start elasticsearch ``` ### `zabbix` 部署 #### 说明 1. 以`docker`容器运行 1. 部署路径: `/data/docker/zabbix` 1. 配置文件路径 `/data/docker/zabbix/docker-compose.yml` 1. docker数据卷根目录: `/data/docker/zabbix/volumes` 1. 数据库为mysql, 数据目录卷为 `/data/docker/zabbix/volumes/mysql` #### 部署 1. 部署 `zabbix` 容器 1. 以root执行以下脚本安装 ``` cd /tmp/setup/ bash install-zabbix.sh ``` 1. 更新配置文件 ``` bash install-zabbix.sh ``` 1. 重新部署`zabbix`(**注意**会删除所有的数据和配置) ``` bash install-zabbix.sh -c ``` 1. 首次部署或重新部署后配置`Zabbix server` host - 登录 `http://172.16.8.102:8080` 设置` Zabbix server` 的 agent ip地址为 `172.88.88.13` #### 使用 1. 访问 `http://172.16.8.102:8080` 1. 用指定的用户名密码登录系统 1. 进行配置或查看监控情况 1. 参考 [使用手册](https://www.zabbix.com/documentation/6.0/zh/manual) ## `tools` 说明 ### 应用信息配置文件 `products.json` 1. 配置环境实例信息 - `env` 环境信息, 固定为 `prod` - `area` 区域信息,尼日尔正式环境为 `nre` 1. 配置可自动部署的应用列表信息(`products` 节) - `name` 应用名称, 固定, 做为主键 - `type` 应用类型, 字典 - `aspnetcore` aspnetcore web应用 - `jre` java 应用 - `vueui` vue前端 应用 - `exec_file` 启动文件, 只有 `aspnetcore` 和 `jre` 应用类型需要 - `aspnetcore` 启动文件的后缀名一般为 `.dll` - `jre` 启动文件的后缀名一般为 `.jar` - `port` 应用部署端口 - `no_pull` 是否不需要从发布服务器拉取更新, `true`/`false`, 可选,默认为`false` - `true` 不需要拉取, 只用于快速部署服务 - `false`(默认值) 需要拉取, 适用于全自动部署和更新 ### 自动部署脚本 `deploy_app.sh` 1. 使用说明 ``` [pengrui@localhost ~]$ deploy_app.sh -h usage: /usr/local/bin/deploy_app.sh options: -p|--product-name 应用名称 --publish-server 发布服务器, 可选 --skip-pull 跳过代码拉取 --undeploy 卸载应用,可选 --changed 服务是否发生变化,如端口变化, 只有发生变化才需要设置 --list|-l 列出可用的产品名称 --help|-h 显示使用帮助,可选 ``` 1. 必须使用 `pengrui` 账号操作 - 如果不使用 `pengrui` 账号, 则会提示并退出, 防止误操作 1. 查看可部署应用名称 ``` [pengrui@localhost ~]$ deploy_app.sh -l wiz_easc35_api wiz_stdmanage_api wiz_meeting_server wiz_niger_server wiz_niger_taskjob wiz_easc35_ui wiz_stdmanage_ui wiz_survey_ui wiz_avatar wiz_survey ``` 1. 部署或更新应用 ``` deploy_app.sh -p wiz_easc35_api ``` - `-p` 指定要部署或更新的`应用名称`, 对应 `products.json` 中 `name` - 更新应用时会采用**增量**更新 1. 更新应用的服务配置 ``` deploy_app.sh -p wiz_easc35_api --changed ``` - `-p` 指定要部署或更新的`应用名称`, 对应 `products.json` 中 `name` - `--changed` 表示需要更新`systemd`/`nginx`服务配置本身信息 1. 跳过发布包拉取 ``` deploy_app.sh -p wiz_easc35_api --skip-pull ``` - `-p` 指定要部署或更新的`应用名称`, 对应 `products.json` 中 `name` - `--skip-pull` 表示**不**从发布服务器**拉取**部署包, 一般用于2种情况 1. 部署包已经复制到本地部署位置, 通过脚本快速部署为服务 1. 部署包没有发生变更, 但服务配置本身发生变化需要更新, 此时应加上 `--changed` 选项 1. 指定发布服务器 - 通过 `--publish-server` 选项指定发布服务器 - 一般使用国外的服务器,解决公司发布服务器到现场之间网络问题 - **注意** 1. 发布包必须已发布到指定的服务器 1. 如果没有发布最新版本到指定服务器,请**不要**指定发布服务器, 否则会拉取旧版本部署包 ## FAQ 1. 如果环境参数发生变化时, 如何修正 - 应用相关信息变化, 在 `/data/plantresource/products.json` 文件中修改 - 增加应用 - `env` 和 `area` 发生变化 - 属于重大变化, 禁止修改, 只适用于开始部署时设置错误时更改 - 变化后手动复制部署目录, 防止业务数据丢失和重新拉部署包(网络问题) - 修改应用信息 - 只允许修改应用端口 `port` - 需要使用 `deploy_app.sh --changed` 选项更新应用 - 部署用户名变化 - 禁止变更部署用户, 固定使用 `pengrui` 账号 - 应用配置文件变化 - 如果为自动发布的应用 - **禁止**在本地手动修改配置文件 - 发布新的配置信息到发布服务器, 通过更新应用自动同步到部署环境 - 如果为手动发布的应用, - 本地修改, 重启服务 - 做好配置文件备份 - `wiz_io` 发布包地址变更 - 修改 `/usr/local/bin/update-wiz-io.sh` 脚本 - 修改 中的 `object_path` 为修改后的地址 - 设置新的 `minio` 服务器配置 ``` mc alias set ... ``` - **重要** 如果变更为在`非oss存储`, 则需要根所实际情况修改 `/usr/local/bin/update-wiz-io.sh` 脚本 1. 如何查看服务运行情况 - 通过 `zabbix` 管理界面查看 - 应定期查看 `zabbix` 报警信息 1. 如何删除不需要的服务 - 原则上不会出现这种情况 - 自动部署的应用 - 执行 `deploy_app.sh -p app_name --undeploy` - **注意** 会丢失程序目录下的所有数据 - 手动部署的应用 - 手动删除应用 - 手动删除服务配置 1. 如何查看和修改 `minio` 的配置 - 文件 `/data/plantresource/minio.env` - 如修改配置后需要重启 `minio` 服务 ``` systemctl restart minio ``` ## 临时文件中转 ## 待办事项 1. trp 客户端自动化发布 (向文成,李春校) 1. trp 客户端配置优化 (向文成) 1. 场景服务 服务化和自动化 (向文成) - 在没有做成服务之前, (李戬) 每天检查服务是否正常, 如果挂掉, 重启应用, 如出现问题, 联系开发 1. zabbix 部署 (杨杰) - 定期查看现场运行监控情况和处理报警信息(李戬) 1. 需要手动配置的文件清单 (李戬) 1. 备份 (李戬) - 一次性 - 手动安装包或不拉包的应用程序包 - 配置文件 - 定期(每天?) - 数据库 - wiz io: /data/plantresource/wiz_io/prod_nre/current/ - 第三方系统数据备份谁负责? - 其他?