WP-CLI ile WordPress Kurulumu: Adım Adım Rehber

WordPress kurulumu denince aklınıza ne geliyor? Tarayıcı açmak, dosyaları FTP ile yüklemek, wp-config.php’yi elle düzenlemek, kurulum sihirbazını tıklamak… Bütün bu adımlar bir kez için bile can sıkıcı, onlarca sunucu yönetiyorsanız tam anlamıyla bir işkence. İşte tam bu noktada WP-CLI devreye giriyor ve sizi bu dertten kurtarıyor. Bu yazıda WP-CLI kullanarak WordPress kurulumunu baştan sona, gerçek dünya senaryolarıyla birlikte ele alacağız.

WP-CLI Nedir ve Neden Kullanmalısınız?

WP-CLI, WordPress için geliştirilmiş resmi komut satırı arayüzüdür. Tarayıcıya ihtiyaç duymadan WordPress’i yönetmenizi sağlar. Eklenti kurulumu, tema aktivasyonu, veritabanı işlemleri, kullanıcı yönetimi ve daha fazlası, hepsi tek bir terminal penceresinden halledilir.

Avantajları neler?

  • Onlarca sitenin kurulumunu birkaç dakikada tamamlayabilirsiniz
  • Otomasyon scriptleri yazarak tekrarlayan işleri ortadan kaldırırsınız
  • Cron job’larla entegre çalışır
  • SSH üzerinden uzak sunuculara bağlanarak işlem yaparsınız
  • Hata ayıklama ve sorun giderme çok daha hızlı olur

Bir müşterinin yeni sitenini hazırlayan bir ajans senaryosu düşünün: Standart eklentiler, belirli bir tema, özel ayarlar. Her seferinde aynı adımları tekrarlamak yerine bir script yazarsınız ve işte bu kadar. Gerisi otomatik.

WP-CLI Kurulumu

Eğer WP-CLI henüz sisteminizde yoksa önce onu kuralım. Linux sunucularda kurulum oldukça basit.

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

Kurulumun başarılı olup olmadığını kontrol edelim:

wp --info

Bu komut PHP versiyonu, WP-CLI versiyonu ve işletim sistemi bilgilerini gösterir. Eğer çıktıda her şey düzgün görünüyorsa hazırsınız demektir.

Dikkat edilmesi gereken bir nokta: WP-CLI komutlarını çalıştırdığınızda, web sunucusunun kullandığı kullanıcı ile çalıştığınızdan emin olun. Apache kullananlar için genellikle www-data, Nginx + PHP-FPM kullananlar için ise pool ayarlarına göre değişen bir kullanıcı adı söz konusu olabilir. Yanlış kullanıcıyla çalıştırmak dosya izni sorunlarına yol açar.

sudo -u www-data wp --info

Veritabanı Oluşturma

WordPress kurulumuna geçmeden önce bir veritabanı hazırlamamız gerekiyor. Bu adımı MySQL üzerinden yapabilirsiniz.

mysql -u root -p -e "CREATE DATABASE wp_yenisite CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -u root -p -e "CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'guclu_sifre_buraya';"
mysql -u root -p -e "GRANT ALL PRIVILEGES ON wp_yenisite.* TO 'wp_user'@'localhost';"
mysql -u root -p -e "FLUSH PRIVILEGES;"

Karakter seti olarak utf8mb4 kullanmanızı şiddetle tavsiye ederim. Türkçe karakterler ve emoji desteği için bu şart. Eski utf8 kullanırsanız bazı karakterlerde sorun yaşayabilirsiniz.

WordPress Dosyalarını İndirmek

Artık WP-CLI ile işe koyulabiliriz. Önce site dizinine geçip WordPress’i indirelim.

mkdir -p /var/www/html/yenisite.com
cd /var/www/html/yenisite.com
wp core download --locale=tr_TR

--locale=tr_TR parametresi WordPress’i Türkçe olarak indirir. İngilizce tercih ederseniz bu parametreyi atlayabilir ya da --locale=en_US olarak belirtebilirsiniz. Kurumsal müşteriler için çoğunlukla Türkçe tercih edilir.

İndirme tamamlandığında dizin içeriğini kontrol edin:

ls -la

wp-admin, wp-content, wp-includes klasörleri ve wp-login.php gibi dosyaları görüyorsanız her şey yolunda.

wp-config.php Dosyasının Oluşturulması

Klasik kurulumda bu dosyayı elle düzenlemeniz gerekir. WP-CLI ile tek satırda hallediyoruz.

wp config create 
  --dbname=wp_yenisite 
  --dbuser=wp_user 
  --dbpass=guclu_sifre_buraya 
  --dbhost=localhost 
  --dbprefix=site_ 
  --locale=tr_TR

