mirror of
https://github.com/lan-tianxiang/JS_TOOL.git
synced 2025-07-13 20:22:35 +08:00
.
This commit is contained in:
94
resource/install_scripts/Qunhui_docker_install_jd.sh
Executable file
94
resource/install_scripts/Qunhui_docker_install_jd.sh
Executable file
@ -0,0 +1,94 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# 以 Docker 容器的方式一键安装 jd-base。
|
||||
#
|
||||
clear
|
||||
|
||||
DockerImage="lantianxiang1/js_tool:A1"
|
||||
ShellName=$0
|
||||
ShellDir=$(cd "$(dirname "$0")";pwd)
|
||||
ContainerName=""
|
||||
PanelPort=""
|
||||
WorkDir="${ShellDir}/jd-docker-workdir"
|
||||
JdDir=""
|
||||
ConfigDir=""
|
||||
LogDir=""
|
||||
ScriptsDir=""
|
||||
|
||||
GetImageType="Online"
|
||||
HasImage=false
|
||||
NewImage=true
|
||||
DelContainer=false
|
||||
|
||||
NeedDirConfig=""
|
||||
NeedDirLog=""
|
||||
NeedDirScripts=""
|
||||
|
||||
log() {
|
||||
echo -e "\e[32m$1 \e[0m"
|
||||
}
|
||||
|
||||
inp() {
|
||||
echo -e "\e[33m$1 \e[0m"
|
||||
}
|
||||
|
||||
warn() {
|
||||
echo -e "\e[31m$1 \e[0m"
|
||||
}
|
||||
|
||||
HasImage=true
|
||||
DelContainer=true
|
||||
ContainerName="jd"
|
||||
PanelPort="5678"
|
||||
NeedDirConfig=''
|
||||
NeedDirLog=''
|
||||
|
||||
#
|
||||
# 配置信息收集完成,开始安装
|
||||
#
|
||||
|
||||
if [ $NewImage = true ]; then
|
||||
log "\n正在获取新镜像..."
|
||||
if [ $HasImage = true ]; then
|
||||
docker stop jd
|
||||
docker rm jd
|
||||
docker rmi $(docker images lantianxiang1/js_tool -q)
|
||||
fi
|
||||
if [ $GetImageType = "Local" ]; then
|
||||
rm -rf $WorkDir
|
||||
mkdir -p $WorkDir
|
||||
wget -q https://gitee.com/highdimen/js_tool/raw/A1/docker/docker/Dockerfile -O $WorkDir/Dockerfile
|
||||
sed -i 's,github.com,github.com.cnpmjs.org,g' $WorkDir/Dockerfile
|
||||
sed -i 's,npm install,npm install --registry=https://registry.npm.taobao.org,g' $WorkDir/Dockerfile
|
||||
docker build -t $DockerImage $WorkDir > $ShellDir/build_jd_image.log
|
||||
rm -fr $WorkDir
|
||||
else
|
||||
docker pull $DockerImage
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $DelContainer = true ]; then
|
||||
log "\n2.2.删除先前的容器"
|
||||
docker stop $ContainerName > /dev/null
|
||||
docker rm $ContainerName > /dev/null
|
||||
fi
|
||||
|
||||
clear
|
||||
|
||||
log "\n创建容器并运行"
|
||||
docker run -dit \
|
||||
$NeedDirConfig \
|
||||
$NeedDirLog \
|
||||
$NeedDirScripts \
|
||||
-p $PanelPort:5678 \
|
||||
--name $ContainerName \
|
||||
--hostname jd \
|
||||
--restart always \
|
||||
$DockerImage
|
||||
|
||||
log "\n下面列出所有容器"
|
||||
docker ps
|
||||
|
||||
log "\n安装已经完成。\n请访问 http://<ip>:${PanelPort} 进行配置\n初始用户名:admin,初始密码:adminadmin"
|
||||
rm -f $ShellDir/$ShellName
|
||||
echo "进入容器命令为########docker exec -it jd /bin/bash"
|
258
resource/install_scripts/docker_install_jd.sh
Executable file
258
resource/install_scripts/docker_install_jd.sh
Executable file
@ -0,0 +1,258 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# 以 Docker 容器的方式一键安装 jd-base。
|
||||
#
|
||||
clear
|
||||
|
||||
DockerImage="lantianxiang1/js_tool:A1"
|
||||
ShellName=$0
|
||||
ShellDir=$(cd "$(dirname "$0")";pwd)
|
||||
ContainerName=""
|
||||
PanelPort=""
|
||||
WorkDir="${ShellDir}/jd-docker-workdir"
|
||||
JdDir=""
|
||||
ConfigDir=""
|
||||
LogDir=""
|
||||
ScriptsDir=""
|
||||
|
||||
GetImageType="Online"
|
||||
HasImage=false
|
||||
NewImage=true
|
||||
DelContainer=false
|
||||
|
||||
NeedDirConfig=""
|
||||
NeedDirLog=""
|
||||
NeedDirScripts=""
|
||||
|
||||
log() {
|
||||
echo -e "\e[32m$1 \e[0m"
|
||||
}
|
||||
|
||||
inp() {
|
||||
echo -e "\e[33m$1 \e[0m"
|
||||
}
|
||||
|
||||
warn() {
|
||||
echo -e "\e[31m$1 \e[0m"
|
||||
}
|
||||
|
||||
|
||||
# 检查 Docker 环境
|
||||
Install_Docker() {
|
||||
if [ -x "$(command -v docker)" ]; then
|
||||
log "Docker 已安装!"
|
||||
else
|
||||
warn "请自行安装好 Docker !"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
Install_Docker
|
||||
|
||||
warn "\n注意如果你什么都不清楚,建议所有选项都直接回车,使用默认选择!!!\n"
|
||||
|
||||
#
|
||||
# 收集配置信息
|
||||
#
|
||||
|
||||
# 选择镜像获取方式
|
||||
Choose_GetImageType() {
|
||||
inp "\n选择镜像获取方式:\n1) 在线获取[默认]\n2 本地生成) "
|
||||
echo -n -e "\e[33m输入您的选择->\e[0m"
|
||||
read update
|
||||
if [ "$update" = "2" ]; then
|
||||
GetImageType="Local"
|
||||
fi
|
||||
}
|
||||
|
||||
# 检测镜像是否存在
|
||||
Check_Image() {
|
||||
if [ ! -z "$(docker images -q $DockerImage 2> /dev/null)" ]; then
|
||||
HasImage=true
|
||||
inp "检测到先前已经存在的镜像,是否创建新的镜像:\n1) 是[默认]\n2) 不需要"
|
||||
echo -n -e "\e[33m输入您的选择->\e[0m"
|
||||
read update
|
||||
if [ "$update" = "2" ]; then
|
||||
NewImage=false
|
||||
else
|
||||
Choose_GetImageType
|
||||
fi
|
||||
else
|
||||
Choose_GetImageType
|
||||
fi
|
||||
}
|
||||
Check_Image
|
||||
|
||||
# 检测容器是否存在
|
||||
Check_ContainerName() {
|
||||
if [ ! -z "$(docker ps -a --format "{{.Names}}" | grep -w $ContainerName 2> /dev/null)" ]; then
|
||||
inp "\n检测到先前已经存在的容器,是否删除先前的容器:\n1) 是[默认]\n2) 不要"
|
||||
echo -n -e "\e[33m输入您的选择->\e[0m"
|
||||
read update
|
||||
if [ "$update" = "2" ]; then
|
||||
log "选择了不删除先前的容器,需要重新输入容器名称"
|
||||
Input_ContainerName
|
||||
else
|
||||
DelContainer=true
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# 输入容器名称
|
||||
Input_ContainerName() {
|
||||
echo -n -e "\n\e[33m请输入要创建的Docker容器名称[默认为:jd]->\e[0m"
|
||||
read container_name
|
||||
if [ -z "$container_name" ]; then
|
||||
ContainerName="jd"
|
||||
else
|
||||
ContainerName=$container_name
|
||||
fi
|
||||
Check_ContainerName
|
||||
}
|
||||
Input_ContainerName
|
||||
|
||||
# 输入端口号
|
||||
Input_PanelPort() {
|
||||
echo -n -e "\n\e[33m请输入控制面板端口号[默认为:5678]->\e[0m"
|
||||
read panel_port
|
||||
if [ -z "$panel_port" ]; then
|
||||
PanelPort="5678"
|
||||
else
|
||||
PanelPort=$panel_port
|
||||
fi
|
||||
inp "如发现端口冲突,请自行检查端口占用情况!"
|
||||
}
|
||||
Input_PanelPort
|
||||
|
||||
|
||||
|
||||
# 输入端口号
|
||||
Input_NotworkType() {
|
||||
inp "\ndocker网络模式\n1) brindge[默认]\n2) host"
|
||||
echo -n -e "\e[33m输入您的选择->\e[0m"
|
||||
read NotworkType
|
||||
if [ "$NotworkType" = "2" ]; then
|
||||
NotworkType="host"
|
||||
else
|
||||
NotworkType="bridge"
|
||||
fi
|
||||
}
|
||||
Input_NotworkType
|
||||
|
||||
|
||||
|
||||
# 配置文件目录
|
||||
|
||||
Need_ConfigDir() {
|
||||
inp "\n是否需要映射配置文件目录:\n1) 是[默认]\n2) 否"
|
||||
echo -n -e "\e[33m输入您的选择->\e[0m"
|
||||
read need_config_dir
|
||||
if [ "$need_config_dir" = "2" ]; then
|
||||
NeedDirConfig=''
|
||||
else
|
||||
NeedDirConfig="-v $ConfigDir:/root/jd/config"
|
||||
echo -e "\n\e[33m如果有用于存放配置文件的远程 Git 仓库,请输入地址,否则直接回车(看不懂也回车):\e[0m"
|
||||
read remote_config
|
||||
if [ -n "$remote_config" ]; then
|
||||
git clone $remote_config ${JdDir}/config
|
||||
else
|
||||
mkdir -p $ConfigDir
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
Need_LogDir() {
|
||||
inp "\n是否需要映射日志文件目录:\n1) 是[默认]\n2) 否"
|
||||
echo -n -e "\e[33m输入您的选择->\e[0m"
|
||||
read need_log_dir
|
||||
if [ "$need_log_dir" = "2" ]; then
|
||||
NeedDirLog=''
|
||||
else
|
||||
NeedDirLog="-v $LogDir:/root/jd/log"
|
||||
mkdir -p $LogDir
|
||||
fi
|
||||
}
|
||||
|
||||
Need_ScriptsDir() {
|
||||
inp "\n是否需要映射js脚本目录:\n1) 是\n2) 否[默认]"
|
||||
echo -n -e "\e[33m输入您的选择->\e[0m"
|
||||
read need_scripts_dir
|
||||
if [ "$need_scripts_dir" = "1" ]; then
|
||||
NeedDirScripts="-v $ScriptsDir:/root/jd/scripts"
|
||||
mkdir -p $ScriptsDir
|
||||
fi
|
||||
}
|
||||
|
||||
Need_Dir() {
|
||||
inp "\n是否需要映射文件目录:\n1) 是[默认]\n2) 否"
|
||||
echo -n -e "\e[33m输入您的选择->\e[0m"
|
||||
read need_dir
|
||||
if [ "$need_dir" = "2" ]; then
|
||||
log "选择了不映射文件目录"
|
||||
else
|
||||
echo -e "\n\e[33m请输入配置文件保存的绝对路径,直接回车为 $ShellDir/jd-docker :\e[0m"
|
||||
read jd_dir
|
||||
if [ -z "$jd_dir" ]; then
|
||||
JdDir=$ShellDir/jd-docker
|
||||
else
|
||||
JdDir=$jd_dir
|
||||
fi
|
||||
ConfigDir=$JdDir/config
|
||||
LogDir=$JdDir/log
|
||||
ScriptsDir=$JdDir/scripts
|
||||
Need_ConfigDir
|
||||
Need_LogDir
|
||||
Need_ScriptsDir
|
||||
fi
|
||||
}
|
||||
Need_Dir
|
||||
|
||||
#
|
||||
# 配置信息收集完成,开始安装
|
||||
#
|
||||
|
||||
if [ $NewImage = true ]; then
|
||||
log "\n正在获取新镜像..."
|
||||
if [ $HasImage = true ]; then
|
||||
docker stop jd
|
||||
docker rm jd
|
||||
docker rmi $(docker images lantianxiang1/js_tool -q) -f
|
||||
fi
|
||||
if [ $GetImageType = "Local" ]; then
|
||||
rm -rf $WorkDir
|
||||
mkdir -p $WorkDir
|
||||
wget -q https://gitee.com/highdimen/js_tool/raw/A1/docker/docker/Dockerfile -O $WorkDir/Dockerfile
|
||||
sed -i 's,github.com,github.com.cnpmjs.org,g' $WorkDir/Dockerfile
|
||||
sed -i 's,npm install,npm install --registry=https://registry.npm.taobao.org,g' $WorkDir/Dockerfile
|
||||
docker build -t $DockerImage $WorkDir > $ShellDir/build_jd_image.log
|
||||
rm -fr $WorkDir
|
||||
else
|
||||
docker pull $DockerImage
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $DelContainer = true ]; then
|
||||
log "\n2.2.删除先前的容器"
|
||||
docker stop $ContainerName > /dev/null
|
||||
docker rm $ContainerName > /dev/null
|
||||
fi
|
||||
|
||||
clear
|
||||
|
||||
log "\n创建容器并运行"
|
||||
docker run -dit \
|
||||
$NeedDirConfig \
|
||||
$NeedDirLog \
|
||||
$NeedDirScripts \
|
||||
-p $PanelPort:5678 \
|
||||
--name $ContainerName \
|
||||
--hostname jd \
|
||||
--network $NotworkType \
|
||||
--restart always \
|
||||
$DockerImage
|
||||
|
||||
log "\n下面列出所有容器"
|
||||
docker ps
|
||||
|
||||
log "\n安装已经完成。\n请访问 http://<ip>:${PanelPort} 进行配置\n初始用户名:admin,初始密码:adminadmin"
|
||||
rm -f $ShellDir/$ShellName
|
||||
echo "进入容器命令为########docker exec -it jd /bin/bash"
|
143
resource/install_scripts/linux_install_jd.sh
Executable file
143
resource/install_scripts/linux_install_jd.sh
Executable file
@ -0,0 +1,143 @@
|
||||
#!/usr/bin/env bash
|
||||
clear
|
||||
echo -e "\n"
|
||||
echo -e "\n开始部署jd_shell\n"
|
||||
|
||||
ShellName=$0
|
||||
dir_shell=$(dirname $(readlink -f "$0"))
|
||||
JdDir=$dir_shell/jd
|
||||
|
||||
## 判断使用系统
|
||||
detect_system() {
|
||||
SYSTEM=UnKnow
|
||||
[[ -n $(uname -a | grep Android) ]] && SYSTEM=Android
|
||||
[[ -n $(uname -s | grep Darwin) ]] && SYSTEM=Macos
|
||||
[[ -n $(ls /etc | grep lsb-release) ]] && SYSTEM=Ubuntu
|
||||
[[ -n $(ls /etc | grep debian_version) ]] && SYSTEM=Debian
|
||||
[[ -n $(ls /etc | grep redhat-release) ]] && SYSTEM=Centos
|
||||
[ -s /proc/1/cgroup ] && [[ -n $(cat /proc/1/cgroup | grep cpuset | grep scope) ]] && SYSTEM=Docker
|
||||
[ -s /proc/version ] && [[ -n $(cat /proc/version | grep Openwar) ]] && SYSTEM=Openwar
|
||||
}
|
||||
|
||||
Welcome() {
|
||||
echo -e '#####################################################'
|
||||
echo -e "\n正在为您安装环境(依赖):\ngit wget curl perl moreutils node.js yarn/npm\n"
|
||||
echo -e '#####################################################'
|
||||
echo -e "除了安卓,由于其它系统安装软件可能需要使用sudo,本脚本除安装环境外不会调用再次任何root的执行权限\n"
|
||||
echo -e "若担心安全风险,可选择自行安装环境!!\n"
|
||||
echo -e '#####################################################'
|
||||
echo -e "检测到系统似乎为 $SYSTEM ,请输入你的系统对应序号 :\n"
|
||||
echo -e "1 debian/ubuntu/armbian/OpenMediaVault,以及其他debian系\n"
|
||||
echo -e "2 CentOS/RedHat/Fedora等红帽系\n"
|
||||
echo -e "3 Termux为主的安卓系\n"
|
||||
echo -e "4 环境已安装,直接开始部署脚本\n"
|
||||
echo -e "5 自己手动安装环境(退出)\n"
|
||||
echo -e "时间$(date +%Y-%m-%d) $(date +%H:%M)"
|
||||
echo -e ''
|
||||
echo -e '#####################################################'
|
||||
echo -e ''
|
||||
read -n1 LINUX_TYPE
|
||||
case $LINUX_TYPE in
|
||||
1)
|
||||
echo " debian/ubuntu/armbian/OpenMediaVault,以及其他debian系"
|
||||
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
|
||||
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
|
||||
sudo apt update && sudo apt install -y git wget curl perl yarn npm
|
||||
if [ ! -x "$(command -v node)" ] || [ ! -x "$(command -v npm)" ] || [ ! -x "$(command -v git)" ] || [ ! -x "$(command -v curl)" ] || [ ! -x "$(command -v wget)" ] || [ ! -x "$(command -v perl)" ]; then
|
||||
echo -e "\n依赖未安装完整,请重新运行该脚本且切换良好的网络环境!\n"
|
||||
exit 1
|
||||
else
|
||||
echo -e "\n依赖安装完成,开始部署脚本,否则按 Ctrl + C 退出!\n"
|
||||
INSTALLATION_CLONE
|
||||
TG_BOT
|
||||
fi
|
||||
;;
|
||||
2)
|
||||
echo " CentOS/RedHat/Fedora等红帽系"
|
||||
curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
|
||||
sudo yum -y update && sudo yum -y install git wget curl perl yarn npm
|
||||
if [ ! -x "$(command -v node)" ] || [ ! -x "$(command -v npm)" ] || [ ! -x "$(command -v git)" ] || [ ! -x "$(command -v curl)" ] || [ ! -x "$(command -v wget)" ] || [ ! -x "$(command -v perl)" ]; then
|
||||
echo -e "\n依赖未安装完整,请重新运行该脚本且切换良好的网络环境!\n"
|
||||
exit 1
|
||||
else
|
||||
echo -e "\n依赖安装完成,开始部署脚本,否则按 Ctrl + C 退出!\n"
|
||||
INSTALLATION_CLONE
|
||||
TG_BOT
|
||||
fi
|
||||
;;
|
||||
3)
|
||||
echo " Termux为主的安卓系"
|
||||
pkg update -y && pkg install -y git perl nodejs-lts yarn wget curl nano cronie
|
||||
if [ ! -x "$(command -v node)" ] || [ ! -x "$(command -v npm)" ] || [ ! -x "$(command -v git)" ] || [ ! -x "$(command -v curl)" ] || [ ! -x "$(command -v wget)" ] || [ ! -x "$(command -v perl)" ]; then
|
||||
echo -e "\n依赖未安装完整,请重新运行该脚本且切换良好的网络环境!\n"
|
||||
exit 1
|
||||
else
|
||||
echo -e "\n依赖安装完成,开始部署脚本,否则按 Ctrl + C 退出!\n"
|
||||
INSTALLATION_CLONE
|
||||
TG_BOT
|
||||
fi
|
||||
;;
|
||||
4)
|
||||
echo " 已安装(继续)"
|
||||
if [ ! -x "$(command -v node)" ] || [ ! -x "$(command -v git)" ] || [ ! -x "$(command -v curl)" ] || [ ! -x "$(command -v wget)" ] || [ ! -x "$(command -v perl)" ]; then
|
||||
echo -e "\n依赖未安装完整!\n"
|
||||
exit 1
|
||||
else
|
||||
echo -e "\n依赖已安装,开始部署脚本,否则按 Ctrl + C 退出!\n"
|
||||
INSTALLATION_CLONE
|
||||
TG_BOT
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo " 自己手动安装环境(退出)"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
INSTALLATION_CLONE() {
|
||||
echo -e "\n1. 获取源码"
|
||||
[ -d $JdDir ] && mv $JdDir $JdDir.bak && echo "检测到已有 $JdDir 目录,已备份为 $JdDir.bak"
|
||||
git clone -b A1 https://gitee.com/highdimen/js_tool.git $JdDir
|
||||
|
||||
echo -e "\n2. 配置文件"
|
||||
crontab -l >$JdDir/old_crontab
|
||||
npm config set registry https://registry.npm.taobao.org
|
||||
echo -e "\n3. 执行 git_pull.sh 进行脚本更新以及定时文件更新"
|
||||
mkdir $JdDir/config
|
||||
[ ! -f $JdDir/config/config.sh ] && cp -f $JdDir/sample/config.sh.sample $JdDir/config/config.sh
|
||||
[ ! -f $JdDir/config/cookie.sh ] && cp -f $JdDir/sample/cookie.sh.sample $JdDir/config/cookie.sh
|
||||
[ ! -f $JdDir/config/crontab.list ] && cp -f $JdDir/sample/crontab.list.sample $JdDir/config/crontab.list
|
||||
[ ! -f $JdDir/config/sharecode.sh ] && cp -f $JdDir/sample/sharecode.sh.sample $JdDir/config/sharecode.sh
|
||||
bash $JdDir/jd.sh update
|
||||
|
||||
echo -e "\n注意:原有定时任务已备份在 $JdDir/old_crontab"
|
||||
rm -f $dir_shell/${ShellName}
|
||||
|
||||
echo -e "\n安装完成!!!!"
|
||||
}
|
||||
|
||||
TG_BOT() {
|
||||
echo -e "\n 是否启用TG机器人功能,需额外占据200mb左右的空间,可能出现占用较大运行内存,cpu资源加重等情况"
|
||||
echo -e "\n 任意键暂不启用,后续仍可以开启。输入 1 现在开启。"
|
||||
read -n1 PY_TYPE
|
||||
case $PY_TYPE in
|
||||
1)
|
||||
case $LINUX_TYPE in
|
||||
1)
|
||||
sudo apt install -y python3 gcc
|
||||
;;
|
||||
2)
|
||||
sudo yum install -y python3 gcc
|
||||
;;
|
||||
3)
|
||||
pkg install -y python3 gcc
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
}
|
||||
detect_system
|
||||
Welcome
|
Reference in New Issue
Block a user