WP CLI ile WooCommerce Sistem Durum Raporu Alma: wp wc system_status

WooCommerce mağazanızın sağlığını izlemek, sorun gidermek ya da destek ekibine detaylı bilgi vermek gerektiğinde sistem durumu raporları hayat kurtarır. WP-CLI’nin wc system_status komutu, bu işlemi tek satırda halleder ve bunu otomatize etmenin sayısız yolu vardır.

wc system_status Nedir?

WP-CLI’nin WooCommerce eklentisiyle birlikte gelen wc system_status komutu, WooCommerce yönetim panelindeki WooCommerce > Durum sayfasında gördüğünüz tüm sistem bilgilerini komut satırından almanızı sağlar. PHP versiyonu, MySQL durumu, aktif temalar, eklentiler, bellek limitleri, WooCommerce ayarları ve çok daha fazlası tek bir komutla karşınıza gelir.

Özellikle birden fazla WordPress sitesi yönetiyorsanız, her birinin yönetim paneline girip durum sayfasını kontrol etmek yerine bu komutu kullanmak ciddi zaman kazandırır. Ayrıca cron job’larla düzenli durum raporları alabilir, değişiklikleri takip edebilir ve sorun çıkmadan önce müdahale edebilirsiniz.

Temel Kullanım

Komutun en basit hali şöyledir:

wp wc system_status --user=admin

--user parametresi zorunludur çünkü WooCommerce REST API üzerinden çalışan bu komut, yetkilendirilmiş bir kullanıcı gerektirir. Burada admin kullanıcı adı yerine administrator rolüne sahip herhangi bir kullanıcının adını verebilirsiniz.

Çıktı varsayılan olarak tablo formatında gelir ama JSON formatında almak çok daha kullanışlıdır:

wp wc system_status --user=admin --format=json

JSON çıktısını düzenli görmek için jq aracıyla birleştirebilirsiniz:

wp wc system_status --user=admin --format=json | jq .

Parametreler ve Seçenekler

wc system_status komutunun temel parametreleri şunlardır:

  • –user: Komutu çalıştıracak kullanıcı adı veya ID. Administrator rolü gereklidir.
  • –format=table: Varsayılan tablo çıktısı.
  • –format=json: JSON formatında çıktı, otomasyon için idealdir.
  • –format=yaml: YAML formatında çıktı.
  • –format=csv: CSV formatında çıktı, raporlama için kullanılabilir.
  • –path: WordPress kurulum dizinini belirtmek için kullanılır (farklı bir dizinden çalıştırırken).
  • –url: Multisite kurulumlarında hangi sitenin durumunu alacağınızı belirtmek için.
  • –ssh: Uzak sunucularda SSH üzerinden çalıştırmak için.
  • –debug: Hata ayıklama çıktısı ekler, sorun giderirken faydalıdır.

Çıktıda Neler Var?

Komut çalıştırıldığında dönen veri oldukça kapsamlıdır. Ana kategoriler şunlardır:

Ortam Bilgileri:

  • WordPress versiyonu ve yapılandırması
  • WooCommerce versiyonu
  • PHP versiyonu ve bellek limiti
  • MySQL/MariaDB versiyonu
  • Sunucu yazılımı (Apache, Nginx vb.)

Veritabanı Durumu:

  • WooCommerce tablolarının varlığı ve boyutları
  • Veritabanı karakter seti
  • Bekleyen migration sayısı

Aktif Temalar ve Eklentiler:

  • Şu an aktif ana tema ve child tema bilgileri
  • Tüm aktif eklentilerin versiyonları

WooCommerce Ayarları:

  • Para birimi ve konum ayarları
  • Vergi ve kargo yapılandırması
  • Sepet ve ödeme ayarları

Güvenlik Kontrolleri:

  • SSL durumu
  • Güvenlik anahtarları

Gerçek Dünya Senaryoları

Senaryo 1: Destek Talebine Hazırlık

