refactor(project): Reorganize frontend and backend directories
This commit is contained in:
+56
-12
@@ -1,18 +1,56 @@
|
|||||||
target/
|
# ==========================================
|
||||||
|
# 后端 (Java/Maven/Spring Boot)
|
||||||
|
# ==========================================
|
||||||
|
**/target/
|
||||||
!.mvn/wrapper/maven-wrapper.jar
|
!.mvn/wrapper/maven-wrapper.jar
|
||||||
!**/src/main/**/target/
|
!**/src/main/**/target/
|
||||||
!**/src/test/**/target/
|
!**/src/test/**/target/
|
||||||
local/
|
local/
|
||||||
|
|
||||||
|
# 日志文件
|
||||||
|
*.log
|
||||||
|
**/logs/
|
||||||
|
**/log/
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# 前端 (Node.js/Vue/React)
|
||||||
|
# ==========================================
|
||||||
|
# 依赖目录 (绝对不能提交!)
|
||||||
|
**/node_modules/
|
||||||
|
|
||||||
|
# 打包输出目录
|
||||||
|
**/dist/
|
||||||
|
**/dist-ssr/
|
||||||
|
.output/
|
||||||
|
|
||||||
|
# 环境变量 (保护本地密码和密钥不被泄露)
|
||||||
|
.env.local
|
||||||
|
.env.*.local
|
||||||
|
|
||||||
|
# npm / yarn / pnpm 错误日志
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
pnpm-debug.log*
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# IDE 及编辑器配置
|
||||||
|
# ==========================================
|
||||||
### IntelliJ IDEA ###
|
### IntelliJ IDEA ###
|
||||||
.idea/modules.xml
|
.idea/
|
||||||
.idea/jarRepositories.xml
|
**/.idea/
|
||||||
.idea/compiler.xml
|
|
||||||
.idea/libraries/
|
|
||||||
*.iws
|
*.iws
|
||||||
*.iml
|
*.iml
|
||||||
*.ipr
|
*.ipr
|
||||||
|
|
||||||
|
### VS Code ###
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/settings.json
|
||||||
|
!.vscode/tasks.json
|
||||||
|
!.vscode/launch.json
|
||||||
|
!.vscode/extensions.json
|
||||||
|
*.code-workspace
|
||||||
|
|
||||||
### Eclipse ###
|
### Eclipse ###
|
||||||
.apt_generated
|
.apt_generated
|
||||||
.classpath
|
.classpath
|
||||||
@@ -28,12 +66,18 @@ local/
|
|||||||
/dist/
|
/dist/
|
||||||
/nbdist/
|
/nbdist/
|
||||||
/.nb-gradle/
|
/.nb-gradle/
|
||||||
build/
|
|
||||||
!**/src/main/**/build/
|
|
||||||
!**/src/test/**/build/
|
|
||||||
|
|
||||||
### VS Code ###
|
# ==========================================
|
||||||
.vscode/
|
# 操作系统生成的文件
|
||||||
|
# ==========================================
|
||||||
|
### macOS ###
|
||||||
|
.DS_Store
|
||||||
|
**/.DS_Store
|
||||||
|
.AppleDouble
|
||||||
|
.LSOverride
|
||||||
|
|
||||||
### Mac OS ###
|
### Windows ###
|
||||||
.DS_Store
|
Thumbs.db
|
||||||
|
ehthumbs.db
|
||||||
|
Desktop.ini
|
||||||
|
$RECYCLE.BIN/
|
||||||
BIN
Binary file not shown.
Generated
-10
@@ -1,10 +0,0 @@
|
|||||||
# Default ignored files
|
|
||||||
/shelf/
|
|
||||||
/workspace.xml
|
|
||||||
# Editor-based HTTP Client requests
|
|
||||||
/httpRequests/
|
|
||||||
# Datasource local storage ignored files
|
|
||||||
/dataSources/
|
|
||||||
/dataSources.local.xml
|
|
||||||
# Zeppelin ignored files
|
|
||||||
/ZeppelinRemoteNotebooks/
|
|
||||||
Generated
-18
File diff suppressed because one or more lines are too long
Generated
-16
@@ -1,16 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="CheckStyle-IDEA" serialisationVersion="2">
|
|
||||||
<checkstyleVersion>10.21.3</checkstyleVersion>
|
|
||||||
<scanScope>JavaOnly</scanScope>
|
|
||||||
<copyLibs>true</copyLibs>
|
|
||||||
<option name="thirdPartyClasspath" />
|
|
||||||
<option name="activeLocationIds" />
|
|
||||||
<option name="locations">
|
|
||||||
<list>
|
|
||||||
<ConfigurationLocation id="bundled-sun-checks" type="BUNDLED" scope="All" description="Sun Checks">(bundled)</ConfigurationLocation>
|
|
||||||
<ConfigurationLocation id="bundled-google-checks" type="BUNDLED" scope="All" description="Google Checks">(bundled)</ConfigurationLocation>
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
Generated
-7
@@ -1,7 +0,0 @@
|
|||||||
<component name="ProjectCodeStyleConfiguration">
|
|
||||||
<code_scheme name="Project" version="173">
|
|
||||||
<ScalaCodeStyleSettings>
|
|
||||||
<option name="MULTILINE_STRING_CLOSING_QUOTES_ON_NEW_LINE" value="true" />
|
|
||||||
</ScalaCodeStyleSettings>
|
|
||||||
</code_scheme>
|
|
||||||
</component>
|
|
||||||
Generated
-5
@@ -1,5 +0,0 @@
|
|||||||
<component name="ProjectCodeStyleConfiguration">
|
|
||||||
<state>
|
|
||||||
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
|
|
||||||
</state>
|
|
||||||
</component>
|
|
||||||
Generated
-113
@@ -1,113 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
|
|
||||||
<data-source source="LOCAL" name="video_comment@5.180.253.115" uuid="ab6de11f-1d47-48db-98f6-db1d34209fad">
|
|
||||||
<driver-ref>mysql.8</driver-ref>
|
|
||||||
<synchronize>true</synchronize>
|
|
||||||
<imported>true</imported>
|
|
||||||
<remarks>$PROJECT_DIR$/video-comment/src/main/resources/application.yml</remarks>
|
|
||||||
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
|
|
||||||
<jdbc-url>jdbc:mysql://5.180.253.115:3306/video_comment?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai</jdbc-url>
|
|
||||||
<working-dir>$ProjectFileDir$</working-dir>
|
|
||||||
</data-source>
|
|
||||||
<data-source source="LOCAL" name="2@5.180.253.115" uuid="05bbbc25-7313-4531-985f-fe54063c5d9e">
|
|
||||||
<driver-ref>redis</driver-ref>
|
|
||||||
<synchronize>true</synchronize>
|
|
||||||
<imported>true</imported>
|
|
||||||
<remarks>$PROJECT_DIR$/video-content/src/main/resources/application.yml</remarks>
|
|
||||||
<jdbc-driver>jdbc.RedisDriver</jdbc-driver>
|
|
||||||
<jdbc-url>jdbc:redis://5.180.253.115:6379/2</jdbc-url>
|
|
||||||
<working-dir>$ProjectFileDir$</working-dir>
|
|
||||||
</data-source>
|
|
||||||
<data-source source="LOCAL" name="video_admin@5.180.253.115" uuid="a3d423c8-ea1b-4a0d-9bc3-e118ee4c0ceb">
|
|
||||||
<driver-ref>mysql.8</driver-ref>
|
|
||||||
<synchronize>true</synchronize>
|
|
||||||
<imported>true</imported>
|
|
||||||
<remarks>$PROJECT_DIR$/video-admin/src/main/resources/application.yml</remarks>
|
|
||||||
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
|
|
||||||
<jdbc-url>jdbc:mysql://5.180.253.115:3306/video_admin?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai</jdbc-url>
|
|
||||||
<working-dir>$ProjectFileDir$</working-dir>
|
|
||||||
</data-source>
|
|
||||||
<data-source source="LOCAL" name="video_auth@5.180.253.115" uuid="fe7f3e6f-70a9-4c0c-8779-286de6c5b2d3">
|
|
||||||
<driver-ref>mysql.8</driver-ref>
|
|
||||||
<synchronize>true</synchronize>
|
|
||||||
<imported>true</imported>
|
|
||||||
<remarks>$PROJECT_DIR$/video-auth/src/main/resources/application.yml</remarks>
|
|
||||||
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
|
|
||||||
<jdbc-url>jdbc:mysql://5.180.253.115:3306/video_auth?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai</jdbc-url>
|
|
||||||
<working-dir>$ProjectFileDir$</working-dir>
|
|
||||||
</data-source>
|
|
||||||
<data-source source="LOCAL" name="1@5.180.253.115" uuid="d45b8713-a138-489e-a0d9-0f333db84a6a">
|
|
||||||
<driver-ref>redis</driver-ref>
|
|
||||||
<synchronize>true</synchronize>
|
|
||||||
<imported>true</imported>
|
|
||||||
<remarks>$PROJECT_DIR$/video-user/src/main/resources/application.yml</remarks>
|
|
||||||
<jdbc-driver>jdbc.RedisDriver</jdbc-driver>
|
|
||||||
<jdbc-url>jdbc:redis://5.180.253.115:6379/1</jdbc-url>
|
|
||||||
<working-dir>$ProjectFileDir$</working-dir>
|
|
||||||
</data-source>
|
|
||||||
<data-source source="LOCAL" name="video_recommend@5.180.253.115" uuid="c2525801-37d0-4e55-9cd2-5881e6af6405">
|
|
||||||
<driver-ref>mysql.8</driver-ref>
|
|
||||||
<synchronize>true</synchronize>
|
|
||||||
<imported>true</imported>
|
|
||||||
<remarks>$PROJECT_DIR$/video-recommend/src/main/resources/application.yml</remarks>
|
|
||||||
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
|
|
||||||
<jdbc-url>jdbc:mysql://5.180.253.115:3306/video_recommend?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai</jdbc-url>
|
|
||||||
<working-dir>$ProjectFileDir$</working-dir>
|
|
||||||
</data-source>
|
|
||||||
<data-source source="LOCAL" name="4@5.180.253.115" uuid="c4c77b8e-dbd0-4bdd-a7a1-05c3556fef02">
|
|
||||||
<driver-ref>redis</driver-ref>
|
|
||||||
<synchronize>true</synchronize>
|
|
||||||
<imported>true</imported>
|
|
||||||
<remarks>$PROJECT_DIR$/video-recommend/src/main/resources/application.yml</remarks>
|
|
||||||
<jdbc-driver>jdbc.RedisDriver</jdbc-driver>
|
|
||||||
<jdbc-url>jdbc:redis://5.180.253.115:6379/4</jdbc-url>
|
|
||||||
<working-dir>$ProjectFileDir$</working-dir>
|
|
||||||
</data-source>
|
|
||||||
<data-source source="LOCAL" name="3@5.180.253.115" uuid="8cbca513-d6c6-4c77-bc57-ddd56f9c020a">
|
|
||||||
<driver-ref>redis</driver-ref>
|
|
||||||
<synchronize>true</synchronize>
|
|
||||||
<imported>true</imported>
|
|
||||||
<remarks>$PROJECT_DIR$/video-comment/src/main/resources/application.yml</remarks>
|
|
||||||
<jdbc-driver>jdbc.RedisDriver</jdbc-driver>
|
|
||||||
<jdbc-url>jdbc:redis://5.180.253.115:6379/3</jdbc-url>
|
|
||||||
<working-dir>$ProjectFileDir$</working-dir>
|
|
||||||
</data-source>
|
|
||||||
<data-source source="LOCAL" name="0@5.180.253.115" uuid="c17bbdd4-f2b6-479d-a3a4-5716f10b4012">
|
|
||||||
<driver-ref>redis</driver-ref>
|
|
||||||
<synchronize>true</synchronize>
|
|
||||||
<imported>true</imported>
|
|
||||||
<remarks>$PROJECT_DIR$/video-auth/src/main/resources/application.yml</remarks>
|
|
||||||
<jdbc-driver>jdbc.RedisDriver</jdbc-driver>
|
|
||||||
<jdbc-url>jdbc:redis://5.180.253.115:6379/0</jdbc-url>
|
|
||||||
<working-dir>$ProjectFileDir$</working-dir>
|
|
||||||
</data-source>
|
|
||||||
<data-source source="LOCAL" name="video_content@5.180.253.115" uuid="ecb2d324-1d03-46e4-a3f2-57fdef5070c9">
|
|
||||||
<driver-ref>mysql.8</driver-ref>
|
|
||||||
<synchronize>true</synchronize>
|
|
||||||
<imported>true</imported>
|
|
||||||
<remarks>$PROJECT_DIR$/video-content/src/main/resources/application.yml</remarks>
|
|
||||||
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
|
|
||||||
<jdbc-url>jdbc:mysql://5.180.253.115:3306/video_content?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai</jdbc-url>
|
|
||||||
<working-dir>$ProjectFileDir$</working-dir>
|
|
||||||
</data-source>
|
|
||||||
<data-source source="LOCAL" name="video_user@5.180.253.115" uuid="efd6e1ac-36ec-4873-84f6-c5b93ea834e7">
|
|
||||||
<driver-ref>mysql.8</driver-ref>
|
|
||||||
<synchronize>true</synchronize>
|
|
||||||
<imported>true</imported>
|
|
||||||
<remarks>$PROJECT_DIR$/video-user/src/main/resources/application.yml</remarks>
|
|
||||||
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
|
|
||||||
<jdbc-url>jdbc:mysql://5.180.253.115:3306/video_user?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai</jdbc-url>
|
|
||||||
<working-dir>$ProjectFileDir$</working-dir>
|
|
||||||
</data-source>
|
|
||||||
<data-source source="LOCAL" name="5@5.180.253.115" uuid="2bbd15fc-3050-4cd1-83b9-16febb136ce9">
|
|
||||||
<driver-ref>redis</driver-ref>
|
|
||||||
<synchronize>true</synchronize>
|
|
||||||
<imported>true</imported>
|
|
||||||
<remarks>$PROJECT_DIR$/video-admin/src/main/resources/application.yml</remarks>
|
|
||||||
<jdbc-driver>jdbc.RedisDriver</jdbc-driver>
|
|
||||||
<jdbc-url>jdbc:redis://5.180.253.115:6379/5</jdbc-url>
|
|
||||||
<working-dir>$ProjectFileDir$</working-dir>
|
|
||||||
</data-source>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
Generated
-15
@@ -1,15 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="Encoding">
|
|
||||||
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
|
|
||||||
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
|
|
||||||
<file url="file://$PROJECT_DIR$/video-admin/src/main/java" charset="UTF-8" />
|
|
||||||
<file url="file://$PROJECT_DIR$/video-auth/src/main/java" charset="UTF-8" />
|
|
||||||
<file url="file://$PROJECT_DIR$/video-comment/src/main/java" charset="UTF-8" />
|
|
||||||
<file url="file://$PROJECT_DIR$/video-common/src/main/java" charset="UTF-8" />
|
|
||||||
<file url="file://$PROJECT_DIR$/video-content/src/main/java" charset="UTF-8" />
|
|
||||||
<file url="file://$PROJECT_DIR$/video-gateway/src/main/java" charset="UTF-8" />
|
|
||||||
<file url="file://$PROJECT_DIR$/video-recommend/src/main/java" charset="UTF-8" />
|
|
||||||
<file url="file://$PROJECT_DIR$/video-user/src/main/java" charset="UTF-8" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
-23
@@ -1,23 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="fastRequestCollection">
|
|
||||||
<option name="detail">
|
|
||||||
<CollectionDetail>
|
|
||||||
<option name="childList">
|
|
||||||
<list>
|
|
||||||
<CollectionDetail>
|
|
||||||
<option name="groupId" value="1" />
|
|
||||||
<option name="id" value="1" />
|
|
||||||
<option name="name" value="Default Group" />
|
|
||||||
<option name="type" value="1" />
|
|
||||||
</CollectionDetail>
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
<option name="groupId" value="-1" />
|
|
||||||
<option name="id" value="0" />
|
|
||||||
<option name="name" value="Root" />
|
|
||||||
<option name="type" value="1" />
|
|
||||||
</CollectionDetail>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="fastRequestCurrentProjectLocalConfig">
|
|
||||||
<option name="domain" value="localhost:8082" />
|
|
||||||
<option name="enableEnv" value="yqxs" />
|
|
||||||
<option name="enableProject" value="yqxs" />
|
|
||||||
<option name="initFlag" value="1" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
Generated
-15
@@ -1,15 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="GitToolBoxProjectSettings">
|
|
||||||
<option name="commitMessageIssueKeyValidationOverride">
|
|
||||||
<BoolValueOverride>
|
|
||||||
<option name="enabled" value="true" />
|
|
||||||
</BoolValueOverride>
|
|
||||||
</option>
|
|
||||||
<option name="commitMessageValidationEnabledOverride">
|
|
||||||
<BoolValueOverride>
|
|
||||||
<option name="enabled" value="true" />
|
|
||||||
</BoolValueOverride>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
-5
@@ -1,5 +0,0 @@
|
|||||||
<component name="InspectionProjectProfileManager">
|
|
||||||
<profile version="1.0">
|
|
||||||
<option name="myName" value="Project Default" />
|
|
||||||
</profile>
|
|
||||||
</component>
|
|
||||||
Generated
-6
@@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="MarkdownSettings">
|
|
||||||
<option name="showProblemsInCodeBlocks" value="false" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
Generated
-14
@@ -1,14 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
|
||||||
<component name="MavenProjectsManager">
|
|
||||||
<option name="originalFiles">
|
|
||||||
<list>
|
|
||||||
<option value="$PROJECT_DIR$/pom.xml" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="corretto-17" project-jdk-type="JavaSDK">
|
|
||||||
<output url="file://$PROJECT_DIR$/out" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
Generated
-6
@@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="VcsDirectoryMappings">
|
|
||||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
@@ -0,0 +1,333 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# ============================================================
|
||||||
|
# 高可用集群部署脚本
|
||||||
|
# 用法: ./deploy-ha.sh <node-id> <action>
|
||||||
|
# node-id: 1, 2, 3
|
||||||
|
# action: init, start, stop, restart, status
|
||||||
|
# ============================================================
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# 颜色定义
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
BLUE='\033[0;34m'
|
||||||
|
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"; }
|
||||||
|
log_step() { echo -e "${BLUE}[STEP]${NC} $1"; }
|
||||||
|
|
||||||
|
# 检查参数
|
||||||
|
if [ $# -lt 2 ]; then
|
||||||
|
echo "用法: $0 <node-id> <action>"
|
||||||
|
echo "node-id: 1, 2, 3"
|
||||||
|
echo "action: init, start, stop, restart, status, mysql-master, mysql-slave, redis-master, redis-slave"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
NODE_ID=$1
|
||||||
|
ACTION=$2
|
||||||
|
ENV_FILE="config/.env.node-0${NODE_ID}"
|
||||||
|
|
||||||
|
# 检查环境文件
|
||||||
|
if [ ! -f "$ENV_FILE" ]; then
|
||||||
|
log_error "环境文件不存在: $ENV_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 加载环境变量
|
||||||
|
log_info "加载环境变量: $ENV_FILE"
|
||||||
|
export $(grep -v '^#' $ENV_FILE | xargs)
|
||||||
|
|
||||||
|
log_info "=========================================="
|
||||||
|
log_info "节点ID: $NODE_ID"
|
||||||
|
log_info "主机IP: $HOST_IP"
|
||||||
|
log_info "操作: $ACTION"
|
||||||
|
log_info "=========================================="
|
||||||
|
|
||||||
|
# 初始化函数
|
||||||
|
init_node() {
|
||||||
|
log_step "初始化节点 $NODE_ID..."
|
||||||
|
|
||||||
|
# 创建必要目录
|
||||||
|
log_info "创建数据目录..."
|
||||||
|
mkdir -p data/mysql data/redis data/nacos data/rocketmq data/minio logs/nginx
|
||||||
|
|
||||||
|
# 复制配置文件
|
||||||
|
log_info "配置文件准备..."
|
||||||
|
|
||||||
|
# MySQL配置
|
||||||
|
if [ "$NODE_ID" == "1" ]; then
|
||||||
|
cp config/mysql/my-master.cnf config/mysql/my.cnf
|
||||||
|
log_info "MySQL配置: 主节点"
|
||||||
|
else
|
||||||
|
cp config/mysql/my-slave.cnf config/mysql/my.cnf
|
||||||
|
log_info "MySQL配置: 从节点"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Redis配置
|
||||||
|
if [ "$NODE_ID" == "1" ]; then
|
||||||
|
cp config/redis/redis-master.conf config/redis/redis.conf
|
||||||
|
log_info "Redis配置: 主节点"
|
||||||
|
else
|
||||||
|
cp config/redis/redis-slave.conf config/redis/redis.conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
# RocketMQ Broker配置
|
||||||
|
if [ "$NODE_ID" == "2" ]; then
|
||||||
|
cp config/rocketmq/broker-a.conf config/rocketmq/broker.conf
|
||||||
|
log_info "RocketMQ配置: Broker-A"
|
||||||
|
elif [ "$NODE_ID" == "3" ]; then
|
||||||
|
cp config/rocketmq/broker-b.conf config/rocketmq/broker.conf
|
||||||
|
log_info "RocketMQ配置: Broker-B"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 设置Docker网络
|
||||||
|
log_info "创建Docker网络..."
|
||||||
|
docker network create ha-network 2>/dev/null || true
|
||||||
|
|
||||||
|
log_info "节点初始化完成!"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 启动基础设施
|
||||||
|
start_infrastructure() {
|
||||||
|
log_step "启动基础设施..."
|
||||||
|
|
||||||
|
# 按顺序启动服务
|
||||||
|
log_info "启动MySQL..."
|
||||||
|
docker compose --env-file $ENV_FILE up -d mysql
|
||||||
|
sleep 30
|
||||||
|
|
||||||
|
log_info "等待MySQL就绪..."
|
||||||
|
until docker exec mysql mysqladmin ping -h localhost -uroot -p${MYSQL_ROOT_PASSWORD} --silent 2>/dev/null; do
|
||||||
|
log_warn "等待MySQL启动..."
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
log_info "MySQL已就绪"
|
||||||
|
|
||||||
|
# 初始化数据库 (仅主节点)
|
||||||
|
if [ "$NODE_ID" == "1" ]; then
|
||||||
|
log_info "初始化数据库..."
|
||||||
|
docker exec -i mysql mysql -uroot -p${MYSQL_ROOT_PASSWORD} < sql/init.sql 2>/dev/null || true
|
||||||
|
log_info "数据库初始化完成"
|
||||||
|
fi
|
||||||
|
|
||||||
|
log_info "启动Redis..."
|
||||||
|
docker compose --env-file $ENV_FILE up -d redis redis-sentinel
|
||||||
|
sleep 10
|
||||||
|
|
||||||
|
log_info "启动Nacos..."
|
||||||
|
docker compose --env-file $ENV_FILE up -d nacos
|
||||||
|
sleep 30
|
||||||
|
|
||||||
|
log_info "等待Nacos就绪..."
|
||||||
|
until curl -s http://localhost:8848/nacos/v1/console/health/liveness | grep -q "UP" 2>/dev/null; do
|
||||||
|
log_warn "等待Nacos启动..."
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
log_info "Nacos已就绪"
|
||||||
|
|
||||||
|
log_info "启动RocketMQ NameServer..."
|
||||||
|
docker compose --env-file $ENV_FILE up -d rmqnamesrv
|
||||||
|
sleep 10
|
||||||
|
|
||||||
|
# Broker仅Node-02和Node-03启动
|
||||||
|
if [ "$NODE_ID" != "1" ]; then
|
||||||
|
log_info "启动RocketMQ Broker..."
|
||||||
|
docker compose --env-file $ENV_FILE up -d rmqbroker
|
||||||
|
sleep 10
|
||||||
|
fi
|
||||||
|
|
||||||
|
log_info "启动MinIO..."
|
||||||
|
docker compose --env-file $ENV_FILE up -d minio
|
||||||
|
sleep 10
|
||||||
|
|
||||||
|
log_info "启动Sentinel..."
|
||||||
|
docker compose --env-file $ENV_FILE up -d sentinel
|
||||||
|
|
||||||
|
log_info "基础设施启动完成!"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 启动微服务
|
||||||
|
start_microservices() {
|
||||||
|
log_step "启动微服务..."
|
||||||
|
|
||||||
|
log_info "启动网关服务..."
|
||||||
|
docker compose --env-file $ENV_FILE up -d video-gateway
|
||||||
|
sleep 15
|
||||||
|
|
||||||
|
log_info "启动认证服务..."
|
||||||
|
docker compose --env-file $ENV_FILE up -d video-auth
|
||||||
|
sleep 15
|
||||||
|
|
||||||
|
log_info "启动用户服务..."
|
||||||
|
docker compose --env-file $ENV_FILE up -d video-user
|
||||||
|
sleep 15
|
||||||
|
|
||||||
|
log_info "启动内容服务..."
|
||||||
|
docker compose --env-file $ENV_FILE up -d video-content
|
||||||
|
sleep 15
|
||||||
|
|
||||||
|
log_info "启动评论服务..."
|
||||||
|
docker compose --env-file $ENV_FILE up -d video-comment
|
||||||
|
sleep 15
|
||||||
|
|
||||||
|
log_info "启动推荐服务..."
|
||||||
|
docker compose --env-file $ENV_FILE up -d video-recommend
|
||||||
|
sleep 15
|
||||||
|
|
||||||
|
log_info "启动管理后台服务..."
|
||||||
|
docker compose --env-file $ENV_FILE up -d video-admin
|
||||||
|
|
||||||
|
log_info "微服务启动完成!"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 启动Nginx
|
||||||
|
start_nginx() {
|
||||||
|
log_step "启动Nginx负载均衡..."
|
||||||
|
docker compose --env-file $ENV_FILE up -d nginx
|
||||||
|
log_info "Nginx启动完成!"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 停止所有服务
|
||||||
|
stop_all() {
|
||||||
|
log_step "停止所有服务..."
|
||||||
|
docker compose --env-file $ENV_FILE down
|
||||||
|
log_info "所有服务已停止"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 查看状态
|
||||||
|
check_status() {
|
||||||
|
log_step "服务状态检查..."
|
||||||
|
echo ""
|
||||||
|
docker compose --env-file $ENV_FILE ps
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
log_info "检查服务健康状态..."
|
||||||
|
services=("video-gateway:9000" "video-auth:9001" "video-user:9002" "video-content:9003" "video-comment:9004" "video-recommend:9005" "video-admin:9006")
|
||||||
|
|
||||||
|
for service in "${services[@]}"; do
|
||||||
|
name=$(echo $service | cut -d':' -f1)
|
||||||
|
port=$(echo $service | cut -d':' -f2)
|
||||||
|
if curl -s "http://localhost:$port/actuator/health" | grep -q "UP" 2>/dev/null; then
|
||||||
|
log_info "$name: ${GREEN}健康${NC}"
|
||||||
|
else
|
||||||
|
log_warn "$name: ${YELLOW}未响应${NC}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# 配置MySQL主从复制
|
||||||
|
setup_mysql_replication() {
|
||||||
|
log_step "配置MySQL主从复制..."
|
||||||
|
|
||||||
|
if [ "$NODE_ID" == "1" ]; then
|
||||||
|
log_info "配置主节点..."
|
||||||
|
|
||||||
|
# 创建复制用户
|
||||||
|
docker exec mysql mysql -uroot -p${MYSQL_ROOT_PASSWORD} <<EOF
|
||||||
|
CREATE USER IF NOT EXISTS 'repl'@'%' IDENTIFIED BY 'repl_password_2024';
|
||||||
|
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
SHOW MASTER STATUS;
|
||||||
|
EOF
|
||||||
|
log_info "主节点配置完成"
|
||||||
|
else
|
||||||
|
log_info "配置从节点..."
|
||||||
|
log_warn "请在主节点获取MASTER_LOG_FILE和MASTER_LOG_POS后手动执行:"
|
||||||
|
echo ""
|
||||||
|
echo "CHANGE MASTER TO"
|
||||||
|
echo " MASTER_HOST='192.168.1.101',"
|
||||||
|
echo " MASTER_USER='repl',"
|
||||||
|
echo " MASTER_PASSWORD='repl_password_2024',"
|
||||||
|
echo " MASTER_LOG_FILE='<从主节点获取>',"
|
||||||
|
echo " MASTER_LOG_POS=<从主节点获取>;"
|
||||||
|
echo "START SLAVE;"
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 配置Redis主从复制
|
||||||
|
setup_redis_replication() {
|
||||||
|
log_step "配置Redis主从复制..."
|
||||||
|
|
||||||
|
if [ "$NODE_ID" != "1" ]; then
|
||||||
|
log_info "配置从节点连接主节点..."
|
||||||
|
docker exec redis redis-cli -a ${REDIS_PASSWORD} REPLICAOF 192.168.1.101 6379
|
||||||
|
log_info "Redis从节点配置完成"
|
||||||
|
else
|
||||||
|
log_info "当前为主节点,无需配置"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 初始化MinIO
|
||||||
|
init_minio() {
|
||||||
|
log_step "初始化MinIO..."
|
||||||
|
|
||||||
|
# 等待MinIO就绪
|
||||||
|
until curl -s http://localhost:9000/minio/health/live > /dev/null 2>&1; do
|
||||||
|
log_warn "等待MinIO启动..."
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
|
||||||
|
log_info "创建存储桶..."
|
||||||
|
docker run --rm --network ha-network minio/mc <<EOF
|
||||||
|
mc alias set myminio http://minio:9000 minioadmin minioadmin123
|
||||||
|
mc mb myminio/video-platform --ignore-existing
|
||||||
|
mc anonymous set download myminio/video-platform
|
||||||
|
mc ls myminio
|
||||||
|
EOF
|
||||||
|
|
||||||
|
log_info "MinIO初始化完成"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 主流程
|
||||||
|
case $ACTION in
|
||||||
|
init)
|
||||||
|
init_node
|
||||||
|
;;
|
||||||
|
start)
|
||||||
|
start_infrastructure
|
||||||
|
init_minio
|
||||||
|
start_microservices
|
||||||
|
start_nginx
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
stop_all
|
||||||
|
;;
|
||||||
|
restart)
|
||||||
|
stop_all
|
||||||
|
sleep 10
|
||||||
|
start_infrastructure
|
||||||
|
start_microservices
|
||||||
|
start_nginx
|
||||||
|
;;
|
||||||
|
status)
|
||||||
|
check_status
|
||||||
|
;;
|
||||||
|
mysql-master|mysql-slave)
|
||||||
|
setup_mysql_replication
|
||||||
|
;;
|
||||||
|
redis-master|redis-slave)
|
||||||
|
setup_redis_replication
|
||||||
|
;;
|
||||||
|
infra)
|
||||||
|
start_infrastructure
|
||||||
|
;;
|
||||||
|
services)
|
||||||
|
start_microservices
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
log_error "未知操作: $ACTION"
|
||||||
|
echo "可用操作: init, start, stop, restart, status, mysql-master, mysql-slave, redis-master, redis-slave, infra, services"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
log_info "=========================================="
|
||||||
|
log_info "操作完成: $ACTION"
|
||||||
|
log_info "=========================================="
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user