# 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-05-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # env-tools Shell 脚本工具集,包含 Git 工作流自动化和服务器环境部署脚本。 ## 目录结构 ``` env-tools/ ├── git-shell/ # Git 工作流自动化 │ ├── git-commit.sh # 拉取 → 检查大文件 → 提交 → 推送 │ ├── git-revert.sh # 丢弃本地修改,同步远程 │ └── git-pull-master.sh # 拉取 origin/master 最新代码 ├── shell-tools/ │ ├── env-init/ # 本机服务器初始化 │ │ └── env-init.sh # 安装基础依赖、配置limits、SELinux、防火墙、重启 │ ├── docker/ # Docker 安装/卸载 │ │ ├── install_docker.sh # 执行 docker-*.run 安装程序 │ │ └── uninstall_docker.sh # 卸载 Docker 程序及数据 │ ├── mysql8.0/ # MySQL 8.0.x 安装/升级/卸载 │ │ ├── install-mysql.sh # 编译安装 MySQL 8.0.x │ │ ├── upgrade-mysql.sh # 升级 MySQL(保留数据) │ │ └── uninstall-mysql.sh # 卸载 MySQL │ ├── mysql8.4/ # (占位目录,暂无脚本) │ ├── nginx/ # Nginx 源码编译安装/卸载 │ │ ├── install-nginx.sh # 编译安装 Nginx(6 个源码包) │ │ └── uninstall-nginx.sh # 卸载编译安装的 Nginx │ ├── nginx-prebuilt/ # Nginx 免编译安装/卸载 │ │ ├── install-nginx.sh # 解压部署免编译 Nginx │ │ ├── uninstall-nginx.sh # 卸载免编译 Nginx │ │ └── nginx.conf # Seeyon 专用配置(含 sticky 模块) │ ├── 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.sh # (空文件,暂未实现) ├── ignore-files/ # 本地存储目录(git 不提交) │ ├── 0.SeeyonInstall.zip # Seeyon 安装包 │ └── howtouse.md # 说明文档 ├── .gitignore ├── AGENTS.md ├── README.md └── LICENSE ``` ## 快速开始 ```bash # 查看脚本帮助 ./shell-tools/mysql8.0/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 --- ## 本机环境初始化(shell-tools/env-init/) ### 初始化当前服务器 ```bash sudo ./shell-tools/env-init/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 8.0(shell-tools/mysql8.0/) ### 安装 MySQL | 项目 | 值 | |------|------| | 前置条件 | `mysql-*.tar.xz` 放在脚本同级目录 | | 程序目录 | `/usr/local/mysql` | | 数据目录 | `/data/mysql` | | 配置文件 | `/etc/my.cnf` | | 默认端口 | 3306 | | root 密码 | `Seeyon123.` | ```bash sudo ./shell-tools/mysql8.0/install-mysql.sh ``` 自动完成:检测 MariaDB 冲突 → 安装依赖 → 创建用户 → 解压 → 创建软链接 → 根据内存自动计算 `innodb_buffer_pool_size` → 生成配置文件 → 初始化 → 启动服务 → 设置密码 → 配置防火墙 → 生成安装记录。 ### 升级 MySQL | 项目 | 说明 | |------|------| | 前置条件 | 已安装 MySQL,新版本 `mysql-*.tar.xz` 放在脚本同级目录 | ```bash sudo ./shell-tools/mysql8.0/upgrade-mysql.sh ``` 升级前自动备份旧程序目录和配置文件到 `backup_mysql/版本号/`, 支持通过备份信息回滚。 ### 卸载 MySQL ```bash sudo ./shell-tools/mysql8.0/uninstall-mysql.sh ``` 需输入 `yes` 确认卸载程序。数据目录 `/data/mysql` 默认保留,可选择删除。 --- ## Nginx 源码编译(shell-tools/nginx/) ### 安装 Nginx | 项目 | 值 | |------|------| | 前置条件 | 6 个源码 tar.gz 文件放在脚本同级目录 | | 程序目录 | `/usr/local/nginx-<版本号>` | | 数据目录 | `/data/nginx` | | 默认端口 | 80 | 所需源码包: | 包名 | 版本 | |------|------| | nginx | 1.28.1 | | nginx-sticky-module | 1.2.6 | | pcre2 | 10.46 | | openssl | 3.3.1 | | zlib | 1.3.1 | | nginx_upstream_check_module | v0.4.0 | 源码包可以放在 `nginx-all/` 文件夹中,或直接放在脚本同级目录。 脚本也支持 `nginx-all.tar.gz` 或 `nginx-all.zip` 压缩包。 ```bash sudo ./shell-tools/nginx/install-nginx.sh ``` 多核并行编译,安装期间 CPU 占用较高属正常现象。自动创建 systemd 服务。 ### 卸载 Nginx ```bash sudo ./shell-tools/nginx/uninstall-nginx.sh ``` 可选备份 nginx/conf 配置文件。 --- ## 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 ``` 脚本自动解压免编译包、配置 SSH、执行安装。安装完成后自动替换为 `nginx.conf`(含 sticky 模块的 Seeyon 专用配置),并备份原配置为 `nginx.conf.bak.<时间戳>`。 配置替换后,脚本会使用安装目录下的 `nginx/sbin/nginx -t` 校验配置。 校验通过后通过 `systemctl restart nginx.service` 重启服务;校验失败或 未找到 nginx 可执行文件时不会重启。 ### 卸载 Nginx ```bash sudo ./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 ./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 ./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 ./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 ./shell-tools/seeyoninstall/uninstall-seeyon.sh ``` 读取注册表 `~/.config/seeyoninstall_*.info` 提取安装路径,执行 `Uninstall.sh`。 数据库不会被卸载。 --- ## Search Service(shell-tools/searchservice/) `install.sh` 为空文件(0 字节),暂未实现。 --- ## 日志管理 各工具脚本在安装/升级/卸载时自动生成日志,存放于: ``` shell-tools/<工具>/logs/<操作>_<日期>.log ``` 示例: ``` shell-tools/mysql8.0/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-*/` | 解压后的免编译目录 |