255 lines
6.9 KiB
Batchfile
255 lines
6.9 KiB
Batchfile
@echo off
|
|
REM ============================================
|
|
REM FLNXI素材库 - Windows 全自动安装脚本
|
|
REM ============================================
|
|
|
|
echo ========================================
|
|
echo FLNXI素材库 - 全自动安装
|
|
echo ========================================
|
|
echo.
|
|
echo 此脚本将检查并安装:
|
|
echo - Docker Desktop
|
|
echo - FLNXI素材库系统
|
|
echo.
|
|
|
|
REM 检查管理员权限
|
|
net session >nul 2>&1
|
|
if %errorlevel% neq 0 (
|
|
echo 警告: 建议以管理员身份运行此脚本
|
|
echo 右键点击脚本 - 选择"以管理员身份运行"
|
|
echo.
|
|
pause
|
|
)
|
|
|
|
REM 检查 Docker
|
|
echo [1/3] 检查 Docker Desktop...
|
|
docker --version >nul 2>&1
|
|
if errorlevel 1 (
|
|
echo.
|
|
echo Docker Desktop 未安装!
|
|
echo.
|
|
echo 请按以下步骤安装:
|
|
echo 1. 访问: https://www.docker.com/products/docker-desktop/
|
|
echo 2. 下载 Docker Desktop for Windows
|
|
echo 3. 安装并启动 Docker Desktop
|
|
echo 4. 安装完成后重新运行此脚本
|
|
echo.
|
|
echo 是否现在打开下载页面?
|
|
set /p OPEN="输入 Y 打开浏览器: "
|
|
if /i "%OPEN%"=="y" start https://www.docker.com/products/docker-desktop/
|
|
pause
|
|
exit /b 1
|
|
) else (
|
|
echo 成功 - Docker 已安装
|
|
docker --version
|
|
)
|
|
|
|
REM 检查 Docker 是否运行
|
|
echo.
|
|
echo 检查 Docker 是否运行...
|
|
docker ps >nul 2>&1
|
|
if errorlevel 1 (
|
|
echo.
|
|
echo Docker Desktop 未运行!
|
|
echo 请启动 Docker Desktop 后重新运行此脚本
|
|
echo.
|
|
pause
|
|
exit /b 1
|
|
) else (
|
|
echo 成功 - Docker 运行正常
|
|
)
|
|
|
|
REM 检测 docker-compose 命令
|
|
docker compose version >nul 2>&1
|
|
if errorlevel 1 (
|
|
docker-compose --version >nul 2>&1
|
|
if errorlevel 1 (
|
|
echo.
|
|
echo 错误: Docker Compose 未安装
|
|
echo 请更新 Docker Desktop 到最新版本
|
|
pause
|
|
exit /b 1
|
|
) else (
|
|
set DOCKER_COMPOSE=docker-compose
|
|
)
|
|
) else (
|
|
set DOCKER_COMPOSE=docker compose
|
|
)
|
|
|
|
echo 成功 - 使用命令: %DOCKER_COMPOSE%
|
|
|
|
REM 配置环境
|
|
echo.
|
|
echo [2/3] 配置环境...
|
|
|
|
if not exist .env (
|
|
echo.
|
|
echo 创建配置文件...
|
|
|
|
REM 获取本机IP
|
|
for /f "tokens=2 delims=:" %%a in ('ipconfig ^| findstr /c:"IPv4"') do (
|
|
set IP=%%a
|
|
goto :ip_found
|
|
)
|
|
:ip_found
|
|
set SERVER_IP=%IP: =%
|
|
|
|
if "%SERVER_IP%"=="" set SERVER_IP=localhost
|
|
|
|
echo 检测到IP地址: %SERVER_IP%
|
|
set /p CUSTOM_IP="是否使用此IP? (直接回车确认 / 输入新IP): "
|
|
if not "%CUSTOM_IP%"=="" set SERVER_IP=%CUSTOM_IP%
|
|
|
|
REM 生成随机密码(简化版)
|
|
set POSTGRES_PASSWORD=youyidian_%RANDOM%%RANDOM%
|
|
set MINIO_PASSWORD=minio_%RANDOM%%RANDOM%
|
|
set AUTH_SECRET=auth_%RANDOM%%RANDOM%%RANDOM%
|
|
|
|
REM 创建 .env 文件
|
|
(
|
|
echo # FLNXI素材库 - 环境配置
|
|
echo # 生成时间: %date% %time%
|
|
echo.
|
|
echo # 服务器配置
|
|
echo SERVER_IP=%SERVER_IP%
|
|
echo APP_PORT=4320
|
|
echo.
|
|
echo # 数据库配置
|
|
echo POSTGRES_USER=postgres
|
|
echo POSTGRES_PASSWORD=%POSTGRES_PASSWORD%
|
|
echo POSTGRES_DB=flnxi
|
|
echo.
|
|
echo # MinIO 配置
|
|
echo MINIO_ROOT_USER=minioadmin
|
|
echo MINIO_ROOT_PASSWORD=%MINIO_PASSWORD%
|
|
echo MINIO_API_PORT=9000
|
|
echo MINIO_CONSOLE_PORT=9001
|
|
echo S3_BUCKET=youyidian3d
|
|
echo.
|
|
echo # 应用安全配置
|
|
echo NEXTAUTH_SECRET=%AUTH_SECRET%
|
|
) > .env
|
|
|
|
echo 成功 - 配置文件已创建
|
|
|
|
REM 保存系统信息
|
|
(
|
|
echo ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
echo FLNXI素材库 - 系统信息
|
|
echo ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
echo.
|
|
echo 安装时间: %date% %time%
|
|
echo 服务器IP: %SERVER_IP%
|
|
echo.
|
|
echo 访问地址:
|
|
echo 应用首页: http://%SERVER_IP%:4320
|
|
echo MinIO控制台: http://%SERVER_IP%:9001
|
|
echo.
|
|
echo MinIO 管理员账号:
|
|
echo 用户名: minioadmin
|
|
echo 密码: %MINIO_PASSWORD%
|
|
echo.
|
|
echo 数据库信息:
|
|
echo 数据库名: flnxi
|
|
echo 用户名: postgres
|
|
echo 密码: %POSTGRES_PASSWORD%
|
|
echo.
|
|
echo ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
echo 重要提示:请妥善保管此文件!
|
|
echo ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
) > 系统信息.txt
|
|
|
|
echo.
|
|
echo 重要信息已保存到: 系统信息.txt
|
|
echo 请妥善保管此文件!
|
|
) else (
|
|
echo 成功 - 检测到已存在的配置文件
|
|
)
|
|
|
|
REM 创建必要目录
|
|
if not exist uploads mkdir uploads
|
|
echo 成功 - 数据目录已创建
|
|
|
|
REM 安装应用
|
|
echo.
|
|
echo [3/3] 安装应用...
|
|
|
|
echo 停止旧容器...
|
|
%DOCKER_COMPOSE% down 2>nul
|
|
|
|
echo.
|
|
echo 拉取 Docker 镜像...
|
|
echo 这可能需要几分钟,请耐心等待...
|
|
%DOCKER_COMPOSE% pull
|
|
if errorlevel 1 (
|
|
echo.
|
|
echo 错误: 拉取镜像失败
|
|
echo 请检查网络连接或镜像仓库配置
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
echo.
|
|
echo 启动服务...
|
|
%DOCKER_COMPOSE% up -d
|
|
if errorlevel 1 (
|
|
echo.
|
|
echo 错误: 启动服务失败
|
|
echo 查看详细日志: %DOCKER_COMPOSE% logs
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
echo.
|
|
echo 等待服务启动...
|
|
timeout /t 15 /nobreak >nul
|
|
|
|
echo.
|
|
echo 初始化数据库...
|
|
%DOCKER_COMPOSE% exec -T app npx prisma db push --accept-data-loss 2>nul
|
|
if errorlevel 1 (
|
|
echo.
|
|
echo 数据库初始化可能需要更多时间...
|
|
echo 请稍后手动执行: %DOCKER_COMPOSE% exec app npx prisma db push
|
|
) else (
|
|
echo 成功 - 数据库初始化完成
|
|
)
|
|
|
|
REM 读取配置显示结果
|
|
for /f "tokens=2 delims==" %%a in ('findstr "SERVER_IP" .env') do set SERVER_IP=%%a
|
|
for /f "tokens=2 delims==" %%a in ('findstr "APP_PORT" .env') do set APP_PORT=%%a
|
|
for /f "tokens=2 delims==" %%a in ('findstr "MINIO_CONSOLE_PORT" .env') do set MINIO_PORT=%%a
|
|
|
|
echo.
|
|
echo ========================================
|
|
echo 安装完成!
|
|
echo ========================================
|
|
echo.
|
|
echo 访问地址:
|
|
echo 应用首页: http://%SERVER_IP%:%APP_PORT%
|
|
echo MinIO控制台: http://%SERVER_IP%:%MINIO_PORT%
|
|
echo.
|
|
echo MinIO 账号信息请查看: 系统信息.txt
|
|
echo.
|
|
echo 首次使用:
|
|
echo 1. 访问应用首页
|
|
echo 2. 注册账号
|
|
echo 3. 设置管理员权限(详见文档)
|
|
echo.
|
|
echo 常用命令:
|
|
echo 查看服务: %DOCKER_COMPOSE% ps
|
|
echo 查看日志: %DOCKER_COMPOSE% logs -f
|
|
echo 重启服务: %DOCKER_COMPOSE% restart
|
|
echo 停止服务: %DOCKER_COMPOSE% down
|
|
echo.
|
|
echo ========================================
|
|
echo.
|
|
|
|
REM 询问是否打开浏览器
|
|
set /p OPEN_BROWSER="是否现在打开应用? (Y/n): "
|
|
if /i not "%OPEN_BROWSER%"=="n" start http://%SERVER_IP%:%APP_PORT%
|
|
|
|
pause
|
|
|
|
|