peixue-dev/peidu/Archive/一次性文件/[一次性]远程服务器配置部署脚本-2026-01-26.sh

205 lines
4.8 KiB
Bash
Raw Normal View History

#!/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 ""