# env-tools **Repository Path**: qqbless/env-tools ## Basic Information - **Project Name**: env-tools - **Description**: 使用ai工具维护的运维环境工具,提供常规服务的安装部署脚本 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-20 - **Last Updated**: 2026-07-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # env-tools Shell 脚本工具集,包含 Git 工作流自动化和服务器环境部署脚本。 ## 目录结构 ``` env-tools/ # 仓库根 ├── env-tools/ # 本机环境脚本(嵌套同名子目录) │ ├── env-init.sh # 初始化当前服务器(依赖/limits/SELinux/防火墙/可选静态IP/可选重启) │ ├── configure-static-ip.sh # 静态 IP 配置 │ ├── firewall-tools.sh # 防火墙工具 │ ├── sync-to-remote.sh # 同步到远端 │ └── system-inspect.sh # 系统巡检 ├── git-shell/ # Git 工作流自动化 │ ├── git-commit.sh # 拉取 → 检查大文件 → 提交 → 推送 │ ├── git-revert.sh # 丢弃本地修改,同步远程 │ └── git-pull-master.sh # 拉取 origin/master 最新代码 ├── shell-tools/ │ ├── docker/ # Docker 安装/卸载 │ │ ├── install_docker.sh # 执行 docker-*.run 安装程序 │ │ └── uninstall_docker.sh # 卸载 Docker 程序及数据 │ ├── mysql8/ # MySQL 8.x 安装/升级/卸载 │ │ ├── install-mysql.sh # 安装 MySQL │ │ ├── update-mysql.sh # 升级 MySQL(保留数据) │ │ ├── uninstall-mysql.sh # 卸载 MySQL │ │ ├── my-8.0.x.cnf # 8.0 配置模板 │ │ └── my-8.4.x.cnf # 8.4 配置模板 │ ├── nginx-prebuilt/ # Nginx 免编译安装/卸载 │ │ ├── install-nginx.sh # 解压部署免编译 Nginx │ │ ├── uninstall-nginx.sh # 卸载免编译 Nginx │ │ ├── upgrade-nginx.sh # 升级 Nginx │ │ └── multi-install-nginx-*.tgz # Nginx 免编译安装包 │ ├── nodejs/ # Node.js 安装 │ │ └── install-nodejs.sh # 解压安装 Node.js │ ├── nfs/ # NFS 远程安装配置 │ │ ├── install-nfs.sh # 自动配置 NFS Server/Client │ │ └── nfs.conf.example # 配置文件模板 │ ├── redis/ # Redis 安装/卸载 │ │ ├── install-redis.sh # 编译安装 Redis │ │ └── uninstall-redis.sh # 卸载 Redis │ ├── dm/ # DM 达梦数据库安装/卸载 │ │ ├── install-dm.sh # 自动安装 DM8 数据库 │ │ └── uninstall-dm.sh # 卸载 DM 数据库 │ ├── kingbase/ # Kingbase 数据库安装/卸载(Docker) │ │ ├── install-kingbase.sh # Docker 方式安装 KingbaseES │ │ └── uninstall-kingbase.sh # 卸载 Kingbase 容器及镜像 │ ├── seeyoninstall/ # Seeyon OA 安装/卸载 │ │ ├── install-seeyon.sh # 自动安装 Seeyon OA │ │ └── uninstall-seeyon.sh # 卸载 Seeyon OA │ └── searchservice/ # 检索服务 │ ├── install-searchservice.sh # 安装检索服务 │ ├── update-searchservice.sh # 升级检索服务 │ ├── uninstall-searchservice.sh # 卸载检索服务 │ └── config.sh # 配置脚本 ├── ignore-files/ # 本地存储目录(git 不提交) │ └── howtouse.md # 说明此目录不入库(安装包放此处) ├── knowledge-points/ # 部署知识点(16 个,专家经验沉淀) ├── deployment-guides/ # 服务部署指南(5 个) ├── templates/ # install/uninstall 脚本骨架模板 ├── references/ # 外置参考文档(expert-knowledge-index 等) ├── .gitignore ├── AGENTS.md ├── README.md └── LICENSE ``` ## 快速开始 ```bash # 查看脚本帮助 ./shell-tools/mysql8/install-mysql.sh -h # 检查脚本语法 bash -n script.sh # 检查所有脚本 shellcheck shell-tools/**/*.sh git-shell/*.sh ``` ## Git 工作流(git-shell/) ### git-pull-master.sh 拉取 origin/master 最新代码。 ```bash ./git-shell/git-pull-master.sh ``` ### git-commit.sh 交互式提交脚本: 1. 自动将 HTTPS 远程转为 SSH 2. 执行 `ssh-keyscan` 添加主机密钥 3. 拉取最新代码 4. 检测 >50MB 大文件(自动移至 `ignore-files/`) 5. 输入提交信息 → 提交并推送到 origin/master ```bash ./git-shell/git-commit.sh ``` ### git-revert.sh 丢弃所有本地未提交的修改,拉取远程最新代码。需输入 `YES` 确认。 ```bash ./git-shell/git-revert.sh ``` **注意事项:** - 所有脚本默认操作 **master** 分支 - 远程仓库:`git@gitee.com:qqbless/env-tools.git` - 首次使用 git-commit.sh 前需配置 SSH 公钥到 Gitee --- ## 本机环境初始化(env-tools/) 注意:本机环境脚本在嵌套同名的 `env-tools/` 子目录下,不在 `shell-tools/` 里。 ### 初始化当前服务器 ```bash sudo ./env-tools/env-init.sh ``` 脚本用于初始化**当前本机服务器**,不再执行远程 SSH 连接。执行流程: 1. 检查必须使用 root 用户执行 2. 自动检测本机包管理器,优先级为 `dnf > yum > apt-get` 3. 安装基础依赖:`tar`、`curl`、`net-tools`、`unzip`、`vim`、`telnet`、`rsync`、`nc/netcat` 4. 检查 `bash-completion`,缺少则自动安装,并幂等写入 `/root/.bashrc` 5. 幂等配置 `/etc/security/limits.conf`,设置最大文件打开数和最大进程数为 `65535` 6. 关闭 SELinux(重启后生效) 7. 可选关闭本机防火墙 8. 可选将当前默认网卡 IP 固定为静态 IP,优先使用 `nmcli`,兼容 `/etc/sysconfig/network-scripts/ifcfg-*` 9. 可选重启本机服务器 重复执行时会先删除脚本管理的 limits 配置块再重新写入,不会重复追加同一段配置。 --- ## Docker(shell-tools/docker/) ### 安装 Docker | 项目 | 说明 | |------|------| | 前置条件 | `docker-*.run` 文件放在脚本同级目录 | | 架构支持 | 自动检测 x86_64 / arm64 | ```bash sudo ./shell-tools/docker/install_docker.sh ``` 脚本自动查找最新的 `docker-*.run` 文件并执行安装。如没有合适的 `.run` 文件, 需从 https://open.seeyoncloud.com 自行下载。 ### 卸载 Docker ```bash sudo ./shell-tools/docker/uninstall_docker.sh ``` 卸载步骤:停止服务 → 删除程序文件 → 删除配置和 systemd 文件。 数据目录 `/data/docker` 默认保留,可选择删除(需输入大写 `YES`)。 --- ## MySQL(shell-tools/mysql8/) ### 安装 MySQL | 项目 | 值 | |------|------| | 前置条件 | `mysql-*.tar.xz` 放在脚本同级目录 | | 程序目录 | `/usr/local/mysql` | | 数据目录 | `/data/mysql` | | 配置文件 | `/etc/my.cnf` | | 默认端口 | 3306 | | root 密码 | `Seeyon123.` | ```bash sudo ./shell-tools/mysql8/install-mysql.sh ``` 自动完成:检测 MariaDB 冲突 → 安装依赖 → 创建用户 → 解压 → 创建软链接 → 根据内存自动计算 `innodb_buffer_pool_size` → 生成配置文件 → 初始化 → 启动服务 → 设置密码 → 配置防火墙 → 生成安装记录。 ### 升级 MySQL | 项目 | 说明 | |------|------| | 前置条件 | 已安装 MySQL,新版本 `mysql-*.tar.xz` 放在脚本同级目录 | ```bash sudo ./shell-tools/mysql8/update-mysql.sh ``` 升级前自动备份旧程序目录和配置文件到 `backup_mysql/版本号/`, 支持通过备份信息回滚。 ### 卸载 MySQL ```bash sudo bash shell-tools/mysql8/uninstall-mysql.sh ``` 需输入 `yes` 确认卸载程序。数据目录 `/data/mysql` 默认保留,可选择删除。 --- ## Nginx 免编译(shell-tools/nginx-prebuilt/) ### 安装 Nginx | 项目 | 值 | |------|------| | 前置条件 | `multi-install-nginx-*.tgz` 免编译包放在脚本同级目录 | | 安装目录 | 使用安装包内 `multi-install-nginx.sh` 的 `instRootDir` 默认配置,如 `/apps/nginx` | ```bash sudo ./shell-tools/nginx-prebuilt/install-nginx.sh ``` 脚本自动解压免编译包、启用安装包的 V5 配置模板、配置 SSH 并执行安装。 安装包会生成 `nginx.conf`、`mobile.conf` 等 V5 配置模板。 脚本会使用安装目录下的 `nginx/sbin/nginx -t` 校验安装包生成的配置。 校验通过后通过 `systemctl restart nginx.service` 重启服务;校验失败或 未找到 nginx 可执行文件时会跳过重启和部署记录。 ### 卸载 Nginx ```bash sudo bash shell-tools/nginx-prebuilt/uninstall-nginx.sh ``` 需输入 `yes` 确认。停止服务 → 禁用服务 → 删除 `/data/nginx`。 --- ## Node.js(shell-tools/nodejs/) | 项目 | 说明 | |------|------| | 前置条件 | `node-*.tar.xz` 放在脚本同级目录 | | 程序目录 | `/usr/local/` | ```bash sudo ./shell-tools/nodejs/install-nodejs.sh ``` 自动创建软链接到 `/usr/local/bin/`,写入环境变量到 `/etc/profile.d/nodejs.sh`。 安装完成后可选择配置 npm 国内镜像(npmmirror.com)。 --- ## NFS(shell-tools/nfs/) | 项目 | 说明 | |------|------| | 前置条件 | 创建 `nfs.conf` 配置文件 | ```bash sudo ./shell-tools/nfs/install-nfs.sh ``` 通过 SSH 远程配置 NFS Server 和多个 Client。支持交互式菜单: 安装全部配置 / 取消 Server / 取消 Client / 取消全部。 配置文件格式(参考 `nfs.conf.example`): ```ini [nfs server] IP 端口 用户 密码 共享目录 [nfs client] IP 端口 用户 密码 挂载目录 ``` 需要 `sshpass` 工具(脚本自动安装)。 --- ## Redis(shell-tools/redis/) ### 安装 Redis | 项目 | 值 | |------|------| | 前置条件 | `redis-*.tar.gz` 放在脚本同级目录 | | 程序目录 | `/usr/local/redis` | | 配置文件 | `/usr/local/redis/redis.conf` | | 默认端口 | 6379 | | 密码 | `Seeyon123.` | | 绑定 IP | 自动检测本机 IP | ```bash sudo ./shell-tools/redis/install-redis.sh ``` 自动创建 systemd 服务,配置防火墙。CentOS/RedHat 系统自动升级 GCC。 ### 卸载 Redis ```bash sudo bash shell-tools/redis/uninstall-redis.sh ``` 需输入 `yes` 确认。 --- ## DM 达梦数据库(shell-tools/dm/) ### 安装 DM | 项目 | 值 | |------|------| | 前置条件 | `dm8*.zip` 或 `dm8*.iso` 放在脚本同级目录 | | 程序目录 | `/home/dmdba/dmdbms` | | 数据目录 | `/dmdata/data` | | 默认端口 | 5236 | | 安装用户 | dmdba (uid:12345, gid:12349) | | 默认密码 | `Seeyon123.` | ```bash sudo ./shell-tools/dm/install-dm.sh ``` 自动创建 dmdba 用户、解压/挂载 ISO、静默安装、配置开机自启(DmServiceDMSERVER)、 配置防火墙。 ### 卸载 DM ```bash sudo bash shell-tools/dm/uninstall-dm.sh ``` 需输入 `yes` 确认。数据目录 `/dmdata` 默认保留,输入大写 `YES` 删除。 --- ## Kingbase 数据库(shell-tools/kingbase/) ### 安装 Kingbase | 项目 | 值 | |------|------| | 前置条件 | Docker 已安装并启动,`KingbaseES_*_Docker.tar` 放在脚本同级目录 | | 容器名 | kingbase | | 默认端口 | 54321 | | 数据目录 | `/data/kingbase/data` | | DB 用户 | kingbase | | DB 密码 | `Seeyon123.` | | DB 模式 | oracle | ```bash sudo ./shell-tools/kingbase/install-kingbase.sh ``` 自动加载 Docker 镜像并启动容器(Oracle 兼容模式)。支持多架构(x86_64 / aarch64)。 ### 卸载 Kingbase ```bash sudo bash shell-tools/kingbase/uninstall-kingbase.sh ``` 需输入 `yes` 确认。删除容器和镜像,数据目录需手动删除。 --- ## Seeyon OA(shell-tools/seeyoninstall/) ### 安装 Seeyon | 项目 | 值 | |------|------| | 前置条件 | `0.SeeyonInstall.zip` 放在脚本同级目录 | | 安装目录 | `/data/Seeyon`(默认) | | 数据库 | MySQL / SQLServer / Oracle | ```bash sudo ./shell-tools/seeyoninstall/install-seeyon.sh ``` 交互选择:产品线(A8集团版/A8企业版/A6企业版/政务单组织/政务多组织)→ 数据库类型 → 数据库地址 → 用户名 → 安装目录 → 确认安装。 自动检测 yum/dnf/apt 包管理器并安装依赖。 ### 卸载 Seeyon ```bash sudo bash shell-tools/seeyoninstall/uninstall-seeyon.sh ``` 读取注册表 `~/.config/seeyoninstall_*.info` 提取安装路径,执行 `Uninstall.sh`。 数据库不会被卸载。 --- ## Search Service(shell-tools/searchservice/) 包含 4 个脚本:`install-searchservice.sh`、`update-searchservice.sh`、`uninstall-searchservice.sh`、`config.sh`。 ### 安装 Search Service ```bash sudo ./shell-tools/searchservice/install-searchservice.sh ``` 安装 Search Service 和 Elasticsearch 7.17.17。前置条件:相关安装包(`*.zip`、`ES*` 目录等)放在脚本同级目录(已在 `.gitignore` 中排除)。 ### 升级 / 卸载 ```bash sudo ./shell-tools/searchservice/update-searchservice.sh # 升级(卸载+安装) sudo bash shell-tools/searchservice/uninstall-searchservice.sh # 卸载 ``` --- ## 日志管理 各工具脚本在安装/升级/卸载时自动生成日志,存放于: ``` shell-tools/<工具>/logs/<操作>_<日期>.log ``` 示例: ``` shell-tools/mysql8/logs/install_20260320.log shell-tools/redis/logs/install_20260320.log shell-tools/dm/logs/uninstall_20260320.log ``` 安装成功并完成验证后,安装日志会追加“部署记录”,列出实际部署路径、启停和维护命令,以及脚本创建或采集的账号与凭据。没有服务或凭据的项目会明确标注不适用或未由脚本设置。 **⚠ 日志包含敏感信息(密码、连接字符串等),已加入 `.gitignore`,切勿提交到仓库或转发到未受控渠道。** --- ## 使用须知 - 所有安装/卸载脚本需 **root 权限**运行(使用 `sudo`) - 安装包需放在**脚本同级目录** - 升级/卸载前请确认数据备份 - Git 脚本默认操作 **master** 分支 - `git-commit.sh` 自动推送,冲突时提供处理选项 - 大文件(>50MB)会被自动移至 `ignore-files/` 目录 --- ## .gitignore 关键规则 | 规则 | 说明 | |------|------| | `*.log`, `logs/`, `**/logs/` | 所有日志文件 | | `mysql*.tar.xz` | MySQL 安装包 | | `/ignore-files/`, `ignore-files/` | 本地二进制存储目录 | | `nginx-prebuilt/multi-install-nginx-*/` | 解压后的免编译目录 |