#!/bin/bash # ======================================== # 远程服务器配置部署脚本 # 用途: 更新application.yml配置并重启服务 # ======================================== APP_DIR=/www/wwwroot/px.ddn-ai.cloud/jar CONFIG_FILE=$APP_DIR/application.yml echo "========================================" echo "远程服务器配置部署" echo "========================================" # 1. 备份旧配置 if [ -f "$CONFIG_FILE" ]; then echo "备份旧配置..." cp $CONFIG_FILE $CONFIG_FILE.backup.$(date +%Y%m%d_%H%M%S) fi # 2. 创建新配置 echo "创建新配置文件..." cat > $CONFIG_FILE << 'EOF' # ======================================== # 陪读服务后端配置 - 生产环境 # ======================================== server: port: 8089 servlet: context-path: / tomcat: uri-encoding: UTF-8 spring: application: name: peidu-backend profiles: active: prod mvc: pathmatch: matching-strategy: ant_path_matcher servlet: multipart: max-file-size: 10MB max-request-size: 10MB jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8 http: encoding: charset: UTF-8 enabled: true force: true datasource: url: ${SPRING_DATASOURCE_URL} username: ${DB_USERNAME} password: ${DB_PASSWORD} driver-class-name: com.mysql.cj.jdbc.Driver hikari: minimum-idle: 5 maximum-pool-size: 20 connection-timeout: 30000 idle-timeout: 600000 max-lifetime: 1800000 mybatis-plus: mapper-locations: classpath*:/mapper/**/*.xml type-aliases-package: com.peidu.entity configuration: map-underscore-to-camel-case: true cache-enabled: false log-impl: org.apache.ibatis.logging.stdout.StdOutImpl global-config: db-config: id-type: auto logic-delete-field: deleted logic-delete-value: 1 logic-not-delete-value: 0 logging: level: com.peidu: info root: info pattern: console: '%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n' file: name: /www/wwwroot/px.ddn-ai.cloud/jar/logs/app.log # ======================================== # 文件上传配置 (关键配置) # ======================================== file: upload: mode: local local-path: /www/wwwroot/px.ddn-ai.cloud/Image/ url-prefix: https://px.ddn-ai.cloud/uploads/ allowed-types: jpg,jpeg,png,gif,bmp,webp,pdf,doc,docx,xls,xlsx max-size: 10 jwt: secret: ${JWT_SECRET} expiration: 604800 wx: appid: ${WX_APPID} secret: ${WX_SECRET} wechat: pay: appid: ${WX_PAY_APPID} mchid: ${WX_PAY_MCHID} key: ${WX_PAY_KEY} cert-path: classpath:cert/apiclient_cert.p12 notify-url: https://px.ddn-ai.cloud/api/payment/notify/wechat sms: skip-send: false aliyun: access-key-id: ${ALIYUN_SMS_ACCESS_KEY} access-key-secret: ${ALIYUN_SMS_ACCESS_SECRET} sign-name: ${SMS_SIGN_NAME} template-code: ${SMS_TEMPLATE_VERIFY_CODE} region: cn-hangzhou aliyun: oss: endpoint: ${ALIYUN_OSS_ENDPOINT:} access-key-id: ${ALIYUN_OSS_ACCESS_KEY:} access-key-secret: ${ALIYUN_OSS_ACCESS_SECRET:} bucket-name: ${ALIYUN_OSS_BUCKET:} domain: ${ALIYUN_OSS_DOMAIN:} EOF echo "✅ 配置文件创建成功: $CONFIG_FILE" # 3. 确保Image目录存在 IMAGE_DIR=/www/wwwroot/px.ddn-ai.cloud/Image if [ ! -d "$IMAGE_DIR" ]; then echo "创建图片目录..." mkdir -p $IMAGE_DIR chmod 755 $IMAGE_DIR echo "✅ 图片目录创建成功: $IMAGE_DIR" else echo "✅ 图片目录已存在: $IMAGE_DIR" fi # 4. 停止旧服务 echo "" echo "停止旧服务..." if [ -f "$APP_DIR/app.pid" ]; then OLD_PID=$(cat $APP_DIR/app.pid) if ps -p $OLD_PID > /dev/null 2>&1; then kill $OLD_PID echo "等待服务停止..." sleep 3 # 如果还没停止,强制杀死 if ps -p $OLD_PID > /dev/null 2>&1; then kill -9 $OLD_PID echo "强制停止服务" fi echo "✅ 旧服务已停止" else echo "旧服务已经停止" fi else echo "未找到PID文件,尝试查找进程..." PIDS=$(ps aux | grep peidu-backend | grep -v grep | awk '{print $2}') if [ ! -z "$PIDS" ]; then echo "找到进程: $PIDS" kill $PIDS sleep 2 echo "✅ 旧服务已停止" else echo "未找到运行中的服务" fi fi # 5. 启动新服务 echo "" echo "启动新服务..." cd $APP_DIR bash start.sh echo "" echo "========================================" echo "部署完成!" echo "========================================" echo "" echo "查看启动日志:" echo " tail -f $APP_DIR/logs/app.log" echo "" echo "查看配置:" echo " cat $CONFIG_FILE" echo "" echo "测试上传接口:" echo " curl -X POST https://px.ddn-ai.cloud/api/file/upload/direct -F 'file=@test.jpg'" echo ""