This commit is contained in:
root
2020-05-07 09:05:20 +08:00
commit e9d164c703
86 changed files with 11584 additions and 0 deletions

View 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"

View 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"

View 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