Bir WooCommerce eklentisi sorun çıkardığında, destek ekibi genellikle sistem durum raporunu ister. Bunu manuel olarak kopyalayıp yapıştırmak yerine şöyle yapabilirsiniz:

wp wc system_status --user=admin --format=json > /tmp/wc-system-status-$(date +%Y%m%d).json

Bu komut, tarihli bir dosyaya sistem durumunu kaydeder. Destek ekibine bu dosyayı gönderebilirsiniz. Ayrıca WooCommerce’in kendi sistem durumu metin raporunu da alabilirsiniz:

wp wc system_status --user=admin --format=json | jq -r '.environment | to_entries[] | "(.key): (.value)"'

Bu komut sadece ortam bilgilerini anahtar-değer çiftleri olarak listeler, okunması çok daha kolaydır.

Senaryo 2: PHP Bellek Limitini Kontrol Etme

Sitenizde bellek sorunu yaşıyorsanız hızlıca kontrol edebilirsiniz:

wp wc system_status --user=admin --format=json | jq '.environment.php_memory_limit'

Çıktı "256M" gibi bir değer döndürür. Eğer bu değer düşükse, wp-config.php dosyanızda ya da sunucu yapılandırmanızda artırmanız gerekiyor demektir.

# PHP memory limit kontrolü ve düşükse uyarı verme
MEMORY=$(wp wc system_status --user=admin --format=json | jq -r '.environment.php_memory_limit')
echo "Mevcut PHP Bellek Limiti: $MEMORY"

# Sayısal değere çevir ve kontrol et
MEMORY_NUM=$(echo $MEMORY | sed 's/M//')
if [ "$MEMORY_NUM" -lt 256 ]; then
    echo "UYARI: PHP bellek limiti 256MB altında! Artırılması önerilir."
fi

Senaryo 3: Çoklu Site Yönetimi

Ajans olarak birden fazla WooCommerce sitesi yönetiyorsanız, tüm sitelerin durumunu toplu kontrol edebilirsiniz:

#!/bin/bash
# Tüm müşteri sitelerinin WooCommerce durumunu kontrol et

SITES=(
    "/var/www/musteri1.com"
    "/var/www/musteri2.com"
    "/var/www/musteri3.com"
)

for SITE in "${SITES[@]}"; do
    echo "========================================="
    echo "Site: $SITE"
    echo "========================================="
    
    WC_VERSION=$(wp wc system_status --user=admin --format=json --path="$SITE" | jq -r '.environment.wc_version')
    WP_VERSION=$(wp wc system_status --user=admin --format=json --path="$SITE" | jq -r '.environment.wp_version')
    PHP_VERSION=$(wp wc system_status --user=admin --format=json --path="$SITE" | jq -r '.environment.php_version')
    
    echo "WordPress: $WP_VERSION"
    echo "WooCommerce: $WC_VERSION"
    echo "PHP: $PHP_VERSION"
    echo ""
done

Bu script’i cron job olarak haftalık çalıştırıp e-posta ile kendinize göndertebilirsiniz.

Senaryo 4: Otomatik Durum Raporu ve Log Tutma

Değişiklikleri takip etmek için periyodik durum raporları kaydedebilirsiniz. Bu özellikle bir güncelleme sonrasında “öncesi ve sonrası” karşılaştırması yapmak için çok değerlidir:

#!/bin/bash
# WooCommerce sistem durumu log scripti
# /usr/local/bin/wc-status-log.sh olarak kaydedin

SITE_PATH="/var/www/html"
LOG_DIR="/var/log/woocommerce"
DATE=$(date +%Y%m%d_%H%M%S)
LOG_FILE="$LOG_DIR/system_status_$DATE.json"

# Log dizinini oluştur
mkdir -p "$LOG_DIR"

# Sistem durumunu kaydet
wp wc system_status 
    --user=admin 
    --format=json 
    --path="$SITE_PATH" > "$LOG_FILE"