Parametrelerin açıklaması:

  • –dbname: Veritabanı adı
  • –dbuser: Veritabanı kullanıcı adı
  • –dbpass: Veritabanı şifresi
  • –dbhost: Veritabanı sunucusu, genellikle localhost
  • –dbprefix: Tablo öneki, güvenlik için varsayılan wp_ yerine farklı bir şey kullanın
  • –locale: Dil ayarı

Tablo önekini değiştirmek basit ama etkili bir güvenlik önlemidir. SQL injection saldırılarında tablo adlarını tahmin etmeyi zorlaştırır. site_, proje_, msj_ gibi kısa ama tahmin edilemez önekler kullanabilirsiniz.

Yapılandırma dosyasını oluşturduktan sonra veritabanı bağlantısını test edin:

wp db check

“Success: Database checked.” mesajını görürseniz devam edebiliriz.

WordPress’i Yüklemek

İşte asıl kurulum adımı. Bu komut veritabanı tablolarını oluşturur ve admin kullanıcısını ayarlar.

wp core install 
  --url=https://yenisite.com 
  --title="Yeni Site" 
  --admin_user=yonetici 
  --admin_password=cok_guclu_admin_sifresi 
  [email protected] 
  --skip-email

--skip-email parametresi kurulum tamamlandığında gönderilen hoş geldin e-postasını atlar. Toplu kurulum yapıyorsanız bu parametreyi eklemenizi öneririm, gereksiz e-posta trafiğini önler.

Kurulum başarıyla tamamlandığında şöyle bir çıktı göreceksiniz:

WordPress installed successfully.

Artık siteniz çalışır durumda. Tarayıcıdan kontrol etmek isteyebilirsiniz ama bizim işimiz daha bitmedi.

Site Ayarlarının Yapılandırılması

Kurulum sonrası yapmanız gereken bazı temel ayarlar var. WP-CLI ile bunları da komut satırından halledebilirsiniz.

# Zaman dilimini ayarla
wp option update timezone_string "Europe/Istanbul"

# Tarih formatını ayarla
wp option update date_format "d.m.Y"

# Saat formatını ayarla  
wp option update time_format "H:i"

# Yorum moderasyonunu aç
wp option update comment_moderation 1

# Pingback ve trackback'leri kapat
wp option update default_pingback_flag 0
wp option update default_ping_status closed

# Yorum bildirimlerini ayarla
wp option update comments_notify 1

# Varsayılan yorum durumunu kapat (spam önlemi)
wp option update default_comment_status closed

Bu ayarları tek tek yapmak yerine bir script haline getirirseniz her yeni kurulumda aynı başlangıç konfigürasyonunu otomatik olarak uygularsınız.

Kalıcı bağlantıları (permalink) ayarlayalım:

wp rewrite structure '/%postname%/' --hard
wp rewrite flush

SEO açısından en sık kullanılan yapı /%postname%/ formatıdır. --hard parametresi .htaccess dosyasına da yazar, sadece veritabanında tutmaz.

Eklenti Kurulumu ve Aktivasyonu

Standart bir WordPress kurulumunda mutlaka bulunmasını istediğiniz eklentiler vardır. WP-CLI ile bunları tek seferde kurabilirsiniz.

# Güvenlik eklentisi
wp plugin install wordfence --activate

# Önbellek eklentisi
wp plugin install wp-super-cache --activate

# SEO eklentisi
wp plugin install wordpress-seo --activate

# İletişim formu
wp plugin install contact-form-7 --activate

# Yedekleme eklentisi
wp plugin install updraftplus --activate

Her eklentiyi ayrı ayrı kurmak yerine hepsini tek komutla da yapabilirsiniz:

wp plugin install wordfence wp-super-cache wordpress-seo contact-form-7 updraftplus --activate

Varsayılan gereksiz eklentileri silelim:

WordPress kurulumunda gelen hello-dolly ve bazen akismet eklentileri çoğu kurulumda kullanılmaz. Temiz bir başlangıç için bunları kaldırın.

wp plugin delete hello-dolly
wp plugin deactivate akismet

Akismet’i tamamen silmiyorum çünkü API anahtarıyla birlikte kullanışlı bir anti-spam çözümü olabilir. Ama aktifleştirilmemiş halde bırakmak yerine ya yapılandırın ya da silin.

Tema Kurulumu

Tema konusunda iki seçeneğiniz var: WordPress reposundan bir tema kurmak ya da yerel bir tema dosyasını yüklemek.

Repodan tema kurulumu:

wp theme install astra --activate

Yerel tema dosyasından kurulum:

wp theme install /path/to/tema.zip --activate

Varsayılan temaları temizleyelim:

