|
| 1 | +#! /bin/bash |
| 2 | + |
| 3 | +Green_font_prefix="\033[32m" && Red_font_prefix="\033[31m" && Green_background_prefix="\033[42;37m" && Red_background_prefix="\033[41;37m" && Font_color_suffix="\033[0m" |
| 4 | +Info="${Green_font_prefix}[信息]${Font_color_suffix}" |
| 5 | +Error="${Red_font_prefix}[错误]${Font_color_suffix}" |
| 6 | +Tip="${Green_font_prefix}[注意]${Font_color_suffix}" |
| 7 | + |
| 8 | +AURORA_PATH="$HOME/aurora" |
| 9 | + |
| 10 | +function check_root() { |
| 11 | + [[ $EUID != 0 ]] && echo -e "${Error} 请使用 root 账号运行该脚本!" && exit 1 |
| 12 | +} |
| 13 | + |
| 14 | +function check_system() { |
| 15 | + source '/etc/os-release' |
| 16 | + ARCH=$(uname -m) |
| 17 | + [[ $ARCH == "x86_64" || $ARCH == "aarch64" ]] || (echo -e "${Error} 极光面板仅支持安装在 X64 或 ARM64 架构的机器上!" && exit 1) |
| 18 | + if [ $ID = "centos" ]; then |
| 19 | + OS_FAMILY="centos" |
| 20 | + UPDATE="yum makecache -q -y" |
| 21 | + INSTALL="yum install -q -y" |
| 22 | + elif [ $ID = "debian" ] || [ $ID = "ubuntu" ]; then |
| 23 | + OS_FAMILY="debian" |
| 24 | + UPDATE="apt update -qq -y" |
| 25 | + INSTALL="apt install -qq -y" |
| 26 | + else |
| 27 | + echo -e "${Error} 系统 $ID $VERSION_ID 暂不支持一键脚本,请尝试手动安装!" && exit 1 |
| 28 | + fi |
| 29 | +} |
| 30 | + |
| 31 | +function install_software() { |
| 32 | + [[ -z $1 ]] || (type $1 > /dev/null 2>&1 || (echo -e "开始安装依赖 $1 ..." && $INSTALL $1) || ($UPDATE && $INSTALL $1)) |
| 33 | +} |
| 34 | + |
| 35 | +function install_docker() { |
| 36 | + if ! type docker > /dev/null 2>&1; then |
| 37 | + curl -fsSL "https://get.docker.com" | bash -s docker --mirror Aliyun |
| 38 | + systemctl enable --now docker |
| 39 | + fi |
| 40 | +} |
| 41 | + |
| 42 | +function install_docker_compose() { |
| 43 | + if ! type docker-compose > /dev/null 2>&1; then |
| 44 | + curl -fsSL "https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
| 45 | + chmod +x /usr/local/bin/docker-compose |
| 46 | + ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose |
| 47 | + fi |
| 48 | +} |
| 49 | + |
| 50 | +function install_all() { |
| 51 | + install_software wget |
| 52 | + install_software curl |
| 53 | + install_docker |
| 54 | + install_docker_compose |
| 55 | +} |
| 56 | + |
| 57 | +function install() { |
| 58 | + install_all |
| 59 | + [[ -n $(docker ps | grep aurora) ]] && echo -e "${Tip} 极光面板已经安装,且正在运行!" && exit 0 |
| 60 | + [ -d ${AURORA_PATH} ] || mkdir -p ${AURORA_PATH} |
| 61 | + cd ${AURORA_PATH} && wget "https://raw.githubusercontent.com/Aurora-Admin-Panel/deploy/main/docker-compose.yml" -O docker-compose.yml |
| 62 | + docker-compose up -d && docker-compose exec backend python app/initial_data.py && \ |
| 63 | + (echo -e "${Info} 极光面板安装成功,已启动!" && exit 0) || (echo -e "${Error} 极光面板安装失败!" && exit 1) |
| 64 | +} |
| 65 | + |
| 66 | +function check_install() { |
| 67 | + [ -f "$HOME/aurora/docker-compose.yml" ] || (echo -e "${Tip} 未检测到已经安装极光面板,请先安装!" && exit 1) |
| 68 | +} |
| 69 | + |
| 70 | +function update() { |
| 71 | + check_install || exit 1 |
| 72 | + install_all |
| 73 | + cd ${AURORA_PATH} && wget "https://raw.githubusercontent.com/Aurora-Admin-Panel/deploy/main/docker-compose.yml" -O docker-compose.yml |
| 74 | + docker-compose pull && docker-compose down --remove-orphans && docker-compose up -d && \ |
| 75 | + (echo -e "${Info} 极光面板更新成功!" && exit 0) || (echo -e "${Error} 极光面板更新失败!" && exit 1) |
| 76 | +} |
| 77 | + |
| 78 | +function uninstall() { |
| 79 | + [ -f "$HOME/aurora/docker-compose.yml" ] || (echo -e "${Tip} 未检测到已经安装极光面板!" && exit 0) |
| 80 | + cd ${AURORA_PATH} |
| 81 | + [[ -n $(docker ps | grep aurora) ]] && docker-compose down |
| 82 | + docker volume rm aurora_db-data && docker volume rm aurora_app-data && \ |
| 83 | + (rm -rf ${AURORA_PATH} && echo -e "${Info} 卸载成功!" && exit 0) || (echo -e "${Error} 卸载失败!" && exit 1) |
| 84 | +} |
| 85 | + |
| 86 | +function no_run_tip() { |
| 87 | + LEVEL=$1 && [[ -z $LEVEL || $LEVEL != ${Info} || $LEVEL != ${Tip} || $LEVEL != ${Error} ]] && LEVEL=${Tip} |
| 88 | + TIPS=$2 && [[ -z $TIPS ]] && TIPS="极光面板未在运行!" |
| 89 | + [[ -z $(docker ps | grep aurora) ]] && echo -e "${LEVEL} $TIPS" |
| 90 | +} |
| 91 | + |
| 92 | +function start() { |
| 93 | + check_install || exit 1 |
| 94 | + [[ -n $(docker ps | grep aurora) ]] && echo -e "${Info} 极光面板正在运行" && exit 0 |
| 95 | + cd ${AURORA_PATH} && docker-compose up -d && echo -e "${Info} 启动成功!" || echo -e "${Error} 启动失败!" |
| 96 | +} |
| 97 | + |
| 98 | +function stop() { |
| 99 | + check_install || exit 1 |
| 100 | + no_run_tip ${Info} && exit 0 |
| 101 | + cd ${AURORA_PATH} && docker-compose down && echo -e "${Info} 停止成功!" || echo -e "${Error} 停止失败!" |
| 102 | +} |
| 103 | + |
| 104 | +function restart() { |
| 105 | + check_install || exit 1 |
| 106 | + no_run_tip ${Tip} "极光面板未在运行,请直接启动!" && exit 0 |
| 107 | + cd ${AURORA_PATH} && docker-compose restart && echo -e "${Info} 重启成功!" || echo -e "${Error} 重启失败!" |
| 108 | +} |
| 109 | + |
| 110 | +function backend_logs() { |
| 111 | + check_install || exit 1 |
| 112 | + no_run_tip && exit 1 |
| 113 | + cd ${AURORA_PATH} && docker-compose logs -f --tail="100" backend worker |
| 114 | +} |
| 115 | + |
| 116 | +function frontend_logs() { |
| 117 | + check_install || exit 1 |
| 118 | + no_run_tip && exit 1 |
| 119 | + cd ${AURORA_PATH} && docker-compose logs -f --tail="100" frontend |
| 120 | +} |
| 121 | + |
| 122 | +function all_logs() { |
| 123 | + check_install || exit 1 |
| 124 | + no_run_tip && exit 1 |
| 125 | + cd ${AURORA_PATH} && docker-compose logs -f --tail="100" |
| 126 | +} |
| 127 | + |
| 128 | +function export_logs() { |
| 129 | + check_install || exit 1 |
| 130 | + no_run_tip && exit 1 |
| 131 | + cd ${AURORA_PATH} && docker-compose logs > logs && \ |
| 132 | + echo -e "${Info} 日志导出成功:${AURORA_PATH}/logs" || echo -e "${Error} 日志导出失败!" |
| 133 | +} |
| 134 | + |
| 135 | +function backup() { |
| 136 | + check_install || exit 1 |
| 137 | + [[ -z $(docker ps | grep aurora | grep postgres) ]] && echo -e "${Tip} 极光面板未在运行,请先启动!" && exit 1 |
| 138 | + DB_USER=$(grep POSTGRES_USER ${AURORA_PATH}/docker-compose.yml | awk '{print $2}') |
| 139 | + [[ -z $DB_USER ]] && DB_USER="aurora" |
| 140 | + DB_NAME=$(grep POSTGRES_DB ${AURORA_PATH}/docker-compose.yml | awk '{print $2}') |
| 141 | + [[ -z $DB_NAME ]] && DB_NAME="aurora" |
| 142 | + cd ${AURORA_PATH} && docker-compose exec postgres pg_dump -d $DB_NAME -U $DB_USER -c > data.sql && \ |
| 143 | + echo -e "${Info} 数据库导出成功:${AURORA_PATH}/data.sql" || echo -e "${Error} 数据库导出失败!" |
| 144 | +} |
| 145 | + |
| 146 | +function restore() { |
| 147 | + check_install || exit 1 |
| 148 | + echo -e "${Tip} 高危操作,请手动执行!" && exit 0 |
| 149 | +} |
| 150 | + |
| 151 | +function add_superu() { |
| 152 | + check_install || exit 1 |
| 153 | + [[ -z $(docker ps | grep aurora | grep backend) ]] && echo -e "${Tip} 极光面板未在运行,请先启动!" && exit 1 |
| 154 | + cd ${AURORA_PATH} && docker-compose exec backend python app/initial_data.py |
| 155 | +} |
| 156 | + |
| 157 | +function welcome_aurora() { |
| 158 | + check_root |
| 159 | + check_system |
| 160 | + echo -e "${Green_font_prefix} |
| 161 | + 极光面板 一键脚本 |
| 162 | + -------------------------------- |
| 163 | + 1. 安装 极光面板 |
| 164 | + 2. 更新 极光面板 |
| 165 | + 3. 卸载 极光面板 |
| 166 | + ———————————— |
| 167 | + 4. 启动 极光面板 |
| 168 | + 5. 停止 极光面板 |
| 169 | + 6. 重启 极光面板 |
| 170 | + ———————————— |
| 171 | + 7. 查看 后端实时日志 |
| 172 | + 8. 查看 前端实时日志 |
| 173 | + 9. 查看 全部实时日志 |
| 174 | + 10. 导出 全部日志 |
| 175 | + ———————————— |
| 176 | + 11. 备份 数据库 |
| 177 | + 12. 还原 数据库 |
| 178 | + 13. 添加 管理员用户 |
| 179 | + ———————————— |
| 180 | + 0. 退出脚本 |
| 181 | + ———————————— |
| 182 | + ${Font_color_suffix}" |
| 183 | + read -r -e -p " 请输入数字 [1-13]: " num && echo |
| 184 | + case "$num" in |
| 185 | + 1) |
| 186 | + install |
| 187 | + ;; |
| 188 | + 2) |
| 189 | + update |
| 190 | + ;; |
| 191 | + 3) |
| 192 | + uninstall |
| 193 | + ;; |
| 194 | + 4) |
| 195 | + start |
| 196 | + ;; |
| 197 | + 5) |
| 198 | + stop |
| 199 | + ;; |
| 200 | + 6) |
| 201 | + restart |
| 202 | + ;; |
| 203 | + 7) |
| 204 | + backend_logs |
| 205 | + ;; |
| 206 | + 8) |
| 207 | + frontend_logs |
| 208 | + ;; |
| 209 | + 9) |
| 210 | + all_logs |
| 211 | + ;; |
| 212 | + 10) |
| 213 | + export_logs |
| 214 | + ;; |
| 215 | + 11) |
| 216 | + backup |
| 217 | + ;; |
| 218 | + 12) |
| 219 | + restore |
| 220 | + ;; |
| 221 | + 13) |
| 222 | + add_superu |
| 223 | + ;; |
| 224 | + 0) |
| 225 | + exit 0 |
| 226 | + ;; |
| 227 | + *) |
| 228 | + echo -e "${Error} 请输入正确数字 [1-13]" |
| 229 | + ;; |
| 230 | + esac |
| 231 | +} |
| 232 | + |
| 233 | +welcome_aurora |
0 commit comments