diff --git a/backend/apps/engine/services/task_distributor.py b/backend/apps/engine/services/task_distributor.py index f2e254c8..ccdc2ae3 100644 --- a/backend/apps/engine/services/task_distributor.py +++ b/backend/apps/engine/services/task_distributor.py @@ -277,6 +277,8 @@ class TaskDistributor: # 挂载路径(所有节点统一使用固定路径) host_results_dir = settings.HOST_RESULTS_DIR # /opt/xingrin/results host_logs_dir = settings.HOST_LOGS_DIR # /opt/xingrin/logs + host_fingerprints_dir = settings.HOST_FINGERPRINTS_DIR # /opt/xingrin/fingerprints + host_wordlists_dir = settings.HOST_WORDLISTS_DIR # /opt/xingrin/wordlists # 环境变量:SERVER_URL + IS_LOCAL,其他配置容器启动时从配置中心获取 # IS_LOCAL 用于 Worker 向配置中心声明身份,决定返回的数据库地址 @@ -296,6 +298,8 @@ class TaskDistributor: volumes = [ f"-v {host_results_dir}:{self.results_mount}", f"-v {host_logs_dir}:{self.logs_mount}", + f"-v {host_fingerprints_dir}:{host_fingerprints_dir}", + f"-v {host_wordlists_dir}:{host_wordlists_dir}", ] # 构建命令行参数 diff --git a/backend/config/settings.py b/backend/config/settings.py index 7e98f92d..793cb34d 100644 --- a/backend/config/settings.py +++ b/backend/config/settings.py @@ -336,9 +336,11 @@ TASK_SUBMIT_INTERVAL = int(os.getenv('TASK_SUBMIT_INTERVAL', '6')) DOCKER_NETWORK_NAME = os.getenv('DOCKER_NETWORK_NAME', 'xingrin_network') # 宿主机挂载源路径(所有节点统一使用固定路径) -# 部署前需创建:mkdir -p /opt/xingrin/{results,logs} +# 部署前需创建:mkdir -p /opt/xingrin/{results,logs,fingerprints,wordlists} HOST_RESULTS_DIR = '/opt/xingrin/results' HOST_LOGS_DIR = '/opt/xingrin/logs' +HOST_FINGERPRINTS_DIR = '/opt/xingrin/fingerprints' +HOST_WORDLISTS_DIR = '/opt/xingrin/wordlists' # ============================================ # Worker 配置中心(任务容器从 /api/workers/config/ 获取) diff --git a/backend/scripts/worker-deploy/install.sh b/backend/scripts/worker-deploy/install.sh index 2cb55755..19e1a13f 100644 --- a/backend/scripts/worker-deploy/install.sh +++ b/backend/scripts/worker-deploy/install.sh @@ -108,7 +108,9 @@ create_dirs() { log_info "创建数据目录..." sudo mkdir -p "${MARKER_DIR}/results" sudo mkdir -p "${MARKER_DIR}/logs" - sudo chmod -R 755 "${MARKER_DIR}" + sudo mkdir -p "${MARKER_DIR}/fingerprints" + sudo mkdir -p "${MARKER_DIR}/wordlists" + sudo chmod -R 777 "${MARKER_DIR}" log_success "数据目录已创建" } diff --git a/docker/docker-compose.dev.yml b/docker/docker-compose.dev.yml index 23235aa3..184f5b70 100644 --- a/docker/docker-compose.dev.yml +++ b/docker/docker-compose.dev.yml @@ -112,6 +112,8 @@ services: volumes: - /opt/xingrin/results:/app/backend/results - /opt/xingrin/logs:/app/backend/logs + - /opt/xingrin/fingerprints:/opt/xingrin/fingerprints + - /opt/xingrin/wordlists:/opt/xingrin/wordlists command: echo "Worker image built for development" volumes: diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index bd61e2da..06142aa3 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -47,9 +47,11 @@ services: redis: condition: service_healthy volumes: - # 统一使用固定路径(部署时需创建:mkdir -p /opt/xingrin/{results,logs}) + # 统一使用固定路径(部署时需创建:mkdir -p /opt/xingrin/{results,logs,fingerprints,wordlists}) - /opt/xingrin/results:/app/backend/results - /opt/xingrin/logs:/app/backend/logs + - /opt/xingrin/fingerprints:/opt/xingrin/fingerprints + - /opt/xingrin/wordlists:/opt/xingrin/wordlists # Docker Socket 挂载:允许 Django 服务器执行本地 docker 命令(用于本地 Worker 任务分发) - /var/run/docker.sock:/var/run/docker.sock healthcheck: diff --git a/install.sh b/install.sh index a84d63be..d8330d2c 100755 --- a/install.sh +++ b/install.sh @@ -335,6 +335,13 @@ if [[ "$OSTYPE" == "linux-gnu"* ]]; then fi step "[3/3] 初始化配置" + +# 创建数据目录 +info "创建数据目录..." +mkdir -p /opt/xingrin/{results,logs,fingerprints,wordlists} +chmod -R 777 /opt/xingrin +success "数据目录已创建: /opt/xingrin/{results,logs,fingerprints,wordlists}" + DOCKER_DIR="$ROOT_DIR/docker" if [ ! -d "$DOCKER_DIR" ]; then error "未找到 docker 目录,请确认项目结构。"