WordPress her yıl yeni bir varsayılan tema gelir (Twenty Twenty-Four, Twenty Twenty-Three gibi). Bunları kullanmıyorsanız silebilirsiniz, disk alanı kazanırsınız ve güvenlik açısından daha temiz bir kurulum olur.

wp theme list
wp theme delete twentytwentythree
wp theme delete twentytwentytwo

Aktif temayı silmeye çalışırsanız WP-CLI sizi uyarır. Önce başka bir temayı aktifleştirip sonra silmeniz gerekir.

Çocuk Tema Oluşturma

Gerçek dünya projelerinde doğrudan ana temayı değiştirmek kötü bir pratiktir. Tema güncellendiğinde tüm değişiklikleriniz gider. Bunun yerine çocuk tema kullanın.

# Çocuk tema dizinini oluştur
mkdir -p /var/www/html/yenisite.com/wp-content/themes/astra-child

# style.css dosyasını oluştur
cat > /var/www/html/yenisite.com/wp-content/themes/astra-child/style.css << 'EOF'
/*
 Theme Name: Astra Child
 Template: astra
 Version: 1.0.0
*/
EOF

# functions.php dosyasını oluştur
cat > /var/www/html/yenisite.com/wp-content/themes/astra-child/functions.php << 'EOF'
<?php
add_action('wp_enqueue_scripts', function() {
    wp_enqueue_style('parent-style', get_template_directory_uri() . '/style.css');
});
EOF

# Çocuk temayı aktifleştir
wp theme activate astra-child

Kullanıcı Yönetimi

Proje ekibiyle çalışıyorsanız birden fazla kullanıcı oluşturmanız gerekebilir.

# İçerik editörü ekle
wp user create editor [email protected] 
  --role=editor 
  --first_name=Ahmet 
  --last_name=Yilmaz 
  --send-email

# Yazar ekle
wp user create yazar1 [email protected] 
  --role=author 
  --first_name=Fatma 
  --last_name=Demir

Admin kullanıcısının kullanıcı adını varsayılan admin olarak bırakmayın. Kurulumda farklı bir isim verdiyseniz sorun yok ama önceden admin olarak kurulmuş bir sitede değiştirmek isterseniz:

wp user update 1 --user_login=yeni_admin_adi

Aslında WordPress user_login alanını güncellemez bu komutla, doğrudan veritabanında değiştirmeniz gerekir. Bunun için şu yolu izleyin:

wp db query "UPDATE wp_users SET user_login='gizli_admin' WHERE ID=1;"

Tabii tablo önekini kendi kurulumunuza göre değiştirin.

Toplu Kurulum Senaryosu: Ajans Kullanımı

Buraya kadar anlattığım her şeyi bir araya getirip ajanslar için kullanışlı bir kurulum scripti oluşturalım. Bu script bir parametre alır ve tam bir WordPress kurulumu yapar.

#!/bin/bash

# Kullanım: ./wp-kur.sh yenisite.com

DOMAIN=$1
SITE_PATH="/var/www/html/$DOMAIN"
DB_NAME=$(echo $DOMAIN | tr '.' '_' | tr '-' '_')
DB_USER="wp_$(head /dev/urandom | tr -dc a-z | head -c 6)"
DB_PASS=$(openssl rand -base64 16)
ADMIN_PASS=$(openssl rand -base64 20)
TABLE_PREFIX=$(head /dev/urandom | tr -dc a-z | head -c 4)_

echo "=== $DOMAIN icin WordPress kurulumu basliyor ==="

# Veritabanı oluştur
mysql -u root -p"$MYSQL_ROOT_PASS" -e "CREATE DATABASE $DB_NAME CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -u root -p"$MYSQL_ROOT_PASS" -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
mysql -u root -p"$MYSQL_ROOT_PASS" -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost';"
mysql -u root -p"$MYSQL_ROOT_PASS" -e "FLUSH PRIVILEGES;"

# Dizin oluştur ve WordPress indir
mkdir -p $SITE_PATH
cd $SITE_PATH
sudo -u www-data wp core download --locale=tr_TR

# Yapılandır
sudo -u www-data wp config create 
  --dbname=$DB_NAME 
  --dbuser=$DB_USER 
  --dbpass=$DB_PASS 
  --dbhost=localhost 
  --dbprefix=$TABLE_PREFIX

# Kur
sudo -u www-data wp core install 
  --url=https://$DOMAIN 
  --title="$DOMAIN" 
  --admin_user=site_yonetici 
  --admin_password=$ADMIN_PASS 
  --admin_email=admin@$DOMAIN 
  --skip-email