# Başarılı olup olmadığını kontrol et
if [ $? -eq 0 ]; then
    echo "[$DATE] Sistem durumu başarıyla kaydedildi: $LOG_FILE"
    
    # 30 günden eski logları temizle
    find "$LOG_DIR" -name "system_status_*.json" -mtime +30 -delete
    echo "[$DATE] Eski log dosyaları temizlendi."
else
    echo "[$DATE] HATA: Sistem durumu alınamadı!" >&2
fi

Bu script’i cron’a ekleyebilirsiniz:

# Crontab'a eklemek için
crontab -e

# Her gece 02:00'de çalıştır
0 2 * * * /usr/local/bin/wc-status-log.sh >> /var/log/woocommerce/cron.log 2>&1

Senaryo 5: Güncelleme Öncesi Kontrol

WooCommerce güncellemesi yapmadan önce mevcut durumu kaydetmek, olası sorunlarda geriye dönük karşılaştırma imkanı sağlar:

#!/bin/bash
# Güncelleme öncesi durum kaydı ve güncelleme scripti

SITE_PATH="/var/www/html"
BACKUP_DIR="/root/wc-backups"
DATE=$(date +%Y%m%d_%H%M%S)

mkdir -p "$BACKUP_DIR"

echo "1. Güncelleme öncesi sistem durumu kaydediliyor..."
wp wc system_status 
    --user=admin 
    --format=json 
    --path="$SITE_PATH" > "$BACKUP_DIR/pre_update_$DATE.json"

echo "2. Mevcut WooCommerce versiyonu:"
wp plugin get woocommerce --field=version --path="$SITE_PATH"

echo "3. Veritabanı yedeği alınıyor..."
wp db export "$BACKUP_DIR/db_backup_$DATE.sql" --path="$SITE_PATH"

echo "4. WooCommerce güncelleniyor..."
wp plugin update woocommerce --path="$SITE_PATH"

echo "5. Güncelleme sonrası sistem durumu kaydediliyor..."
wp wc system_status 
    --user=admin 
    --format=json 
    --path="$SITE_PATH" > "$BACKUP_DIR/post_update_$DATE.json"

echo "6. Yeni WooCommerce versiyonu:"
wp plugin get woocommerce --field=version --path="$SITE_PATH"

echo ""
echo "Güncelleme tamamlandı. Karşılaştırma için:"
echo "Öncesi: $BACKUP_DIR/pre_update_$DATE.json"
echo "Sonrası: $BACKUP_DIR/post_update_$DATE.json"

Uzak Sunucularda Kullanım

SSH ile uzak sunucularda çalışıyorsanız, WP-CLI’nin SSH özelliğini kullanabilirsiniz:

# Uzak sunucuda sistem durumu alma
wp wc system_status --user=admin --format=json [email protected]:/var/www/html

# Uzak sunucu çıktısını yerel dosyaya kaydet
wp wc system_status 
    --user=admin 
    --format=json 
    [email protected]:/var/www/musteri-site.com > ~/musteri-durum-$(date +%Y%m%d).json

Sık Karşılaşılan Sorunlar ve Çözümleri

“Error: You need to specify a user” hatası: --user parametresini eklemeyi unutmuşsunuzdur. WooCommerce komutları için bu zorunludur.

# Yanlış
wp wc system_status --format=json

# Doğru
wp wc system_status --user=admin --format=json

“Error: Invalid email address” ya da kullanıcı bulunamadı hatası: Kullanıcı adı yerine e-posta adresi ya da kullanıcı ID’si de kullanabilirsiniz:

# Kullanıcı ID ile
wp wc system_status --user=1 --format=json

# E-posta ile
wp wc system_status [email protected] --format=json

WooCommerce komutları görünmüyorsa: WP-CLI için WooCommerce paketinin kurulu olduğundan emin olun. Bazı yapılandırmalarda wp wc komutları otomatik gelmez:

