WordPress慢的八种解决方法(用排查法解决)

本文详细介绍了WordPress网站运行缓慢的八种可能原因及对应的解决策略,包括但不限于:检查主机性能、优化数据库、减少HTTP请求、启用缓存、选择快速主题、优化图片大小、禁用不必要的插件和调整PHP内存限制等。通过这些排查和优化措施,能够显著提升WordPress站点的加载速度和用户体验。
[root@yfw ~]# cd /root [root@yfw ~]# ./check-yfw.sh [23:17:24] 🚀 开始全面检查 yfw.szrengjing.com 业务系统 ──────────────────────────────────────────── [23:17:24] 🔍 1. 正在检查域名解析与网络连通性 [ERROR] 无解析或网络不通 [root@yfw ~]# ping yfw.szrengjing.com PING yfw.szrengjing.com (124.71.230.244) 56(84) bytes of data. #!/bin/bash # ===================================================== # 🧪 全面检查脚本:https://yfw.szrengjing.com/ # 功能:检查网站、Nginx、PHP、MySQL、WebSocket、插件等 # 用:chmod +x check-yfw.sh && ./check-yfw.sh # ===================================================== RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color log() { echo -e "${BLUE}[$(date +'%H:%M:%S')]${NC} $1" } success() { echo -e "${GREEN}[SUCCESS]${NC} $1" } warn() { echo -e "${YELLOW}[WARN]${NC} $1" } error() { echo -e "${RED}[ERROR]${NC} $1" } separator() { echo "────────────────────────────────────────────" } # 开始检查 log "🚀 开始全面检查 yfw.szrengjing.com 业务系统" separator # 1. 检查域名解析和网络连通性 log "🔍 1. 正在检查域名解析与网络连通性" if ping -c 1 -W 2 yfw.szrengjing.com &> /dev/null; then success "域名解析正常" else error "无解析或网络不通" exit 1 fi # 2. 检查 HTTPS 响应 log "🌐 2. 正在检查 HTTPS 访问" HTTP_CODE=$(curl -k -o /dev/null -s -w "%{http_code}" https://yfw.szrengjing.com/) if [[ "$HTTP_CODE" == "200" || "$HTTP_CODE" == "301" || "$HTTP_CODE" == "302" ]]; then success "HTTPS 访问正常 (HTTP $HTTP_CODE)" else error "HTTPS 访问异常: HTTP $HTTP_CODE" fi # 3. 检查 SSL 证书有效期 log "🔐 3. 正在检查 SSL 证书有效期" domain="yfw.szrengjing.com" end_date=$(echo | openssl s_client -connect "$domain":443 -servername "$domain" 2>/dev/null \ | openssl x509 -noout -enddate | cut -d= -f2) if [ -z "$end_date" ]; then error "无获取 SSL 证书信息" else end_sec=$(date -d "$end_date" +%s 2>/dev/null) if [ $? -ne 0 ]; then error "无解析证书过期时间" else now_sec=$(date +%s) days_left=$(( (end_sec - now_sec) / 86400 )) if [ $days_left -lt 0 ]; then error "SSL 证书已过期!" elif [ $days_left -lt 7 ]; then warn "SSL 证书将在 $days_left 天内过期!" else success "SSL 证书有效,剩余 $days_left 天" fi fi fi # 4. 检查 Nginx 配置语 log "⚙️ 4. 正在检查 Nginx 配置语" if nginx -t &> /dev/null; then success "Nginx 配置语正确" else error "Nginx 配置有误!" nginx -t exit 1 fi # 5. 检查 Nginx 是否启用 /im-ws 反向代理 log "🔄 5. 检查 /im-ws 反向代理配置" conf_file="/www/server/panel/vhost/nginx/yfw.szrengjing.com.conf" if [[ ! -f "$conf_file" ]]; then error "Nginx 配置文件不存在: $conf_file" elif grep -q "location /im-ws" "$conf_file"; then if grep -q "proxy_pass.*127.0.0.1:8283" "$conf_file"; then success "/im-ws 反向代理配置正确" else error "/im-ws 缺少 proxy_pass 到 127.0.0.1:8283" fi else error "未找到 /im-ws location 配置" fi # 6. 检查本地 8283 端口(Workerman) log "🔌 6. 检查本地 WSS 服务端口 8283" if lsof -i :8283 &> /dev/null; then success "Workerman WebSocket 服务正在运行 (端口 8283)" else error "未检测到服务监听 8283 端口,请启动 php cli-server.php start -d" fi # 7. 检查 PHP-FPM 是否运行 log "🐘 7. 检查 PHP-FPM 运行状态" if pgrep php-fpm &> /dev/null; then success "PHP-FPM 正在运行" else error "PHP-FPM 未运行" fi # 8. 检查 WordPress 根目录是否存在 WP_DIR="/www/wwwroot/yfw_szrengjing_com" if [[ -d "$WP_DIR" ]]; then success "WordPress 目录存在: $WP_DIR" else error "WordPress 目录不存在: $WP_DIR" exit 1 fi # 9. 检查 wp-im-plugin 插件文件 PLUGIN_DIR="$WP_DIR/wp-content/plugins/wp-im-plugin" FILES=( "$PLUGIN_DIR/api.php" "$PLUGIN_DIR/cli-server.php" "$PLUGIN_DIR/.secret.key" "$PLUGIN_DIR/vendor/autoload.php" ) missing_files=() for file in "${FILES[@]}"; do if [[ ! -f "$file" ]]; then missing_files+=("$(basename "$file")") fi done if [[ ${#missing_files[@]} -eq 0 ]]; then success "✅ 所有关键插件文件存在" else error "缺失文件: ${missing_files[*]}" # 尝试自动修复 .secret.key secret_key="$PLUGIN_DIR/.secret.key" if [[ " ${missing_files[@]} " =~ " .secret.key " ]]; then log "🔧 正在尝试自动生成 .secret.key..." mkdir -p "$PLUGIN_DIR" openssl rand -base64 32 > "$secret_key" chmod 600 "$secret_key" success "已生成新密钥: $secret_key" fi fi # 10. 测试 api.php 获取 Token(模拟已登录用户) log "🔑 10. 测试 JWT Token 接口" # 自动提取 AUTH_SALT 并生成 cookie 名 SALT_LINE=$(grep "define('AUTH_SALT'" "$WP_DIR/wp-config.php") if [[ -n "$SALT_LINE" ]]; then REAL_SALT=$(echo "$SALT_LINE" | cut -d"'" -f4) HASHED_SALT=$(echo -n "$REAL_SALT" | md5sum | cut -c1-16) LOGIN_COOKIE_NAME="wordpress_logged_in_$HASHED_SALT" else warn "未能提取 AUTH_SALT,使用通用 cookie 名模拟" LOGIN_COOKIE_NAME="wordpress_logged_in_dummy" fi TOKEN_URL="https://yfw.szrengjing.com/wp-content/plugins/wp-im-plugin/api.php?action=get_token" TOKEN_RESPONSE=$(curl -k -s --cookie "$LOGIN_COOKIE_NAME=mock_session" "$TOKEN_URL") if echo "$TOKEN_RESPONSE" | grep -q '"success":true'; then username=$(echo "$TOKEN_RESPONSE" | grep -o '"username":"[^"]*"' | cut -d: -f2 | tr -d '"') success "JWT 接口返回成功: 用户名=$username" elif echo "$TOKEN_RESPONSE" | grep -iq 'login\|未登录\|auth'; then warn "JWT 接口提示未登录(可能是正常情况)" else error "JWT 接口异常响应: $TOKEN_RESPONSE" fi # 11. 检查数据库连接 log "🗄️ 11. 检查 WordPress 数据库连接" DB_CONFIG="$WP_DIR/wp-config.php" if [[ ! -f "$DB_CONFIG" ]] || ! grep -q "DB_NAME" "$DB_CONFIG"; then error "❌ 无读取 wp-config.php 或缺少数据库配置" else DB_NAME=$(grep "define('DB_NAME'" "$DB_CONFIG" | cut -d "'" -f 4) DB_USER=$(grep "define('DB_USER'" "$DB_CONFIG" | cut -d "'" -f 4) DB_PASS=$(grep "define('DB_PASSWORD'" "$DB_CONFIG" | cut -d "'" -f 4) DB_HOST=$(grep "define('DB_HOST'" "$DB_CONFIG" | cut -d "'" -f 4) # 使用临时配置避免密码暴露 tmp_conf=$(mktemp) cat > "$tmp_conf" << EOF [client] user=$DB_USER password=$DB_PASS host=$DB_HOST EOF if mysql --defaults-file="$tmp_conf" -e "USE $DB_NAME; SELECT 1 FROM wp_options LIMIT 1;" &> /dev/null; then success "✅ 数据库连接正常" else error "❌ 数据库连接失败,请检查账号密码或权限" fi rm -f "$tmp_conf" fi # 最终总结 separator log "✅ 全面检查完成!请根据上述结果修复问题。" echo "" echo "📌 建议操作:" echo " - 若 8283 未监听 → 启动:cd $PLUGIN_DIR && php cli-server.php start -d" echo " - 若 Nginx 配置缺失 → 添加 /im-ws 反向代理" echo " - 若 .secret.key 丢失 → 已自动修复(若开启)" echo " - 定期运行此脚本做健康检查,可加入 crontab" exit 0
最新发布
11-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值