lt 1 месяц назад
Родитель
Сommit
a31957b35f

+ 80 - 60
开服流程/open_server.sh

@@ -12,7 +12,7 @@ JENKINS_PATH="/data/shell/jenkins"
 
 
 # 参数解析
 # 参数解析
 usage() {
 usage() {
-    echo "Usage: $0 -x <server_id> -p <port> -r <redis_id>"
+    echo "Usage: $0 -s <server_id> -p <port> -r <redis_id>"
     exit 1
     exit 1
 }
 }
 
 
@@ -45,21 +45,33 @@ done
 # 颜色输出
 # 颜色输出
 RED='\033[0;31m'
 RED='\033[0;31m'
 GREEN='\033[0;32m'
 GREEN='\033[0;32m'
+YELLOW='\033[0;33m'
 NC='\033[0m' # No Color
 NC='\033[0m' # No Color
 
 
 # 1. MySQL数据库操作
 # 1. MySQL数据库操作
 echo -e "${GREEN}Step 1: MySQL Database Setup...${NC}"
 echo -e "${GREEN}Step 1: MySQL Database Setup...${NC}"
-DB_NAME="ro${SERVER_ID}"
+DB_NAME="ro${REDIS_ID}"
+
+# 创建数据库(如果不存在)
 mysql -u${MYSQL_ROOT} -p${MYSQL_PWD} -e "CREATE DATABASE IF NOT EXISTS ${DB_NAME};"
 mysql -u${MYSQL_ROOT} -p${MYSQL_PWD} -e "CREATE DATABASE IF NOT EXISTS ${DB_NAME};"
 if [ $? -ne 0 ]; then
 if [ $? -ne 0 ]; then
     echo -e "${RED}Error: Failed to create database${NC}"
     echo -e "${RED}Error: Failed to create database${NC}"
     exit 1
     exit 1
 fi
 fi
 
 
-mysql -u${MYSQL_ROOT} -p${MYSQL_PWD} ${DB_NAME} < ${SQL_FILE}
-if [ $? -ne 0 ]; then
-    echo -e "${RED}Error: Failed to import SQL file${NC}"
-    exit 1
+# 检查数据库中是否有表
+TABLE_COUNT=$(mysql -u${MYSQL_ROOT} -p${MYSQL_PWD} -N -e "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema='${DB_NAME}';")
+
+if [ "$TABLE_COUNT" -gt 0 ]; then
+    echo -e "${YELLOW}Database ${DB_NAME} already has tables, skipping SQL import...${NC}"
+else
+    echo -e "${GREEN}Importing SQL file to ${DB_NAME}...${NC}"
+    mysql -u${MYSQL_ROOT} -p${MYSQL_PWD} ${DB_NAME} < ${SQL_FILE}
+    if [ $? -ne 0 ]; then
+        echo -e "${RED}Error: Failed to import SQL file${NC}"
+        exit 1
+    fi
+    echo -e "${GREEN}SQL import completed successfully${NC}"
 fi
 fi
 
 
 # 2. 创建服务器目录
 # 2. 创建服务器目录