# Mevcut wc komutlarını listele
wp wc --help

# WooCommerce eklentisinin aktif olduğunu doğrula
wp plugin status woocommerce

Multisite kurulumlarında: Her site için --url parametresi gereklidir:

wp wc system_status --user=admin --format=json --url=https://shop.siteniz.com

Sistem Durumu Verilerini Parse Etmek

JSON çıktısından spesifik bilgiler çekmek için jq oldukça güçlüdür. Sık kullanılan örnekler:

# Sadece environment bilgilerini al
wp wc system_status --user=admin --format=json | jq '.environment'

# WooCommerce ve WordPress versiyonlarını göster
wp wc system_status --user=admin --format=json | jq '{
  wc_version: .environment.wc_version,
  wp_version: .environment.wp_version,
  php_version: .environment.php_version,
  mysql_version: .environment.mysql_version
}'

# Aktif eklentileri listele
wp wc system_status --user=admin --format=json | jq '.active_plugins[] | "(.name) - (.version)"'

# SSL aktif mi kontrol et
wp wc system_status --user=admin --format=json | jq '.environment.ssl_supported'

# Veritabanı tablolarını kontrol et
wp wc system_status --user=admin --format=json | jq '.database.wc_database_version'

İzleme Sistemine Entegrasyon

Zabbix, Prometheus ya da basit bir Slack bildirimi için sistem durumunu kullanabilirsiniz. İşte basit bir Slack webhook entegrasyonu:

#!/bin/bash
# WooCommerce durum özeti Slack'e gönder

SITE_PATH="/var/www/html"
SLACK_WEBHOOK="https://hooks.slack.com/services/XXXX/YYYY/ZZZZ"

STATUS=$(wp wc system_status --user=admin --format=json --path="$SITE_PATH")

WC_VERSION=$(echo "$STATUS" | jq -r '.environment.wc_version')
WP_VERSION=$(echo "$STATUS" | jq -r '.environment.wp_version')
PHP_VERSION=$(echo "$STATUS" | jq -r '.environment.php_version')
PHP_MEMORY=$(echo "$STATUS" | jq -r '.environment.php_memory_limit')
SSL=$(echo "$STATUS" | jq -r '.environment.ssl_supported')

MESSAGE="*WooCommerce Haftalik Durum Raporu*n"
MESSAGE+="WooCommerce: $WC_VERSIONn"
MESSAGE+="WordPress: $WP_VERSIONn"
MESSAGE+="PHP: $PHP_VERSIONn"
MESSAGE+="Bellek Limiti: $PHP_MEMORYn"
MESSAGE+="SSL: $SSLn"
MESSAGE+="Tarih: $(date '+%d.%m.%Y %H:%M')"

curl -s -X POST -H 'Content-type: application/json' 
    --data "{"text":"$MESSAGE"}" 
    "$SLACK_WEBHOOK"

Sonuç

wp wc system_status komutu, WooCommerce mağaza yönetiminin vazgeçilmez araçlarından biri. Özellikle birden fazla site yönetiyorsanız, güncellemeler yapıyorsanız ya da periyodik sağlık kontrolleri oluşturmak istiyorsanız bu komut olmadan nasıl idare ettiğinizi düşünemezsiniz.

Anlattığımız senaryoların hepsinde temel mantık aynı: komutu çalıştır, JSON çıktısını al, ihtiyacın olan veriyi parse et, gerekirse otomatize et. jq ile kombinleyince inanılmaz güçlü bir izleme altyapısı kurabilirsiniz.

Başlangıç için en azından şu iki alışkanlığı edinmenizi öneririm: güncelleme öncesi durum kaydetme ve haftalık otomatik durum raporları. Bu iki basit pratik, ileride yaşayacağınız çok sayıda sorunun önüne geçecektir. Sistem yönetimi sonuçta büyük krizleri çözmekten çok, küçük önlemlerle o krizlerin yaşanmamasını sağlamaktan ibarettir.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir