登录页面改造
This commit is contained in:
348
deploy/deploy.sh
Normal file
348
deploy/deploy.sh
Normal file
@@ -0,0 +1,348 @@
|
||||
#!/bin/bash
|
||||
# CloudWAF 部署脚本 - Gname DNS 提供商更新
|
||||
# 使用方法: ./deploy.sh [zip文件路径]
|
||||
|
||||
set -e # 遇到错误立即退出
|
||||
|
||||
# ========== 配置区域 ==========
|
||||
# 支持环境变量和配置文件
|
||||
# 从环境变量读取
|
||||
INSTALL_BASE_DIR="${BRAND_INSTALL_PATH:-/usr/local/goedge}"
|
||||
|
||||
# 从配置文件读取(如果存在)
|
||||
if [ -f "/etc/goedge/brand.conf" ]; then
|
||||
source /etc/goedge/brand.conf
|
||||
if [ -n "$BRAND_INSTALL_PATH" ]; then
|
||||
INSTALL_BASE_DIR="$BRAND_INSTALL_PATH"
|
||||
fi
|
||||
fi
|
||||
|
||||
# 如果通过参数传入 zip 文件路径,则使用参数;否则使用默认路径
|
||||
ZIP_FILE_RAW="${1:-/tmp/edge-admin-linux-amd64-plus-v1.3.8.zip}"
|
||||
# 获取绝对路径,防止 cd 到临时目录后找不到文件
|
||||
if [[ "$ZIP_FILE_RAW" = /* ]]; then
|
||||
ZIP_FILE="$ZIP_FILE_RAW"
|
||||
else
|
||||
ZIP_FILE="$(pwd)/$ZIP_FILE_RAW"
|
||||
fi
|
||||
|
||||
TARGET_DIR="${INSTALL_BASE_DIR}/edge-admin"
|
||||
BACKUP_DIR="${INSTALL_BASE_DIR}/backup_$(date +%Y%m%d_%H%M%S)"
|
||||
TEMP_DIR="/tmp/edge-admin-update-$(date +%s)"
|
||||
|
||||
# 颜色输出
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# 日志函数
|
||||
log_info() {
|
||||
echo -e "${GREEN}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
log_warn() {
|
||||
echo -e "${YELLOW}[WARN]${NC} $1"
|
||||
}
|
||||
|
||||
log_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
# ========== 检查前置条件 ==========
|
||||
check_prerequisites() {
|
||||
log_info "检查前置条件..."
|
||||
|
||||
# 检查 zip 文件是否存在
|
||||
if [ ! -f "$ZIP_FILE" ]; then
|
||||
log_error "未找到更新包: $ZIP_FILE"
|
||||
log_info "使用方法: $0 [zip文件路径]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查目标目录是否存在
|
||||
if [ ! -d "$TARGET_DIR" ]; then
|
||||
log_error "目标目录不存在: $TARGET_DIR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查是否有足够的磁盘空间(至少 500MB)
|
||||
available_space=$(df "$TARGET_DIR" | tail -1 | awk '{print $4}')
|
||||
if [ "$available_space" -lt 512000 ]; then
|
||||
log_warn "可用磁盘空间不足 500MB,可能影响部署"
|
||||
fi
|
||||
|
||||
log_info "前置条件检查通过"
|
||||
}
|
||||
|
||||
# ========== 1. 备份关键目录 ==========
|
||||
backup_files() {
|
||||
log_info "=========================================="
|
||||
log_info "步骤 1: 备份关键目录"
|
||||
log_info "=========================================="
|
||||
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
|
||||
# 备份 EdgeAdmin 配置
|
||||
if [ -d "$TARGET_DIR/configs" ]; then
|
||||
log_info "备份 EdgeAdmin 配置文件..."
|
||||
cp -r "$TARGET_DIR/configs" "$BACKUP_DIR/edge-admin-configs"
|
||||
log_info "✅ EdgeAdmin 配置已备份"
|
||||
else
|
||||
log_warn "EdgeAdmin configs 目录不存在,跳过备份"
|
||||
fi
|
||||
|
||||
# 备份 EdgeAdmin 日志(可选)
|
||||
if [ -d "$TARGET_DIR/logs" ]; then
|
||||
log_info "备份 EdgeAdmin 日志文件..."
|
||||
cp -r "$TARGET_DIR/logs" "$BACKUP_DIR/edge-admin-logs" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# 备份 EdgeAPI 配置和数据
|
||||
if [ -d "$TARGET_DIR/edge-api" ]; then
|
||||
if [ -d "$TARGET_DIR/edge-api/configs" ]; then
|
||||
log_info "备份 EdgeAPI 配置文件..."
|
||||
cp -r "$TARGET_DIR/edge-api/configs" "$BACKUP_DIR/edge-api-configs"
|
||||
log_info "✅ EdgeAPI 配置已备份"
|
||||
fi
|
||||
|
||||
if [ -d "$TARGET_DIR/edge-api/logs" ]; then
|
||||
log_info "备份 EdgeAPI 日志文件..."
|
||||
cp -r "$TARGET_DIR/edge-api/logs" "$BACKUP_DIR/edge-api-logs" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
if [ -d "$TARGET_DIR/edge-api/data" ]; then
|
||||
log_info "备份 EdgeAPI 数据文件..."
|
||||
cp -r "$TARGET_DIR/edge-api/data" "$BACKUP_DIR/edge-api-data" 2>/dev/null || true
|
||||
fi
|
||||
fi
|
||||
|
||||
log_info "✅ 备份完成,备份位置: $BACKUP_DIR"
|
||||
echo ""
|
||||
}
|
||||
|
||||
# ========== 2. 停止服务 ==========
|
||||
stop_services() {
|
||||
log_info "=========================================="
|
||||
log_info "步骤 2: 停止服务"
|
||||
log_info "=========================================="
|
||||
|
||||
if [ -f "$TARGET_DIR/bin/edge-admin" ]; then
|
||||
log_info "停止 EdgeAdmin 服务..."
|
||||
"$TARGET_DIR/bin/edge-admin" stop || true
|
||||
sleep 2
|
||||
|
||||
# 检查是否还有进程在运行 (精确匹配二进制路径,避免杀死解析 zip 路径的脚本自身)
|
||||
if pgrep -f "$TARGET_DIR/bin/edge-admin" > /dev/null; then
|
||||
log_warn "检测到 edge-admin 进程仍在运行,尝试强制停止..."
|
||||
pkill -9 -f "$TARGET_DIR/bin/edge-admin" || true
|
||||
sleep 1
|
||||
fi
|
||||
|
||||
log_info "✅ 服务已停止"
|
||||
else
|
||||
log_warn "未找到 edge-admin 可执行文件,跳过停止步骤"
|
||||
fi
|
||||
echo ""
|
||||
}
|
||||
|
||||
# ========== 3. 解压新版本 ==========
|
||||
extract_package() {
|
||||
log_info "=========================================="
|
||||
log_info "步骤 3: 解压新版本"
|
||||
log_info "=========================================="
|
||||
|
||||
log_info "解压更新包到临时目录: $TEMP_DIR"
|
||||
mkdir -p "$TEMP_DIR"
|
||||
cd "$TEMP_DIR"
|
||||
|
||||
if ! unzip -q "$ZIP_FILE"; then
|
||||
log_error "解压失败,请检查 zip 文件是否损坏"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log_info "✅ 解压完成"
|
||||
echo ""
|
||||
}
|
||||
|
||||
# ========== 4. 替换文件 ==========
|
||||
replace_files() {
|
||||
log_info "=========================================="
|
||||
log_info "步骤 4: 替换文件"
|
||||
log_info "=========================================="
|
||||
|
||||
# 替换 EdgeAdmin bin
|
||||
if [ -d "$TEMP_DIR/edge-admin/bin" ]; then
|
||||
log_info "替换 EdgeAdmin 可执行文件..."
|
||||
cp -r "$TEMP_DIR/edge-admin/bin"/* "$TARGET_DIR/bin/"
|
||||
log_info "✅ EdgeAdmin bin 已更新"
|
||||
fi
|
||||
|
||||
# 替换 EdgeAdmin web(排除 tmp)
|
||||
if [ -d "$TEMP_DIR/edge-admin/web" ]; then
|
||||
log_info "替换 EdgeAdmin 前端文件..."
|
||||
if command -v rsync > /dev/null; then
|
||||
rsync -av --exclude='tmp' \
|
||||
"$TEMP_DIR/edge-admin/web/" "$TARGET_DIR/web/"
|
||||
else
|
||||
# 如果没有 rsync,使用 cp
|
||||
cp -r "$TEMP_DIR/edge-admin/web"/* "$TARGET_DIR/web/" 2>/dev/null || true
|
||||
rm -rf "$TARGET_DIR/web/tmp"/* 2>/dev/null || true
|
||||
fi
|
||||
# 清空 tmp 目录
|
||||
rm -rf "$TARGET_DIR/web/tmp"/* 2>/dev/null || true
|
||||
log_info "✅ EdgeAdmin web 已更新"
|
||||
fi
|
||||
|
||||
# 替换 EdgeAPI 文件
|
||||
if [ -d "$TEMP_DIR/edge-admin/edge-api" ]; then
|
||||
log_info "替换 EdgeAPI 文件..."
|
||||
|
||||
# 确保 edge-api 目录存在
|
||||
mkdir -p "$TARGET_DIR/edge-api"
|
||||
|
||||
# 替换 bin
|
||||
if [ -d "$TEMP_DIR/edge-admin/edge-api/bin" ]; then
|
||||
mkdir -p "$TARGET_DIR/edge-api/bin"
|
||||
cp -r "$TEMP_DIR/edge-admin/edge-api/bin"/* \
|
||||
"$TARGET_DIR/edge-api/bin/" 2>/dev/null || true
|
||||
log_info "✅ EdgeAPI bin 已更新"
|
||||
fi
|
||||
|
||||
# 替换 deploy(节点安装包)
|
||||
if [ -d "$TEMP_DIR/edge-admin/edge-api/deploy" ]; then
|
||||
mkdir -p "$TARGET_DIR/edge-api/deploy"
|
||||
cp -r "$TEMP_DIR/edge-admin/edge-api/deploy"/* \
|
||||
"$TARGET_DIR/edge-api/deploy/" 2>/dev/null || true
|
||||
log_info "✅ EdgeAPI deploy 已更新"
|
||||
fi
|
||||
|
||||
# 替换 installers(安装工具)
|
||||
if [ -d "$TEMP_DIR/edge-admin/edge-api/installers" ]; then
|
||||
mkdir -p "$TARGET_DIR/edge-api/installers"
|
||||
cp -r "$TEMP_DIR/edge-admin/edge-api/installers"/* \
|
||||
"$TARGET_DIR/edge-api/installers/" 2>/dev/null || true
|
||||
log_info "✅ EdgeAPI installers 已更新"
|
||||
fi
|
||||
fi
|
||||
|
||||
log_info "✅ 文件替换完成"
|
||||
echo ""
|
||||
}
|
||||
|
||||
# ========== 5. 恢复配置文件 ==========
|
||||
restore_configs() {
|
||||
log_info "=========================================="
|
||||
log_info "步骤 5: 恢复配置文件"
|
||||
log_info "=========================================="
|
||||
|
||||
# 恢复 EdgeAdmin 配置
|
||||
if [ -d "$BACKUP_DIR/edge-admin-configs" ]; then
|
||||
log_info "恢复 EdgeAdmin 配置文件..."
|
||||
cp -r "$BACKUP_DIR/edge-admin-configs"/* "$TARGET_DIR/configs/"
|
||||
log_info "✅ EdgeAdmin 配置已恢复"
|
||||
else
|
||||
log_warn "未找到 EdgeAdmin 配置备份,请手动检查配置文件"
|
||||
fi
|
||||
|
||||
# 恢复 EdgeAPI 配置
|
||||
if [ -d "$BACKUP_DIR/edge-api-configs" ]; then
|
||||
log_info "恢复 EdgeAPI 配置文件..."
|
||||
mkdir -p "$TARGET_DIR/edge-api/configs"
|
||||
cp -r "$BACKUP_DIR/edge-api-configs"/* "$TARGET_DIR/edge-api/configs/" 2>/dev/null || true
|
||||
log_info "✅ EdgeAPI 配置已恢复"
|
||||
else
|
||||
log_warn "未找到 EdgeAPI 配置备份,如果存在 edge-api 目录,请手动检查配置文件"
|
||||
fi
|
||||
|
||||
log_info "✅ 配置文件恢复完成"
|
||||
echo ""
|
||||
}
|
||||
|
||||
# ========== 6. 清理临时文件 ==========
|
||||
cleanup() {
|
||||
log_info "=========================================="
|
||||
log_info "步骤 6: 清理临时文件"
|
||||
log_info "=========================================="
|
||||
|
||||
rm -rf "$TEMP_DIR"
|
||||
log_info "✅ 临时文件已清理"
|
||||
echo ""
|
||||
}
|
||||
|
||||
# ========== 7. 启动服务 ==========
|
||||
start_services() {
|
||||
log_info "=========================================="
|
||||
log_info "步骤 7: 启动服务"
|
||||
log_info "=========================================="
|
||||
|
||||
if [ -f "$TARGET_DIR/bin/edge-admin" ]; then
|
||||
log_info "启动 EdgeAdmin 服务..."
|
||||
"$TARGET_DIR/bin/edge-admin" start
|
||||
sleep 3
|
||||
|
||||
# 检查服务状态
|
||||
if pgrep -f "$TARGET_DIR/bin/edge-admin" > /dev/null; then
|
||||
log_info "✅ 服务启动成功"
|
||||
else
|
||||
log_warn "服务可能未正常启动,请检查日志"
|
||||
log_info "查看日志: tail -f $TARGET_DIR/logs/run.log"
|
||||
fi
|
||||
else
|
||||
log_error "未找到 edge-admin 可执行文件"
|
||||
exit 1
|
||||
fi
|
||||
echo ""
|
||||
}
|
||||
|
||||
# ========== 主函数 ==========
|
||||
main() {
|
||||
echo ""
|
||||
log_info "=========================================="
|
||||
log_info "CloudWAF 部署脚本 - Gname DNS 提供商更新"
|
||||
log_info "=========================================="
|
||||
echo ""
|
||||
|
||||
log_info "部署配置:"
|
||||
log_info " ZIP 文件: $ZIP_FILE"
|
||||
log_info " 目标目录: $TARGET_DIR"
|
||||
log_info " 备份目录: $BACKUP_DIR"
|
||||
echo ""
|
||||
|
||||
# 确认操作
|
||||
read -p "确认开始部署? (y/N): " -n 1 -r
|
||||
echo
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
log_info "部署已取消"
|
||||
exit 0
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# 执行部署步骤
|
||||
check_prerequisites
|
||||
backup_files
|
||||
stop_services
|
||||
extract_package
|
||||
replace_files
|
||||
restore_configs
|
||||
cleanup
|
||||
start_services
|
||||
|
||||
# 完成
|
||||
log_info "=========================================="
|
||||
log_info "✅ 部署完成!"
|
||||
log_info "=========================================="
|
||||
echo ""
|
||||
log_info "备份位置: $BACKUP_DIR"
|
||||
log_info "请检查服务运行状态和日志"
|
||||
echo ""
|
||||
log_info "验证步骤:"
|
||||
log_info "1. 检查服务进程: ps aux | grep \"$TARGET_DIR/bin/edge-admin\""
|
||||
log_info "2. 检查服务日志: tail -f $TARGET_DIR/logs/run.log"
|
||||
log_info "3. 访问管理后台,测试 Gname DNS 提供商功能"
|
||||
echo ""
|
||||
}
|
||||
|
||||
# 执行主函数
|
||||
main
|
||||
|
||||
141
deploy/升级部署手册.md
Normal file
141
deploy/升级部署手册.md
Normal file
@@ -0,0 +1,141 @@
|
||||
# CloudWAF 升级部署手册
|
||||
|
||||
## I. 管理端 (EdgeAdmin) 升级
|
||||
|
||||
本文档介绍如何使用 `deploy.sh` 自动化脚本对 EdgeAdmin 服务进行升级部署。
|
||||
|
||||
### 1. 准备工作
|
||||
|
||||
在开始升级之前,请确保已满足以下条件:
|
||||
|
||||
1. **文件准备**
|
||||
- `deploy.sh`: 部署脚本
|
||||
- `edge-admin-linux-amd64-plus-vX.X.X.zip`: 对应版本的 EdgeAdmin 更新包
|
||||
|
||||
2. **上传文件**
|
||||
将上述两个文件上传到服务器的同一目录下(例如 `/root` 或 `/tmp`)。
|
||||
|
||||
3. **赋予脚本执行权限**
|
||||
在终端中执行命令:
|
||||
```bash
|
||||
chmod +x deploy.sh
|
||||
```
|
||||
|
||||
### 2. 确认安装路径
|
||||
|
||||
脚本默认的安装路径为 `/usr/local/goedge`。如果您的服务安装在其他位置,请按以下方法修改:
|
||||
|
||||
**方法 A:修改脚本(推荐)**
|
||||
使用文本编辑器(如 vi/nano)打开 `deploy.sh`,修改第 10 行:
|
||||
```bash
|
||||
# 将默认路径修改为您的实际安装路径
|
||||
INSTALL_BASE_DIR="/您实际的/安装路径"
|
||||
```
|
||||
|
||||
**方法 B:使用环境变量(临时)**
|
||||
在执行脚本时指定环境变量:
|
||||
```bash
|
||||
export BRAND_INSTALL_PATH="/您实际的/安装路径"
|
||||
```
|
||||
|
||||
### 3. 执行升级
|
||||
|
||||
使用 root 用户或 sudo 执行脚本,参数为更新包的路径。
|
||||
|
||||
#### 3.1 运行命令
|
||||
```bash
|
||||
# 示例:更新当前目录下的 zip 包
|
||||
sudo ./deploy.sh ./edge-admin-linux-amd64-plus-v1.3.8.zip
|
||||
```
|
||||
|
||||
#### 3.2 确认升级
|
||||
脚本运行后会显示升级信息预览,请检查路径是否正确:
|
||||
```text
|
||||
CloudWAF 部署脚本 - Gname DNS 提供商更新
|
||||
==========================================
|
||||
|
||||
部署配置:
|
||||
ZIP 文件: ...
|
||||
目标目录: /usr/local/goedge/edge-admin
|
||||
备份目录: /usr/local/goedge/backup_20240215_120000
|
||||
|
||||
确认开始部署? (y/N):
|
||||
```
|
||||
输入 `y` 并回车确认。
|
||||
|
||||
### 4. 升级过程说明
|
||||
|
||||
脚本会自动执行以下步骤:
|
||||
1. **备份**:将当前的配置 (`configs/`) 和数据备份到 `backup_YYYYMMDD_HHMMSS` 目录。
|
||||
2. **停止服务**:停止正在运行的 `edge-admin` 进程。
|
||||
3. **解压**:解压新的安装包到临时目录。
|
||||
4. **替换**:
|
||||
- 覆盖 `bin/edge-admin` 可执行文件。
|
||||
- 覆盖 `web/` 前端文件(保留 `web/tmp`)。
|
||||
- 覆盖 `edge-api/` 相关文件(如果存在)。
|
||||
5. **恢复配置**:将备份的 `configs/api_admin.yaml` 等配置文件恢复到新目录,**确保原有配置不丢**。
|
||||
6. **启动服务**:重新启动 `edge-admin` 服务。
|
||||
|
||||
### 5. 验证与故障排查
|
||||
|
||||
升级完成后,请进行以下检查:
|
||||
- **检查进程**:`ps aux | grep edge-admin`
|
||||
- **查看日志**:`tail -f /安装路径/edge-admin/logs/run.log`
|
||||
- **登录验证**:使用浏览器访问管理后台,确认升级成功。
|
||||
|
||||
---
|
||||
|
||||
## II. 用户端 (EdgeUser) 升级
|
||||
|
||||
EdgeUser (用户控制台) 尚未提供自动化脚本,请按照以下步骤手动升级。
|
||||
|
||||
### ⚠️ 重要提示:关于自定义样式
|
||||
如果您修改过 `web/` 目录下的 HTML/CSS (例如登录页),请务必在升级前**手动备份这些文件**。
|
||||
升级过程中的 `web` 目录覆盖会导致您的自定义修改丢失。
|
||||
|
||||
### 1. 备份 (Backup)
|
||||
```bash
|
||||
# 假设安装目录在 /opt/edge-user
|
||||
cp -r /opt/edge-user /opt/edge-user-backup-$(date +%Y%m%d)
|
||||
```
|
||||
*关键文件是 `configs/api_user.yaml`,这是连接 API 的凭证,**千万不要丢失**。*
|
||||
|
||||
### 2. 上传与准备 (Prepare)
|
||||
将 `edge-user-linux-amd64-plus-vX.X.X.zip` 上传到服务器并解压到临时目录。
|
||||
```bash
|
||||
unzip edge-user-linux-amd64-plus-v1.3.8.zip -d /tmp/edge-user-update
|
||||
```
|
||||
|
||||
### 3. 停止服务 (Stop)
|
||||
```bash
|
||||
/opt/edge-user/bin/edge-user stop
|
||||
```
|
||||
|
||||
### 4. 替换文件 (Replace)
|
||||
|
||||
执行以下命令替换程序文件:
|
||||
|
||||
```bash
|
||||
# 1. 替换二进制文件
|
||||
cp -f /tmp/edge-user-update/edge-user/bin/edge-user /opt/edge-user/bin/
|
||||
|
||||
# 2. 替换前端资源 (Web)
|
||||
# [警告] 此操作会重置所有页面样式
|
||||
cp -rf /tmp/edge-user-update/edge-user/web /opt/edge-user/
|
||||
|
||||
# 3. 恢复自定义样式 (如果有备份)
|
||||
# cp /备份路径/login/index.html /opt/edge-user/web/views/@default/login/
|
||||
```
|
||||
|
||||
**注意:不要覆盖 `configs` 目录,以保留您的 `api_user.yaml` 配置。**
|
||||
|
||||
### 5. 重启服务 (Start)
|
||||
```bash
|
||||
/opt/edge-user/bin/edge-user start
|
||||
```
|
||||
|
||||
### 6. 验证 (Verify)
|
||||
查看日志确定启动成功,并访问用户平台页面。
|
||||
```bash
|
||||
tail -f /opt/edge-user/logs/run.log
|
||||
```
|
||||
Reference in New Issue
Block a user