fengketrade/deploy_fix.sh
2025-10-27 15:42:14 +08:00

89 lines
2.5 KiB
Bash
Executable File

#!/bin/bash
# 一键部署修复脚本
# 用法: bash deploy_fix.sh
set -e # 遇到错误立即退出
SERVER="root@47.96.77.165"
SERVER_DIR="/www/wwwroot/fengketrade"
FILE_TO_UPLOAD="addons/shopro/library/ccblife/CcbPaymentService.php"
echo "===================================="
echo "建行支付修复 - 一键部署"
echo "===================================="
echo ""
# 检查本地文件是否存在
if [ ! -f "$FILE_TO_UPLOAD" ]; then
echo "❌ 本地文件不存在: $FILE_TO_UPLOAD"
exit 1
fi
echo "【步骤1】检查本地代码..."
echo "-----------------------------------"
if grep -q "urlencode" <(sed -n '279p' "$FILE_TO_UPLOAD"); then
echo "❌ 本地代码第279行仍包含urlencode,请先修复本地代码"
exit 1
else
echo "✅ 本地代码已修复"
fi
echo ""
echo "【步骤2】上传诊断脚本到服务器..."
echo "-----------------------------------"
scp server_diagnose.sh $SERVER:$SERVER_DIR/ || {
echo "❌ 上传诊断脚本失败"
exit 1
}
echo "✅ 诊断脚本上传成功"
echo ""
echo "【步骤3】运行服务器端诊断..."
echo "-----------------------------------"
ssh $SERVER "cd $SERVER_DIR && bash server_diagnose.sh" || {
echo "❌ 服务器诊断失败"
exit 1
}
echo ""
echo "【步骤4】上传修复后的文件..."
echo "-----------------------------------"
echo "正在上传: $FILE_TO_UPLOAD"
scp $FILE_TO_UPLOAD $SERVER:$SERVER_DIR/$FILE_TO_UPLOAD || {
echo "❌ 文件上传失败"
exit 1
}
echo "✅ 文件上传成功"
echo ""
echo "【步骤5】重启PHP-FPM..."
echo "-----------------------------------"
ssh $SERVER "systemctl restart php-fpm || service php-fpm restart" || {
echo "⚠️ PHP-FPM重启可能失败,请手动检查"
}
echo "✅ PHP-FPM重启完成"
echo ""
echo "【步骤6】清除OPcache..."
echo "-----------------------------------"
ssh $SERVER "php -r 'if(function_exists(\"opcache_reset\")){opcache_reset();echo \"OPcache cleared\n\";}'" || {
echo "⚠️ OPcache清除可能失败"
}
echo ""
echo "【步骤7】验证部署..."
echo "-----------------------------------"
echo "检查服务器上的代码..."
ssh $SERVER "sed -n '279p' $SERVER_DIR/$FILE_TO_UPLOAD"
echo ""
echo "===================================="
echo "✅ 部署完成!"
echo "===================================="
echo ""
echo "下一步:"
echo "1. 触发一次支付测试"
echo "2. 监控日志: ssh $SERVER 'tail -f $SERVER_DIR/runtime/log/\$(date +%Y%m)/\$(date +%d).log | grep 最终支付串'"
echo "3. 检查是否还有 %25u (错误) 还是 %u (正确)"
echo ""