243 lines
8.6 KiB
Bash
243 lines
8.6 KiB
Bash
#!/bin/bash
|
||
|
||
# curl -o init.sh https://git.zykeji.club/open/server-init/raw/master/CentOS/7/all/centos-7-init.sh && sh init.sh
|
||
|
||
# 循环提示用户输入要设置的主机名,直到用户正常输入
|
||
while true; do
|
||
read -p "请输入要设置的主机名: " hostname
|
||
if [[ -n "$hostname" ]]; then
|
||
break
|
||
fi
|
||
done
|
||
|
||
# 提示用户输入要创建的管理员账户
|
||
read -p "请输入要创建的管理员账户: " admin_user
|
||
|
||
# 提示用户输入要创建的普通账户
|
||
read -p "请输入要创建的普通账户: " user
|
||
|
||
# 循环询问用户是否要将yum源修改为阿里云镜像,直到用户输入y或n,默认为n
|
||
while true; do
|
||
read -p "是否将yum源修改为阿里云镜像?(y/n,默认为n): " use_aliyun_mirror
|
||
if [[ -z "$use_aliyun_mirror" ]]; then
|
||
use_aliyun_mirror="n"
|
||
fi
|
||
if [[ "$use_aliyun_mirror" == "y" || "$use_aliyun_mirror" == "n" ]]; then
|
||
break
|
||
fi
|
||
done
|
||
|
||
# 循环询问用户是否要更新系统,直到用户输入y或n,默认为n
|
||
while true; do
|
||
read -p "是否要更新系统?(y/n,默认为n): " update_system
|
||
if [[ -z "$update_system" ]]; then
|
||
update_system="n"
|
||
fi
|
||
if [[ "$update_system" == "y" || "$update_system" == "n" ]]; then
|
||
break
|
||
fi
|
||
done
|
||
|
||
# 如果用户不更新系统,循环询问是否更新软件,直到用户输入y或n,默认为n
|
||
if [[ "$update_system" == "n" ]]; then
|
||
while true; do
|
||
read -p "是否要更新软件?(y/n,默认为n): " update_software
|
||
if [[ -z "$update_software" ]]; then
|
||
update_software="n"
|
||
fi
|
||
if [[ "$update_software" == "y" || "$update_software" == "n" ]]; then
|
||
break
|
||
fi
|
||
done
|
||
fi
|
||
|
||
# 循环询问用户是否安装宝塔,直到用户输入y或n,默认为n
|
||
while true; do
|
||
read -p "是否安装宝塔?(y/n,默认为n): " install_bt
|
||
if [[ -z "$install_bt" ]]; then
|
||
install_bt="n"
|
||
fi
|
||
if [[ "$install_bt" == "y" || "$install_bt" == "n" ]]; then
|
||
break
|
||
fi
|
||
done
|
||
|
||
# 循环询问用户是否安装jdk8,直到用户输入y或n,默认为n
|
||
while true; do
|
||
read -p "是否安装jdk8?(y/n,默认为n): " install_jdk8
|
||
if [[ -z "$install_jdk8" ]]; then
|
||
install_jdk8="n"
|
||
fi
|
||
if [[ "$install_jdk8" == "y" || "$install_jdk8" == "n" ]]; then
|
||
break
|
||
fi
|
||
done
|
||
|
||
# 循环询问用户是否安装docker,直到用户输入y或n,默认为n
|
||
while true; do
|
||
read -p "是否安装docker?(y/n,默认为n): " install_docker
|
||
if [[ -z "$install_docker" ]]; then
|
||
install_docker="n"
|
||
fi
|
||
if [[ "$install_docker" == "y" || "$install_docker" == "n" ]]; then
|
||
break
|
||
fi
|
||
done
|
||
|
||
# 如果安装docker,循环询问是否配置阿里云镜像加速,直到用户输入y或n,默认为n
|
||
if [[ "$install_docker" == "y" ]]; then
|
||
while true; do
|
||
read -p "是否配置阿里云镜像加速?(y/n,默认为n): " configure_aliyun_acceleration
|
||
if [[ -z "$configure_aliyun_acceleration" ]]; then
|
||
configure_aliyun_acceleration="n"
|
||
fi
|
||
if [[ "$configure_aliyun_acceleration" == "y" || "$configure_aliyun_acceleration" == "n" ]]; then
|
||
break
|
||
fi
|
||
done
|
||
fi
|
||
|
||
# 如果不配置阿里云镜像加速,循环询问是否配置私服加速,直到用户输入y或n,默认为n
|
||
if [[ "$configure_aliyun_acceleration" == "n" ]]; then
|
||
while true; do
|
||
read -p "是否配置私服加速?(y/n,默认为n): " configure_private_registry_acceleration
|
||
if [[ -z "$configure_private_registry_acceleration" ]]; then
|
||
configure_private_registry_acceleration="n"
|
||
fi
|
||
if [[ "$configure_private_registry_acceleration" == "y" || "$configure_private_registry_acceleration" == "n" ]]; then
|
||
break
|
||
fi
|
||
done
|
||
fi
|
||
|
||
# 如果安装docker,循环询问是否安装docker-compose,直到用户输入y或n,默认为n
|
||
if [[ "$install_docker" == "y" ]]; then
|
||
while true; do
|
||
read -p "是否安装docker-compose?(y/n,默认为n): " install_docker_compose
|
||
if [[ -z "$install_docker_compose" ]]; then
|
||
install_docker_compose="n"
|
||
fi
|
||
if [[ "$install_docker_compose" == "y" || "$install_docker_compose" == "n" ]]; then
|
||
break
|
||
fi
|
||
done
|
||
fi
|
||
|
||
# -------------- 开始执行 --------------
|
||
|
||
# 如果用户输入了主机名,则设置当前主机主机名
|
||
if [[ -n "$hostname" ]]; then
|
||
hostnamectl set-hostname "$hostname"
|
||
fi
|
||
|
||
# 如果用户输入了管理员账户且账户不存在,则创建管理员账号
|
||
if [[ -n "$admin_user" && ! $(id -u "$admin_user" 2>/dev/null) ]]; then
|
||
admin_password="Zqh$(echo "$admin_user" | awk '{print toupper(substr($0, 1, 1))}')@$(hostname)"
|
||
useradd "$admin_user"
|
||
echo "$admin_password" | passwd --stdin "$admin_user"
|
||
echo "创建管理员账号成功:账号为$admin_user,密码为$admin_password"
|
||
fi
|
||
|
||
# 如果用户输入了普通账户且账户不存在,则创建普通账号
|
||
if [[ -n "$user" && ! $(id -u "$user" 2>/dev/null) ]]; then
|
||
user_password="Zqh$(echo "$user" | awk '{print toupper(substr($0, 1, 1))}')@$(hostname)"
|
||
useradd "$user"
|
||
echo "$user_password" | passwd --stdin "$user"
|
||
echo "创建普通账号成功:账号为$user,密码为$user_password"
|
||
fi
|
||
|
||
# 如果用户要将yum源修改为阿里云镜像,则进行阿里云yum镜像加速配置
|
||
if [[ "$use_aliyun_mirror" == "y" ]]; then
|
||
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
|
||
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
|
||
yum clean all
|
||
yum makecache
|
||
echo "已将yum源修改为阿里云镜像"
|
||
fi
|
||
|
||
# 如果用户要更新系统,则执行系统更新命令
|
||
if [[ "$update_system" == "y" ]]; then
|
||
yum update -y
|
||
echo "系统更新完成"
|
||
fi
|
||
|
||
# 如果用户要更新软件,则执行软件更新命令
|
||
if [[ "$update_software" == "y" ]]; then
|
||
yum upgrade -y
|
||
echo "软件更新完成"
|
||
fi
|
||
|
||
# 如果用户要安装宝塔,则执行宝塔安装命令
|
||
if [[ "$install_bt" == "y" ]]; then
|
||
yum install -y wget
|
||
wget -O install.sh http://download.bt.cn/install/install_6.0.sh
|
||
sh install.sh
|
||
echo "宝塔安装完成"
|
||
fi
|
||
|
||
# 如果用户要安装jdk8,则通过yum安装jdk8
|
||
if [[ "$install_jdk8" == "y" ]]; then
|
||
rpm -qa | grep java | xargs rpm -e --nodeps
|
||
yum install -y java-1.8.0-openjdk
|
||
java -version
|
||
echo "JDK 8安装完成"
|
||
fi
|
||
|
||
# 如果用户要安装docker,则通过yum安装docker-ce
|
||
if [[ "$install_docker" == "y" ]]; then
|
||
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
|
||
yum remove docker-ce
|
||
yum install -y yum-utils device-mapper-persistent-data lvm2
|
||
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
|
||
yum install -y docker-ce docker-ce-cli containerd.io
|
||
systemctl start docker
|
||
systemctl enable docker
|
||
echo "Docker安装完成"
|
||
fi
|
||
|
||
# 如果用户要为docker配置阿里云镜像加速,则执行配置阿里云镜像加速命令
|
||
if [[ "$configure_aliyun_acceleration" == "y" ]]; then
|
||
mkdir -p /etc/docker
|
||
tee /etc/docker/daemon.json <<-'EOF'
|
||
{
|
||
"registry-mirrors": ["https://qu3lgucz.mirror.aliyuncs.com"]
|
||
}
|
||
EOF
|
||
|
||
systemctl restart docker
|
||
echo "已配置阿里云镜像加速"
|
||
fi
|
||
|
||
# 如果用户要配置私服加速,则执行配置私服加速命令
|
||
if [[ "$configure_private_registry_acceleration" == "y" ]]; then
|
||
# 执行配置私服加速命令
|
||
if [[ "$configure_private_registry_acceleration" == "y" ]]; then
|
||
while true; do
|
||
read -p "请输入私服镜像地址: " private_registry_mirror
|
||
if [[ -n "$private_registry_mirror" ]]; then
|
||
break
|
||
fi
|
||
done
|
||
|
||
mkdir -p /etc/docker
|
||
tee /etc/docker/daemon.json <<-EOF
|
||
{
|
||
"registry-mirrors": ["$private_registry_mirror"]
|
||
}
|
||
EOF
|
||
systemctl restart docker
|
||
echo "已配置私服加速"
|
||
fi
|
||
fi
|
||
|
||
# 如果用户要安装docker-compose,则先判断当前路径下是否有docker-compose二进制文件,如果没有则通过curl下载,然后执行安装
|
||
if [[ "$install_docker_compose" == "y" ]]; then
|
||
if [[ ! -x "$(command -v docker-compose)" ]]; then
|
||
echo "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)"
|
||
curl -L -o docker-compose https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)
|
||
chmod +x docker-compose
|
||
mv docker-compose /usr/local/bin/
|
||
docker-compose version
|
||
fi
|
||
echo "Docker Compose安装完成"
|
||
fi |