Files
unofficial-gpt4-api/install.sh
Yanyutin753 04149ce0c9 添加脚本
2024-01-29 21:28:09 +08:00

160 lines
4.9 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 函数:确认删除目录
confirm_delete() {
echo "目标目录已存在,是否删除并拉取最新代码?(y/n)"
read confirm
if [ "$confirm" = "y" ]; then # 修改了这一行
# 检查是否有足够的权限
if [ ! -w /gpt4-copilot-java ]; then
echo "没有足够的权限删除目录,请检查权限设置。"
exit 1
fi
# 删除目录的操作
cd / && rm -rf /gpt4-copilot-java
# 重新创建目录
mkdir /gpt4-copilot-java
else
echo "取消操作,退出脚本。"
exit 1
fi
}
echo "检查是否已经安装 bash"
if ! command -v bash &> /dev/null; then
# 安装 bash
if command -v apt &> /dev/null; then
sudo apt update
sudo apt-get install bash
elif command -v yum &> /dev/null; then
sudo yum update
sudo yum install bash
else
echo "不支持的包管理器,无法安装 bash。"
exit 1
fi
echo "安装 bash 成功!"
else
echo "bash 已经安装,跳过安装步骤。"
fi
echo "检查是否已经安装 docker"
if ! command -v docker &> /dev/null; then
# 安装 Docker
if command -v apt &> /dev/null; then
sudo apt update
sudo apt-get install docker-ce
elif command -v yum &> /dev/null; then
sudo yum update
sudo yum install docker-ce
else
echo "不支持的包管理器,无法安装 Docker。"
exit 1
fi
echo "安装 Docker 成功!"
else
echo "Docker 已经安装,跳过安装步骤。"
fi
echo "检查是否已经安装 docker-compose"
if ! command -v docker-compose &> /dev/null; then
# 安装 docker-compose
if command -v apt &> /dev/null; then
sudo apt update
sudo apt install docker-compose
elif command -v yum &> /dev/null; then
sudo yum update
sudo yum install docker-compose
else
echo "不支持的包管理器,无法安装 Docker Compose。"
exit 1
fi
# 检查安装是否成功
if command -v docker-compose &> /dev/null; then
echo "安装 Docker Compose 成功!"
else
echo "安装 Docker Compose 失败,请检查安装过程。"
exit 1
fi
else
echo "Docker Compose 已经安装,跳过安装步骤。"
fi
# 设置目标目录
target_dir="/gpt4-copilot-java"
# 检查目标目录是否已经存在
if [ -d "$target_dir" ]; then
confirm_delete
fi
echo "克隆 gitee 仓库到目标目录并切换到主分支"
git clone https://github.com/Yanyutin753/easy-gpt4-copilot-java.git /gpt4-copilot-java
echo "克隆成功"
echo "进入 /gpt4-copilot-java 目录"
cd /gpt4-copilot-java
while true; do
# 提示用户输入新的端口号
read -p "请输入gpt4-copilot-java的端口号默认为8081: " new_port
# 如果用户没有输入使用默认端口号8081
new_port=${new_port:-8081}
# 检验端口号是否为一个数字并且是否在1到65535的范围内
if [ "$new_port" -ge 1 ] && [ "$new_port" -le 65535 ] && [ "$new_port" -eq "$new_port" ] 2>/dev/null; then
# 输入合法,退出循环
break
else
echo "错误端口号无效请输入一个有效的端口号1到65535之间。"
fi
done
while true; do
# 提示用户是否需要自定义后缀
read -p "是否需要自定义后缀? (y/n) " need_suffix
if [ "$need_suffix" = "y" ]; then
while true; do
# 提示用户输入新的后缀
random_string=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 10 | head -n 1)
echo "请输入新的后缀(例如:/$random_string: "
read new_suffix
# 如果用户没有输入,使用默认后缀 '/'
new_suffix=${new_suffix:-/}
# 检查新的后缀是否以 '/' 开始
case "$new_suffix" in
/*)
# 后缀以 '/' 开始,退出内部循环
break
;;
*)
# 后缀不以 '/' 开始,提示用户重新输入
echo "错误:后缀应以 '/' 开始,请重新输入。\n"
;;
esac
done
# 后缀已经被替换,退出外部循环
break
elif [ "$need_suffix" = "n" ]; then
break
else
printf "错误:无效的输入,请输入 'y' 或 'n'.\n"
fi
done
# 替换docker-compose.yml文件中的后缀和端口号
sed -i -e "s|--server.servlet.context-path=/|--server.servlet.context-path=${new_suffix}|" -e "s|--server.port=[0-9]\+|--server.port=${new_port}|" docker-compose.yml
# 运行 Docker Compose 启动命令
if docker-compose up -d; then
echo "Docker Compose 启动成功,请确保开启 ${new_port} 端口"
echo "gpt4-copilot-java启动网址http://127.0.0.1:${new_port}${new_suffix}"
else
echo "Docker Compose 启动失败请确保正确安装docker和docker compose"
fi