@@ -99,31 +111,28 @@ HTTP_PORT=$(awk -F': ' '/httpaddr:/ {print $2}' ${SERVER_DIR}/gmweb_config.yaml
 #sed -i "s/^loglevel:.*/loglevel: debug/" ${GAME_CONFIG}
 #sed -i "s/^loglevel:.*/loglevel: debug/" ${GAME_CONFIG}
 #sed -i "s/^authmode:.*/authmode: 2/" ${GAME_CONFIG}
 #sed -i "s/^authmode:.*/authmode: 2/" ${GAME_CONFIG}
 #sed -i "/^paycallback:/c \    paycallback: $TARGET_VALUE" "$GAME_CONFIG"
 #sed -i "/^paycallback:/c \    paycallback: $TARGET_VALUE" "$GAME_CONFIG"
-sed -i "s/152.32.220.85:8003/${PUBLIC_IP}:${HTTP_PORT}/g" "$GAME_CONFIG"
-sed -i "s/hwQucik/gnQucik/g" "$GAME_CONFIG"
+#sed -i "s/152.32.220.85:8003/${PUBLIC_IP}:${HTTP_PORT}/g" "$GAME_CONFIG"
+#sed -i "s/hwQucik/gnQucik/g" "$GAME_CONFIG"
 
 
 # 5. 启动服务器
 # 5. 启动服务器
 echo -e "${GREEN}Step 5: Starting server...${NC}"
 echo -e "${GREEN}Step 5: Starting server...${NC}"
 cd ${SERVER_DIR} || exit
 cd ${SERVER_DIR} || exit
-./start.sh
+#./start.sh
 sleep 5
 sleep 5
 
 
 # 检查PID文件
 # 检查PID文件
-PID_COUNT=$(ls ${SERVER_DIR}/*.pid 2>/dev/null | wc -l)
-if [ "$PID_COUNT" -ne 13 ]; then
-    echo -e "${RED}Error: Failed to start all services (found ${PID_COUNT}/13 PIDs)${NC}"
-    exit 1
-fi
+#PID_COUNT=$(ls ${SERVER_DIR}/*.pid 2>/dev/null | wc -l)
+#if [ "$PID_COUNT" -ne 13 ]; then
+#    echo -e "${RED}Error: Failed to start all services (found ${PID_COUNT}/13 PIDs)${NC}"
+#    exit 1
+#fi
 
 
 # 6. 更新服务器列表
 # 6. 更新服务器列表
 echo -e "${GREEN}Step 6: Updating server list...${NC}"
 echo -e "${GREEN}Step 6: Updating server list...${NC}"
-SERVERLIST_FILE="${BUILD_DATA}/severlist.yaml"
-INSERT_CONTENT="{serverid: ${SERVER_ID}, servername: 冒险$((SERVER_ID + 1))服, ip: $PUBLIC_IP, port: [$((PORT + 21000))], type: 0, stime: \"2024-12-25 12:00:00\", state: 0, invisible: 0},"
+SERVERLIST_FILE="${BUILD_DATA}/serverlist.yaml"
+INSERT_CONTENT="{serverid: ${SERVER_ID}, servername: S${SERVER_ID}, ip: $PUBLIC_IP, port: [$((PORT + 21000))], type: 0, stime: \"2024-12-25 12:00:00\", state: 0, invisible: 0},"
 #sed -i "/serverlist:/a \ \ - name: server${SERVER_ID}\n    id: ${SERVER_ID}\n    ip: 0.0.0.0\n    port: ${PORT}" ${SERVERLIST_FILE}
 #sed -i "/serverlist:/a \ \ - name: server${SERVER_ID}\n    id: ${SERVER_ID}\n    ip: 0.0.0.0\n    port: ${PORT}" ${SERVERLIST_FILE}
 
 
-# 启用安全模式
-set -uo pipefail
-
 # 第二行插入操作(保留原内容)
 # 第二行插入操作(保留原内容)
 awk -v new="$INSERT_CONTENT" '
 awk -v new="$INSERT_CONTENT" '
 BEGIN {
 BEGIN {
@@ -149,66 +158,77 @@ BEGIN {
 ' "$SERVERLIST_FILE" > "${SERVERLIST_FILE}.tmp" && mv "${SERVERLIST_FILE}.tmp" "$SERVERLIST_FILE"
 ' "$SERVERLIST_FILE" > "${SERVERLIST_FILE}.tmp" && mv "${SERVERLIST_FILE}.tmp" "$SERVERLIST_FILE"
 
 
 # 7. GM/Jenkins配置
 # 7. GM/Jenkins配置
-# 这里脚本不太好处理,暂时手动
 echo -e "${GREEN}Step 7: Configuring GM and Jenkins...${NC}"
 echo -e "${GREEN}Step 7: Configuring GM and Jenkins...${NC}"
 PHP_CONFIG_PATH="/www/wwwroot/game/ht/gm/user/config.php"
 PHP_CONFIG_PATH="/www/wwwroot/game/ht/gm/user/config.php"
 
 
-content_config=$(printf "%s\n" \
-"'%s'=>array(
-    'name'=>'%s区',
+# 修正:使用正确的字符串拼接方式,避免printf产生多余输出
+content_config="'$((SERVER_ID + 1000))'=>array(
+    'name'=>'${SERVER_ID}区',
     'db_ip'=>'127.0.0.1',
     'db_ip'=>'127.0.0.1',
     'db_port'=>3306,
     'db_port'=>3306,
-    'db_name'=>'ro%s',
+    'db_name'=>'ro${REDIS_ID}',
     'db_user'=>'root',
     'db_user'=>'root',
     'db_pswd'=>'123456',
     'db_pswd'=>'123456',
     'hidde'=>false // false是开 true是关
     'hidde'=>false // false是开 true是关
-)," ${REDIS_ID}+1000 ${REDIS_ID} ${REDIS_ID})
-
-# 获取文件总行数
-total_lines=$(wc -l < "$PHP_CONFIG_PATH")
-# 检查文件是否有足够行数
-if [ "$total_lines" -lt 3 ]; then
-    echo "错误:文件行数不足,无法插入到倒数第四行。"
-    exit 1
-fi
-# 计算目标行号(倒数第四行)
-target_line=$((total_lines - 2))
-# 使用ed编辑器插入内容
-ed -s "$PHP_CONFIG_PATH" <<EOF
+),"
+
+# 检查是否已经存在相同的配置,如果存在则跳过
+if grep -q "'ro${REDIS_ID}'" "$PHP_CONFIG_PATH" 2>/dev/null; then
+    echo -e "${YELLOW}  Configuration for ro${REDIS_ID} already exists in config.php, skipping...${NC}"
+else
+    # 获取文件总行数
+    total_lines=$(wc -l < "$PHP_CONFIG_PATH")
+    # 检查文件是否有足够行数
+    if [ "$total_lines" -lt 3 ]; then
+        echo "错误:文件行数不足,无法插入到倒数第四行。"
+        exit 1
+    fi
+    # 计算目标行号(倒数第二行)
+    target_line=$((total_lines - 2))
+    # 使用ed编辑器插入内容
+    ed -s "$PHP_CONFIG_PATH" <<EOF
 ${target_line}i
 ${target_line}i
 $content_config
 $content_config
 .
 .
 w
 w
 q
 q
 EOF
 EOF
-echo -e "${GREEN} 文件 $PHP_CONFIG_PATH 已修改成功!${NC}"
+    echo -e "${GREEN} 文件 $PHP_CONFIG_PATH 已修改成功!${NC}"
+fi
 
 
 PHP_GMQUERY_PATH="/www/wwwroot/game/ht/gm/user/gmquery.php"
 PHP_GMQUERY_PATH="/www/wwwroot/game/ht/gm/user/gmquery.php"
-case_number=$((1000 + REDIS_ID))
+case_number=$((1000 + SERVER_ID))
 port=$((8000 + PORT))
 port=$((8000 + PORT))
-tmpfile=$(mktemp)
-cat > "$tmpfile" <<'EOF'
-                 case "CASENUMBER":
-                         $mailurl = 'http://126.0.0.1:PORT/gm/mail?type=add&uid='.$userid.'&title='.$title.'&content='.$content.'&reward='.$reward.'&senddate=2023-03-28%2014:04:00';
-                         break;
-EOF
-
-# 替换占位符并保留原有$符号
-sed -i "s/CASENUMBER/$case_number/g; s/PORT/$port/g" "$tmpfile"
-# 使用ed精确插入到第188行(保留原内容)测试服是101行,0.1是188行
-ed -s "$PHP_GMQUERY_PATH" <<ED_SCRIPT
-101r $tmpfile
-w
-q
-ED_SCRIPT
-
-# 清理临时文件
-rm "$tmpfile"
-echo -e "${GREEN}  文件 $PHP_GMQUERY_PATH 已修改成功!${NC}"
 
 
+# 检查是否已经存在相同的 case,如果存在则跳过
+if grep -q "case \"$case_number\":" "$PHP_GMQUERY_PATH" 2>/dev/null; then
+    echo -e "${YELLOW}  Case $case_number already exists in gmquery.php, skipping...${NC}"
+else
+    # 找到 default 所在的行号,在它之前插入
+    default_line=$(grep -n "default:" "$PHP_GMQUERY_PATH" | head -1 | cut -d: -f1)
+
+    if [ -z "$default_line" ]; then
+        echo -e "${RED}Error: Cannot find 'default:' line in gmquery.php${NC}"
+        exit 1
+    fi
+
+    # 在 default 行之前插入新的 case
+    sed -i "${default_line}i\\
+                 case \"$case_number\":\\
+                         \$mailurl = 'http://127.0.0.1:${port}/gm/mail?type=add&uid='.\$userid.'&title='.\$title.'&content='.\$content.'&reward='.\$reward.'&senddate=2023-03-28%2014:04:00';\\
+                         break;\\
+" "$PHP_GMQUERY_PATH"
+
+    echo -e "${GREEN}  文件 $PHP_GMQUERY_PATH 已修改成功!${NC}"
+fi
 
 
-# Jenkins配置
+# Jenkins配置 - 检查是否已存在
 JENKINS_FILE="${JENKINS_PATH}/serverlist"
 JENKINS_FILE="${JENKINS_PATH}/serverlist"
-echo "${SERVER_ID},http://$PUBLIC_IP:${PORT},ro${REDIS_ID}" >> ${JENKINS_FILE}
+if grep -q "^${SERVER_ID}," "$JENKINS_FILE" 2>/dev/null; then
+    echo -e "${YELLOW}  Server ${SERVER_ID} already exists in Jenkins serverlist, skipping...${NC}"
+else
+    echo "${SERVER_ID},http://$PUBLIC_IP:${port},ro${REDIS_ID}" >> ${JENKINS_FILE}
+    echo -e "${GREEN}  Jenkins serverlist updated${NC}"
+fi
 
 
 echo -e "${GREEN}✅ Server ${SERVER_ID} setup completed successfully!${NC}"
 echo -e "${GREEN}✅ Server ${SERVER_ID} setup completed successfully!${NC}"

+ 7 - 1
开服流程/yamlrel-端口10以后/yamlrel/changeNum.sh

@@ -3,6 +3,12 @@
 port=$1
 port=$1
 portZone=$((port + 1))
 portZone=$((port + 1))
 dbIndex=$2
 dbIndex=$2
+
+# 当 port 小于 10 时,在前面补零
+if [ $port -lt 10 ]; then
+    port="0$port"
+fi
+
 echo "port="$port
 echo "port="$port
 echo "portZone="$portZone
 echo "portZone="$portZone
 echo "dbIndex="$dbIndex
 echo "dbIndex="$dbIndex
@@ -99,4 +105,4 @@ sed -i "s/zone: 2/zone: $portZone/g" social_config.yaml
 sed -i "s/1>/$port>/g" start.sh
 sed -i "s/1>/$port>/g" start.sh
 
 
 
 
-echo 修改完成
+echo "修改完成"

+ 2 - 0
开服流程/yamlrel-端口10以后/yamlrel/game_config.yaml

@@ -16,5 +16,7 @@ server:
     authmode: 3
     authmode: 3
     robotmode: 1
     robotmode: 1
     paycallback: http://165.154.215.99:8003/pay/hwRu
     paycallback: http://165.154.215.99:8003/pay/hwRu
+    xiaoQiAndroid: 0
+    xiaoQiIos: 0