# Temel ayarlar
sudo -u www-data wp option update timezone_string "Europe/Istanbul"
sudo -u www-data wp option update date_format "d.m.Y"
sudo -u www-data wp rewrite structure '/%postname%/' --hard
sudo -u www-data wp rewrite flush

# Standart eklentiler
sudo -u www-data wp plugin install wordfence wp-super-cache wordpress-seo --activate
sudo -u www-data wp plugin delete hello-dolly

# Bilgileri kaydet
echo "Site: https://$DOMAIN" >> /root/site-bilgileri.txt
echo "DB: $DB_NAME / $DB_USER / $DB_PASS" >> /root/site-bilgileri.txt
echo "Admin: site_yonetici / $ADMIN_PASS" >> /root/site-bilgileri.txt
echo "---" >> /root/site-bilgileri.txt

echo "=== Kurulum tamamlandi ==="
echo "Admin Sifresi: $ADMIN_PASS"

Bu scripti /root/site-bilgileri.txt dosyasının izinlerini sadece root okuyacak şekilde ayarlayarak kullanın: chmod 600 /root/site-bilgileri.txt.

Kurulum Sonrası Güvenlik Adımları

WP-CLI ile birkaç önemli güvenlik ayarını daha yapalım.

# wp-config.php izinlerini kısıtla
chmod 640 /var/www/html/yenisite.com/wp-config.php

# Dosya düzenlemeyi admin panelinden kapat
wp config set DISALLOW_FILE_EDIT true --raw

# Debug modunu kapat (production ortamı için)
wp config set WP_DEBUG false --raw

# Otomatik güncellemeleri ayarla
wp config set WP_AUTO_UPDATE_CORE minor --raw

Varsayılan WordPress tablosunu gizlemek için:

# XML-RPC'yi devre dışı bırak (kaba kuvvet saldırılarına karşı)
wp plugin install disable-xml-rpc --activate

Ya da bunu Nginx veya Apache konfigürasyonunda da yapabilirsiniz, plugin kullanmak zorunda değilsiniz. Ama bu konu ayrı bir yazı konusu.

WP-CLI ile Kurulum Doğrulama

Kurulumun doğru yapılıp yapılmadığını kontrol etmek için WP-CLI’ın sunduğu araçları kullanın.

# WordPress versiyonunu kontrol et
wp core version

# Veritabanı durumunu kontrol et
wp db check

# Aktif eklentileri listele
wp plugin list --status=active

# Aktif temayı göster
wp theme list --status=active

# Genel site bilgilerini görüntüle
wp option get siteurl
wp option get blogname

# Kullanıcıları listele
wp user list

Çıktılar beklediğiniz gibi görünüyorsa kurulumunuz başarıyla tamamlanmış demektir.

Yaygın Sorunlar ve Çözümleri

Dosya izni hataları: En sık karşılaşılan sorundur. WP-CLI’ı web sunucusu kullanıcısıyla çalıştırın.

“wp: command not found” hatası: WP-CLI’ın PATH’e eklenip eklenmediğini kontrol edin. /usr/local/bin/wp yolunun sistemin PATH değişkeninde olması gerekir.

Veritabanı bağlantı hatası: wp db check komutu çalıştırın. Kullanıcı adı, şifre ve veritabanı adını tekrar gözden geçirin.

PHP bellek sınırı hatası: Büyük kurulumlar veya eklenti kurulumları sırasında bellek hatası alabilirsiniz.

wp config set WP_MEMORY_LIMIT 256M
wp config set WP_MAX_MEMORY_LIMIT 512M

Locale hatası: tr_TR locale sisteminizde tanımlı olmayabilir. locale -a komutuyla mevcut locale’leri listeleyin.

Sonuç

WP-CLI, WordPress yönetimini başka bir boyuta taşıyor. Kurulum, yapılandırma, eklenti yönetimi, kullanıcı işlemleri, hepsi terminal üzerinden, hızlı ve tekrarlanabilir şekilde yapılabiliyor. Bu yazıda anlattığım adımları bir script haline getirirseniz yeni bir WordPress sitesi kurmak sizin için 2-3 dakikalık bir işe dönüşür.

Özellikle birden fazla site yöneten ajanslar, hosting firmaları ve sistem yöneticileri için WP-CLI vazgeçilmez bir araç. Tarayıcı açmaya gerek kalmadan, hatta uzak bir sunucuya SSH bağlantısıyla bile tüm WordPress işlemlerini yönetebilirsiniz.

Bir sonraki yazıda WP-CLI ile çoklu site kurulumu, yedekleme ve güncelleme süreçlerini ele alacağım. O yazıya kadar bu scripti kendi ortamınızda deneyin, kendinize özel bir kurulum scripti oluşturun ve tekrarlayan işlerden bir an önce kurtulun.

Bir yanıt yazın

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