本项目提供了一套标准化、可复用的自动化安装脚本,用于快速部署各种软件和服务。

作者:孔令泉
邮箱:lqkong0189@163.com
官网:www.klquan.com

1. 脚本使用说明

场景1. 能连接外网

适用场景:能访问外网,直接能访问到https://www.klquan.com服务。

配置步骤:

  1. 无需任何配置
  2. 直接使用下方的命令即可
场景2. 内网(转发配置)

适用场景:不能访问外网,但有能转发Nginx且443端口的根路径没被使用的服务器。

配置步骤:

  1. 在中转服务器(如华为云)安装nginx
  2. 配置nginx配置文件:
server { listen 443 ssl; server_name www.klquan.com; ssl_certificate /server/nginx/ssl/klquan.com/klquan.com_bundle.crt; ssl_certificate_key /server/nginx/ssl/klquan.com/klquan.com.key; location / { proxy_pass https://www.klquan.com; proxy_set_header Host $proxy_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_ssl_server_name on; proxy_ssl_protocols TLSv1.2 TLSv1.3; proxy_ssl_verify off; } }

客户端添加hosts:

echo "10.166.34.242 www.klquan.com" >> /etc/hosts

然后就可以跟外网一样的直接使用命令了。

场景3. 内网(私有化部署)

适用场景:完全不能访问外网,且没有可转发Nginx的内网环境。

配置步骤:

  1. 在内网搭建一个nginx服务器
  2. 上传files.tar.gz到nginx家目录下并解压(联系孔令泉获取最新版本)
  3. 配置nginx配置文件:
server { listen 443 ssl; server_name www.klquan.com; ssl_certificate /usr/local/nginx/ssl/klquan.com/klquan.com_bundle.crt; ssl_certificate_key /usr/local/nginx/ssl/klquan.com/klquan.com.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location ~ ^/(scripts|packages|template) { root files/; autoindex on; autoindex_exact_size off; autoindex_localtime on; charset utf-8,gbk; if ($request_uri ~ ^/packages/) { expires 30d; add_header Cache-Control "public, immutable"; } } }

客户端添加hosts:

echo "172.20.47.190 www.klquan.com" >> /etc/hosts

然后就可以跟外网一样的直接使用命令了。

2. 脚本分类与使用

2.1 脚本-Linux工具类

系统运维工具脚本,用于系统初始化、配置优化和网络工具安装。

适用场景:目前测试通的是centos系统,别的系统后期会加上。

new.sh

系统初始化脚本,优化系统配置

curl -sSL https://www.klquan.com/scripts/tools/new.sh | bash
  • 修改命令提示符
  • 关闭防火墙
  • 关闭selinux
  • 优化SSH配置
  • 调整系统参数
set_yum.sh

配置yum源

curl -sSL https://www.klquan.com/scripts/tools/set_yum.sh | bash
  • 备份现有yum源
  • 下载阿里云的epel源
  • 下载阿里云的Base源
  • 下载用友内网的源
frpc.sh

frp客户端安装

curl -sSL https://www.klquan.com/scripts/tools/frpc.sh | bash
  • 把本机的22端口映射到外网
  • 访问形式:22+最后一段IP
built_certs.sh

自动签发CA证书

curl -sSL https://www.klquan.com/scripts/tools/built_certs.sh | bash -s -- www.1234.com
  • 使用cfssl_1.6.5版本工具签发
  • 证书生成之后自动删除中间垃圾

2.2 脚本-服务安装类

传统方式安装的各类服务器软件,包括数据库、Web服务器、开发环境等。

适用场景:目前测试通的是centos系统,别的系统后期会加上

Docker

Docker容器引擎

curl -sSL https://www.klquan.com/scripts/install/docker.sh | bash
Docker Compose

Docker编排工具

curl -sSL https://www.klquan.com/scripts/install/docker-compose.sh | bash
JDK

Java开发环境

curl -sSL https://www.klquan.com/scripts/install/jdk.sh | bash
MySQL

关系型数据库

curl -sSL https://www.klquan.com/scripts/install/mysql.sh | bash
Nginx

Web服务器

curl -sSL https://www.klquan.com/scripts/install/nginx.sh | bash
Tomcat

Java应用服务器

curl -sSL https://www.klquan.com/scripts/install/tomcat.sh | bash
Redis

内存数据库

curl -sSL https://www.klquan.com/scripts/install/redis.sh | bash
Node

NPM编程工具

curl -sSL https://www.klquan.com/scripts/install/node.sh | bash
Python 3

Python编程语言

curl -sSL https://www.klquan.com/scripts/install/python3.sh | bash
node_exporter.sh

node_exporter客户端安装

curl -sSL https://www.klquan.com/scripts/tools/node_exporter.sh | bash
  • 自动安装node_exporter服务

2.3 脚本-Docker部署类

基于Docker容器化部署的服务,快速启动和管理容器化应用。

适用场景:已安装好Docker且能联网(后期会优化,把镜像做成tar包放本地)。

服务 命令 说明
Tomcat
curl -sSL --basic http://www.klquan.com/scripts/docker/tomcat_docker.sh | bash
-p 8080:8080,挂载webapps、conf、logs目录
Nginx
curl -sSL --basic http://www.klquan.com/scripts/docker/nginx_docker.sh | bash
-p 80:80 -p 443:443,挂载配置和日志目录
MySQL
curl -sSL --basic http://www.klquan.com/scripts/docker/mysql_docker.sh | bash
-p 3306:3306,挂载数据和配置目录
Redis
curl -sSL --basic http://www.klquan.com/scripts/docker/redis_docker.sh | bash
-p 6379:6379,挂载配置和数据目录
Zookeeper
curl -sSL --basic http://www.klquan.com/scripts/docker/zookeeper_docker.sh | bash
-p 2181:2181,挂载数据、日志和配置目录
RabbitMQ
curl -sSL --basic http://www.klquan.com/scripts/docker/rabbitmq_docker.sh | bash
-p 5672:5672 -p 15672:15672,配置Erlang Cookie

2.4 脚本-离线安装类

针对无外网连接环境的安装方案,需要提前下载安装包到本地。

适用场景:针对完全不能联网的内网机器(需要自己想办法把安装包和脚本放到机器上)。

服务 下载脚本 下载安装包 执行安装
Redis
wget http://www.klquan.com/scripts/offline/redis_offline.sh
wget http://www.klquan.com/scripts/package/redis-5.0.7.tar.gz
sh redis_offline.sh
MySQL
wget http://www.klquan.com/scripts/offline/mysql_offline.sh
wget http://www.klquan.com/scripts/package/mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz
sh mysql_offline.sh
Nginx
wget http://www.klquan.com/scripts/offline/nginx_offline.sh
wget http://www.klquan.com/scripts/package/nginx-1.23.3.tar.gz
sh nginx_offline.sh
JDK
wget http://www.klquan.com/scripts/offline/jdk_offline.sh
wget http://www.klquan.com/scripts/package/jdk-8u211-linux-x64.tar.gz
sh jdk_offline.sh
Tomcat
wget http://www.klquan.com/scripts/offline/tomcatyfk_offline.sh
wget http://www.klquan.com/scripts/package/tomcat_yfk.tar.gz
sh tomcatyfk_offline.sh

3. 脚本运维规范

公共函数库功能

所有脚本都基于公共函数库 common.sh 开发,包含以下核心功能:

  • get_packages

    获取软件安装包列表,从服务器检索可用版本并显示给用户选择。

  • select_version

    选择要安装的软件版本,支持命令行参数指定或自动选择最新版本。

  • show_usage

    显示使用说明,指导用户如何指定版本进行安装。

  • check

    检查命令执行结果,成功显示绿色提示,失败显示红色并退出。

  • countdown

    显示倒计时确认界面,给用户10秒时间确认或取消安装。

新增脚本说明

每个新脚本都应包含以下基本结构:

#!/bin/bash # 加载公共函数库 source <(curl -sSL https://www.klquan.com/scripts/common.sh) # 基础配置(每个脚本不一样) server="软件名" # 必须与packages目录中的包名匹配 home="/安装目录" # 安装位置 download_patch="官方下载地址" # 用于提示用户 # 1.获取软件安装包并选择版本 all_package=($(get_packages "$server" "$download_patch")) package=$(select_version "$1" "${all_package[@]}") show_usage # 2.确认信息 countdown "$home" "$package" # 3.安装过程(根据具体软件编写) echo "【1】下载源码包" curl -L -o "$home/$package" -# "$packages_url$package" check # ... 其他安装步骤 # 每个步骤后都要使用check函数检查执行结果

脚本开发规范:

  • server变量:必须与 packages/ 目录中的文件名匹配(使用grep过滤)
  • 使用统一的格式【步骤序号】描述
  • 依赖处理:在脚本中安装必要的依赖包
  • 配置管理:提供合理的默认配置
  • 服务管理:优先使用systemd管理服务
  • 错误处理:每个步骤后都要使用check函数检查执行结果
  • 日志记录:重要操作需要记录日志以便排查问题