diff --git a/.gitignore b/.gitignore index d077024..55067e4 100644 --- a/.gitignore +++ b/.gitignore @@ -49,8 +49,8 @@ application-prod.yml bootstrap.yml # 实际配置文件(敏感信息,仅模板提交) -src/main/resources/env.properties -src/main/resources/service.properties +scripts/env.properties +worklog-api/src/main/resources/service.properties # 数据库备份 *.sql.backup @@ -59,6 +59,8 @@ db_backup/ # ==================== Assembly 打包输出 ==================== deploy/worklog-api/ deploy/worklog-api.tar.gz +deploy/worklog-web/ +deploy/worklog-mobile/ # ==================== 上传文件 ==================== uploads/ diff --git a/deploy/scripts/backup.sh b/scripts/backup.sh similarity index 100% rename from deploy/scripts/backup.sh rename to scripts/backup.sh diff --git a/scripts/build-all.sh b/scripts/build-all.sh new file mode 100755 index 0000000..b2fa07d --- /dev/null +++ b/scripts/build-all.sh @@ -0,0 +1,81 @@ +#!/bin/bash +# ==================================================== +# 工作日志服务平台 - 全量打包脚本 +# ==================================================== + +set -e + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" +DEPLOY_DIR="${PROJECT_ROOT}/deploy" + +# 颜色定义 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +echo -e "${BLUE}=========================================${NC}" +echo -e "${BLUE}工作日志服务平台 - 全量打包${NC}" +echo -e "${BLUE}=========================================${NC}" + +# 清理 deploy 目录下的旧构建产物 +echo -e "${YELLOW}清理旧构建产物...${NC}" +rm -rf ${DEPLOY_DIR}/worklog-api +rm -rf ${DEPLOY_DIR}/worklog-api.tar.gz +rm -rf ${DEPLOY_DIR}/worklog-web +rm -rf ${DEPLOY_DIR}/worklog-mobile + +# 1. 打包后端 API +echo "" +echo -e "${GREEN}[1/3] 打包后端 API...${NC}" +cd "${PROJECT_ROOT}/worklog-api" +mvn clean package -DskipTests -q + +# 检查后端打包结果 +if [ ! -f "${DEPLOY_DIR}/worklog-api.tar.gz" ]; then + echo -e "${RED}ERROR: 后端打包失败${NC}" + exit 1 +fi +API_SIZE=$(du -sh ${DEPLOY_DIR}/worklog-api.tar.gz | cut -f1) +echo -e "${GREEN}后端打包完成: ${API_SIZE}${NC}" + +# 2. 打包管理后台前端 +echo "" +echo -e "${GREEN}[2/3] 打包管理后台前端...${NC}" +"${SCRIPT_DIR}/build-web.sh" + +# 部署到 deploy 目录 +mkdir -p ${DEPLOY_DIR}/worklog-web +cp -r ${PROJECT_ROOT}/worklog-web/dist/* ${DEPLOY_DIR}/worklog-web/ +WEB_SIZE=$(du -sh ${DEPLOY_DIR}/worklog-web | cut -f1) +echo -e "${GREEN}管理后台打包完成: ${WEB_SIZE}${NC}" + +# 3. 打包移动端 H5 +echo "" +echo -e "${GREEN}[3/3] 打包移动端H5前端...${NC}" +"${SCRIPT_DIR}/build-mobile.sh" + +# 部署到 deploy 目录 +mkdir -p ${DEPLOY_DIR}/worklog-mobile +cp -r ${PROJECT_ROOT}/worklog-mobile/dist/* ${DEPLOY_DIR}/worklog-mobile/ +MOBILE_SIZE=$(du -sh ${DEPLOY_DIR}/worklog-mobile | cut -f1) +echo -e "${GREEN}移动端H5打包完成: ${MOBILE_SIZE}${NC}" + +# 输出汇总 +echo "" +echo -e "${GREEN}=========================================${NC}" +echo -e "${GREEN}全量打包完成!${NC}" +echo -e "${GREEN}=========================================${NC}" +echo -e "输出目录: ${DEPLOY_DIR}/" +echo "" +echo -e "产物列表:" +echo -e " - worklog-api.tar.gz (${API_SIZE})" +echo -e " - worklog-web/ (${WEB_SIZE})" +echo -e " - worklog-mobile/ (${MOBILE_SIZE})" +echo "" +echo -e "部署命令示例:" +echo -e " scp ${DEPLOY_DIR}/worklog-api.tar.gz user@server:/opt/worklog/" +echo -e " scp -r ${DEPLOY_DIR}/worklog-web user@server:/opt/worklog/" +echo -e " scp -r ${DEPLOY_DIR}/worklog-mobile user@server:/opt/worklog/" diff --git a/scripts/build-mobile.sh b/scripts/build-mobile.sh new file mode 100755 index 0000000..5cc8aac --- /dev/null +++ b/scripts/build-mobile.sh @@ -0,0 +1,63 @@ +#!/bin/bash +# ==================================================== +# 工作日志服务平台 - 移动端H5前端打包脚本 +# ==================================================== + +set -e + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" +MOBILE_DIR="${PROJECT_ROOT}/worklog-mobile" +DEPLOY_DIR="${PROJECT_ROOT}/deploy" + +# 颜色定义 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +echo -e "${GREEN}=========================================${NC}" +echo -e "${GREEN}打包移动端H5前端 (worklog-mobile)${NC}" +echo -e "${GREEN}=========================================${NC}" + +# 检查项目目录 +if [ ! -d "${MOBILE_DIR}" ]; then + echo -e "${RED}ERROR: 找不到项目目录 ${MOBILE_DIR}${NC}" + exit 1 +fi + +cd "${MOBILE_DIR}" + +# 检查 node_modules +if [ ! -d "node_modules" ]; then + echo -e "${YELLOW}安装依赖...${NC}" + npm install +fi + +# 清理旧的构建产物 +echo -e "${YELLOW}清理旧的构建产物...${NC}" +rm -rf dist + +# 构建 +echo -e "${YELLOW}构建生产版本...${NC}" +npm run build + +# 检查构建结果 +if [ ! -d "dist" ]; then + echo -e "${RED}ERROR: 构建失败,找不到 dist 目录${NC}" + exit 1 +fi + +# 计算 dist 目录大小 +DIST_SIZE=$(du -sh dist | cut -f1) +DIST_FILES=$(find dist -type f | wc -l) + +echo -e "${GREEN}=========================================${NC}" +echo -e "${GREEN}构建完成!${NC}" +echo -e "${GREEN}=========================================${NC}" +echo -e "输出目录: ${MOBILE_DIR}/dist" +echo -e "总大小: ${DIST_SIZE}" +echo -e "文件数量: ${DIST_FILES}" +echo "" +echo -e "部署目录: ${DEPLOY_DIR}/worklog-mobile/" +echo -e "部署命令: cp -r dist/* ${DEPLOY_DIR}/worklog-mobile/" diff --git a/scripts/build-web.sh b/scripts/build-web.sh new file mode 100755 index 0000000..37ebac5 --- /dev/null +++ b/scripts/build-web.sh @@ -0,0 +1,63 @@ +#!/bin/bash +# ==================================================== +# 工作日志服务平台 - 管理后台前端打包脚本 +# ==================================================== + +set -e + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" +WEB_DIR="${PROJECT_ROOT}/worklog-web" +DEPLOY_DIR="${PROJECT_ROOT}/deploy" + +# 颜色定义 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +echo -e "${GREEN}=========================================${NC}" +echo -e "${GREEN}打包管理后台前端 (worklog-web)${NC}" +echo -e "${GREEN}=========================================${NC}" + +# 检查项目目录 +if [ ! -d "${WEB_DIR}" ]; then + echo -e "${RED}ERROR: 找不到项目目录 ${WEB_DIR}${NC}" + exit 1 +fi + +cd "${WEB_DIR}" + +# 检查 node_modules +if [ ! -d "node_modules" ]; then + echo -e "${YELLOW}安装依赖...${NC}" + npm install +fi + +# 清理旧的构建产物 +echo -e "${YELLOW}清理旧的构建产物...${NC}" +rm -rf dist + +# 构建 +echo -e "${YELLOW}构建生产版本...${NC}" +npm run build + +# 检查构建结果 +if [ ! -d "dist" ]; then + echo -e "${RED}ERROR: 构建失败,找不到 dist 目录${NC}" + exit 1 +fi + +# 计算 dist 目录大小 +DIST_SIZE=$(du -sh dist | cut -f1) +DIST_FILES=$(find dist -type f | wc -l) + +echo -e "${GREEN}=========================================${NC}" +echo -e "${GREEN}构建完成!${NC}" +echo -e "${GREEN}=========================================${NC}" +echo -e "输出目录: ${WEB_DIR}/dist" +echo -e "总大小: ${DIST_SIZE}" +echo -e "文件数量: ${DIST_FILES}" +echo "" +echo -e "部署目录: ${DEPLOY_DIR}/worklog-web/" +echo -e "部署命令: cp -r dist/* ${DEPLOY_DIR}/worklog-web/" diff --git a/worklog-api/src/main/resources/env.properties.example b/scripts/env.properties.example similarity index 100% rename from worklog-api/src/main/resources/env.properties.example rename to scripts/env.properties.example diff --git a/deploy/scripts/init_db.sh b/scripts/init_db.sh similarity index 100% rename from deploy/scripts/init_db.sh rename to scripts/init_db.sh diff --git a/deploy/scripts/restart.sh b/scripts/restart.sh similarity index 100% rename from deploy/scripts/restart.sh rename to scripts/restart.sh diff --git a/deploy/scripts/start.sh b/scripts/start.sh similarity index 96% rename from deploy/scripts/start.sh rename to scripts/start.sh index 76065c5..2ac49a6 100755 --- a/deploy/scripts/start.sh +++ b/scripts/start.sh @@ -8,7 +8,6 @@ APP_NAME="worklog-api" APP_JAR="worklog-api-1.0.0.jar" APP_HOME="/opt/worklog/${APP_NAME}" APP_JAR_PATH="${APP_HOME}/lib/${APP_JAR}" -MAIN_CLASS="com.wjbl.worklog.WorklogApplication" # Classpath 配置(lib 目录下所有 JAR + conf 目录) CLASSPATH="${APP_HOME}/lib/*:${APP_HOME}/conf" @@ -41,6 +40,9 @@ load_properties "${APP_HOME}/conf/env.properties" # 2. 加载服务个性化配置(覆盖同名参数) load_properties "${APP_HOME}/conf/service.properties" +# 主启动类(从 service.properties 读取,默认值) +MAIN_CLASS=${MAIN_CLASS:-com.wjbl.worklog.WorklogApplication} + # JVM 配置(从环境变量读取,如果未设置则使用默认值) JVM_XMS=${JVM_XMS:-512m} JVM_XMX=${JVM_XMX:-1024m} diff --git a/deploy/scripts/status.sh b/scripts/status.sh similarity index 100% rename from deploy/scripts/status.sh rename to scripts/status.sh diff --git a/deploy/scripts/stop.sh b/scripts/stop.sh similarity index 100% rename from deploy/scripts/stop.sh rename to scripts/stop.sh diff --git a/worklog-api/src/main/assembly/assembly.xml b/worklog-api/src/main/assembly/assembly.xml index 85db144..1b34dfe 100644 --- a/worklog-api/src/main/assembly/assembly.xml +++ b/worklog-api/src/main/assembly/assembly.xml @@ -31,7 +31,7 @@ - ${project.basedir}/../deploy/scripts + ${project.basedir}/../scripts bin start.sh @@ -43,17 +43,24 @@ unix - + + + ${project.basedir}/../scripts + conf + + env.properties + + + + ${project.basedir}/src/main/resources conf application.yml - application.yml.example bootstrap.yml logback-spring.xml - env.properties.example - service.properties.example + service.properties diff --git a/worklog-api/src/main/resources/env.properties b/worklog-api/src/main/resources/env.properties deleted file mode 100644 index a1cee8a..0000000 --- a/worklog-api/src/main/resources/env.properties +++ /dev/null @@ -1,86 +0,0 @@ -# ==================================================== -# 工作日志服务平台 - 统一环境配置 -# 说明:所有服务共用的环境配置,包括数据库、缓存、注册中心等 -# ==================================================== - -# ==================== 数据库配置 ==================== -DB_HOST=localhost -DB_PORT=3306 -DB_NAME=worklog -DB_USERNAME=worklog -DB_PASSWORD=Wlog@123 -DB_URL=jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME}?useUnicode=true&characterEncoding=utf8mb4&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true - -# 连接池配置 -DB_POOL_MIN_IDLE=5 -DB_POOL_MAX_SIZE=20 -DB_POOL_CONNECTION_TIMEOUT=30000 -DB_POOL_IDLE_TIMEOUT=600000 -DB_POOL_MAX_LIFETIME=1800000 - -# ==================== Redis 配置 ==================== -REDIS_HOST=localhost -REDIS_PORT=6379 -REDIS_PASSWORD=zjf@123456 -REDIS_DATABASE=0 -REDIS_TIMEOUT=5000 - -# Redis 连接池配置 -REDIS_POOL_MAX_ACTIVE=8 -REDIS_POOL_MAX_WAIT=-1 -REDIS_POOL_MAX_IDLE=8 -REDIS_POOL_MIN_IDLE=0 - -# ==================== Nacos 配置 ==================== -NACOS_SERVER_ADDR=localhost:8848 -NACOS_NAMESPACE=worklog-dev -NACOS_GROUP=DEFAULT_GROUP -NACOS_USERNAME=nacos -NACOS_PASSWORD=nacos - -# ==================== 文件上传配置 ==================== -FILE_UPLOAD_MAX_SIZE=50MB -FILE_UPLOAD_MAX_REQUEST_SIZE=100MB -FILE_STORAGE_PATH=./uploads - -# ==================== 腾讯云 COS 配置 ==================== -COS_ENABLED=false -COS_APP_ID=1308258046 -COS_SECRET_ID=AKIDukKfkY5LK2SbU6QTM7csugCSSDjzyiDS -COS_SECRET_KEY=0lHXYIn20jDRP7ZlhNnyub3GEwObZHjw -COS_BUCKET_NAME=test-1308258046 -COS_BUCKET_HOST=https://test-1308258046.cos.ap-beijing.myqcloud.com -COS_REGION=ap-beijing - -# ==================== 日志配置 ==================== -# 日志路径(扁平目录结构,无子目录) -LOG_PATH=./logs - -# 日志级别 -LOG_LEVEL_ROOT=INFO -LOG_LEVEL_APP=DEBUG - -# 日志文件配置 -LOG_FILE_MAX_SIZE=100MB -LOG_FILE_MAX_HISTORY=30 - -# ==================== JVM 配置 ==================== -JVM_XMS=512m -JVM_XMX=1024m -JVM_METASPACE_SIZE=128m -JVM_MAX_METASPACE_SIZE=256m - -# GC 配置 -JVM_GC_TYPE=G1GC -JVM_MAX_GC_PAUSE_MILLIS=200 - -# ==================== 业务配置 ==================== -# Token 配置 -TOKEN_EXPIRE_TIME=86400 -TOKEN_PREFIX=auth:token: - -# 日志内容限制 -WORKLOG_MAX_CONTENT_LENGTH=2000 - -# 允许的上传文件扩展名 -UPLOAD_ALLOWED_EXTENSIONS=jpg,jpeg,png,gif,pdf,doc,docx,xls,xlsx diff --git a/worklog-api/src/main/resources/service.properties b/worklog-api/src/main/resources/service.properties index a811892..3b62bcf 100644 --- a/worklog-api/src/main/resources/service.properties +++ b/worklog-api/src/main/resources/service.properties @@ -13,6 +13,10 @@ INSTANCE_NAME=${APP_NAME} # 租户标识(多租户场景使用,用于路由,单租户留空) TENANT_ID= +# ==================== 服务启动配置 ==================== +# 主启动类(瘦JAR模式必须配置) +MAIN_CLASS=com.wjbl.worklog.WorklogApplication + # ==================== 服务端口配置 ==================== # 服务端口(可覆盖 application.yml 中配置) SERVER_PORT=8080