#!/bin/bash # 玩Android Material Design开发服务器测试脚本 echo "==============================================" echo "玩Android Material Design开发服务器测试" echo "==============================================" echo "测试时间: $(date)" echo "" # 测试健康检查 echo "1. 测试健康检查接口..." HEALTH_STATUS=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:3000/health) if [ "$HEALTH_STATUS" = "200" ]; then echo " ✅ 健康检查: HTTP $HEALTH_STATUS" HEALTH_DATA=$(curl -s http://localhost:3000/health) echo " 状态: $(echo $HEALTH_DATA | jq -r '.status')" echo " 版本: $(echo $HEALTH_DATA | jq -r '.version')" echo " 运行时间: $(echo $HEALTH_DATA | jq -r '.uptime')秒" else echo " ❌ 健康检查失败: HTTP $HEALTH_STATUS" fi echo "" # 测试首页 echo "2. 测试首页..." HOME_STATUS=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:3000/) if [ "$HOME_STATUS" = "200" ]; then echo " ✅ 首页: HTTP $HOME_STATUS" else echo " ❌ 首页失败: HTTP $HOME_STATUS" fi echo "" # 测试Material预览页面 echo "3. 测试Material Design预览页面..." MATERIAL_STATUS=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:3000/material_preview.html) if [ "$MATERIAL_STATUS" = "200" ]; then echo " ✅ Material预览: HTTP $MATERIAL_STATUS" else echo " ❌ Material预览失败: HTTP $MATERIAL_STATUS" fi echo "" # 测试API接口 echo "4. 测试API接口..." # Banner API BANNER_STATUS=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:3000/api/banner/json) if [ "$BANNER_STATUS" = "200" ]; then BANNER_COUNT=$(curl -s http://localhost:3000/api/banner/json | jq '.data | length') echo " ✅ Banner API: HTTP $BANNER_STATUS (数量: $BANNER_COUNT)" else echo " ❌ Banner API失败: HTTP $BANNER_STATUS" fi # Hotkey API HOTKEY_STATUS=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:3000/api/hotkey/json) if [ "$HOTKEY_STATUS" = "200" ]; then HOTKEY_COUNT=$(curl -s http://localhost:3000/api/hotkey/json | jq '.data | length') echo " ✅ 热词 API: HTTP $HOTKEY_STATUS (数量: $HOTKEY_COUNT)" else echo " ❌ 热词 API失败: HTTP $HOTKEY_STATUS" fi # Article API ARTICLE_STATUS=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:3000/api/article/list/0/json) if [ "$ARTICLE_STATUS" = "200" ]; then ARTICLE_COUNT=$(curl -s http://localhost:3000/api/article/list/0/json | jq '.data.datas | length') echo " ✅ 文章 API: HTTP $ARTICLE_STATUS (数量: $ARTICLE_COUNT)" else echo " ❌ 文章 API失败: HTTP $ARTICLE_STATUS" fi echo "" # 测试公网访问 echo "5. 测试公网访问..." PUBLIC_STATUS=$(curl -s -o /dev/null -w "%{http_code}" --connect-timeout 5 http://129.211.173.87:3000/health) if [ "$PUBLIC_STATUS" = "200" ]; then echo " ✅ 公网访问: HTTP $PUBLIC_STATUS" else echo " ⚠️ 公网访问: HTTP $PUBLIC_STATUS (可能受网络限制)" fi echo "" # 检查进程状态 echo "6. 检查服务器进程..." SERVER_PID=$(ps aux | grep "node server.js" | grep -v grep | awk '{print $2}') if [ -n "$SERVER_PID" ]; then echo " ✅ 服务器进程运行中 (PID: $SERVER_PID)" # 检查内存使用 MEMORY_USAGE=$(ps -p $SERVER_PID -o %mem | tail -1) CPU_USAGE=$(ps -p $SERVER_PID -o %cpu | tail -1) echo " 内存使用: $MEMORY_USAGE%" echo " CPU使用: $CPU_USAGE%" # 检查运行时间 UPTIME_SECONDS=$(ps -p $SERVER_PID -o etime= | awk -F: '{if (NF==2) print $1*60+$2; else if (NF==3) print $1*3600+$2*60+$3}') echo " 运行时间: $UPTIME_SECONDS秒" else echo " ❌ 服务器进程未找到" fi echo "" # 检查端口监听 echo "7. 检查端口监听..." PORT_LISTEN=$(netstat -tlnp 2>/dev/null | grep :3000 || ss -tlnp 2>/dev/null | grep :3000) if [ -n "$PORT_LISTEN" ]; then echo " ✅ 端口3000正在监听" echo "$PORT_LISTEN" | head -1 else echo " ❌ 端口3000未监听" fi echo "" # 检查日志文件 echo "8. 检查服务器日志..." LOG_FILE="/home/ubuntu/wanandroid/uniapp_android/server.log" if [ -f "$LOG_FILE" ]; then LOG_SIZE=$(du -h "$LOG_FILE" | cut -f1) LOG_LINES=$(wc -l < "$LOG_FILE") echo " ✅ 日志文件存在" echo " 文件大小: $LOG_SIZE" echo " 行数: $LOG_LINES" # 显示最后5行日志 echo " 最后5行日志:" tail -5 "$LOG_FILE" | sed 's/^/ /' else echo " ⚠️ 日志文件不存在" fi echo "" echo "==============================================" echo "测试完成!" echo "" # 汇总结果 echo "访问信息汇总:" echo "本地访问: http://localhost:3000" echo "公网访问: http://129.211.173.87:3000" echo "项目路径: /home/ubuntu/wanandroid/uniapp_android" echo "" if [ "$HEALTH_STATUS" = "200" ] && [ "$HOME_STATUS" = "200" ] && [ -n "$SERVER_PID" ]; then echo "✅ 服务器运行正常!" exit 0 else echo "⚠️ 服务器可能存在异常,请检查!" exit 1 fi