Composer Kullanarak WordPress Nasıl Kurulur: Adım Adım Kurulum Kılavuzu

Yayınlanan: 2023-02-28

Giriş: Neden Besteci tabanlı WordPress?

Diğer tüm uygulamalarda olduğu gibi, WordPress siteniz, kodunuz ve bağımlılıkları için tekrarlanabilir derlemeler ve taahhüt edilebilir güncellemeler sağlayabildiğiniz zaman en güvenli hale gelir. Altyapınız, hangi PHP ve MariaDB sürümünü kullanmak istediğinizi belirten bir dizi yapılandırma dosyası aracılığıyla işlenir. Bu, yeni özellikler geliştirirken projenizin tekrar üretilebilir kalmasını sağlamanın en iyi yoludur.

WordPress çekirdeği, artı temaları ve eklentileri ideal olarak aynı şekilde çalışmalıdır, ancak çoğu zaman durum böyle değildir. WordPress yönetim paneli, güncel olmadıklarında veya çalışma zamanında yapılandırma değişiklikleri yapmak için dosya sistemine yazma erişimi beklediklerinde tüm bu bileşenleri güncellemek için tek tıklamalı düğmeler sağlar. Ancak, bu şekilde gelişmenin sonuçları vardır.

İlk olarak, çalışma zamanında dosya sistemine her zaman yazma erişiminiz olmayacak. Bu nedenle, güncellemeler ve yapılandırma değişiklikleri için bu mekanizmaya bağlı olmak, birçok barındırma çözümü için tamamen kısıtlanmıştır. Öte yandan, şu anda barındırdığınız çalışma zamanında yazma erişiminiz varsa, yeni bir modül veya tema yüklemek önemsiz olmayan bir güvenlik riski sunar (kaynak bilinmediğinde).

Ancak, belki de en önemlisi, WordPress'i çalışma zamanında güncellemek, sitenizin durumunu deponuzdaki koddan ayırır. Projenin yerel klonunda yeni bir özellik üzerinde çalışan bir iş arkadaşı, canlı sitenin arkasında pekala tam bir sürüm olabilir. Bu iş akışının bir sonucu olarak, bilinmeyen (ve denenmemiş) sonuçları olan hatalar ortaya çıkarabilirsiniz.

Composer kullanmanın avantajları

Yukarıdaki gerçekler göz önüne alındığında, WordPress sitenizi Composer ile yönetmenin net avantajları vardır. İlk olarak, bağımlılıklarınızı taahhüt edilmiş bir dosyada (composer.lock) açıkça tanımlamanıza izin verir. Bu kilit dosyası, bağımlılıklarınız yüklendiğinde daha açıklayıcı bir bağımlılık kısıtlamaları listesinden (composer.json) oluşturulur ve projenizin taahhüt geçmişinin bir parçası haline gelir. O andan itibaren, herhangi bir yeni şube, aynı bağımlılık koleksiyonundan kesin kesinleştirme karmasına kadar çalışacaktır. Bu noktada, projeye kimin katkıda bulunduğu ve hatta nerede konuşlandırıldığı önemli değildir - her yerdeki herkes için aynı koddur.

Besteci, deponuza çok sayıda harici kod kaydetme gereksinimini de ortadan kaldırır. WordPress söz konusu olduğunda, Composer'ı kullanmamak genellikle bir temanın tüm kodunu ve hatta WordPress çekirdeğini ve eklentilerinin kendisini kendi projenize işlemenizi gerektirir. Depoyu gereksiz yere büyük ve klonlamayı yavaş hale getirmenin yanı sıra, bu kopyaları güncellemek, kimsenin uğraşması gerekmeyen bir hokkabazlık eylemi haline gelir.

Composer ile projenize bağımlılıklar ekleyebilir ve güncelleyebilir ve ardından bunların tam sürümlerini kilitleyerek her yeni dalın aynı güncellemeyi almasını sağlayabilirsiniz. Güncelleme, dağıtılan sitede çalışma zamanında gerçekleştirilmiş olsaydı, önce git pull'u hatırlamanız gerekirdi.

Composer ile WordPress çekirdeğini yükleme

Aynı şekilde, Composer'ı kullanmak, bir bağımlılık olarak ekleyebileceğiniz için tüm WordPress'i deponuza kaydetmenizi gereksiz kılar. Konfigürasyon ve proje yapınız için ne kadar varsayımda bulunmak istediğinize bağlı olarak, bunu yapmanın birkaç yolu vardır (Bedrock gibi). En basiti, WordPress yapılarınıza bir yükleyici eklemek için John Bloch Composer çatalını kullanır:

 $ besteci johnpbloch/wordpress-core-installer gerektirir
$ besteci johnpbloch/wordpress-core gerektirir

Yukarıdaki komut bir composer.json dosyası oluşturacak ve WordPress çekirdeğini WordPress dizinine yükleyecektir. besteci.json şöyle görünecek

 {
    "gerekmek": {
        "johnpbloch/wordpress-core-installer": "^2.0",
        "johnpbloch/wordpress-core": "^6.1"
    },
    "yapılandırma": {
        "eklentilere izin ver": {
            "johnpbloch/wordpress-core-installer": doğru
        }
    }
}

WordPress klasöründe WordPress çekirdeğimiz var. Ancak web sunucusunu kök dizine yönlendirebilmemiz için index.php'yi WordPress dizininin dışına kopyalamamız gerekiyor.

WordPress'i Composer ile tamamen yönetmek için, varsayılan olan WordPress/wp-content yerine wp-content için farklı bir dizin kullanmamız gerekir.

Projenin kökünde wp-content adlı yeni bir dizin oluşturalım.

Bir kez index.php dosyasını WordPress klasöründen kopyalayın. WordPress dizinimizin bulunduğu wp-blog-header.php dosyasının konumunu değiştirmemiz gerekiyor.

Değişiklikten sonra, index.php şöyle görünecek

 <?php 
define('WP_USE_THEMES', doğru);
require( dirname( __FILE__ ) . '/wordpress/wp-blog-header.php' );

Kök dizinde aşağıdaki içeriklerle bir .htaccess dosyası oluşturmamız gerekiyor:

 # WordPress'e BAŞLAYIN
<IfModule mod_rewrite.c>
Yeniden Yazma Motoru Açık
Tabanı Yeniden Yaz /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Kuralı Yeniden Yaz. /index.php [L]
</IfModule>
# WordPress'i SONLANDIRIN

Devam edelim ve örnek wp-config.php dosyasını kopyalayalım ve ardından aşağıdaki kodu ekleyelim:

 $alan = 'alanim.com;
define('WP_SITEURL', "https://{$domain}/wordpress");
define('WP_HOME',"https://{$domain}");
$httpHost = isset($_SERVER['HTTPS_HOST'])? $_SERVER['HTTPS_HOST'] : $etki alanı;
define( 'WP_CONTENT_DIR', dirname( __FILE__ ) . '/wp-content' );
define( 'WP_CONTENT_URL', 'https://' . $httpHost . '/wp-content' );
/** WordPress dizinine giden mutlak yol. */
if ( !tanımlı('ABSPATH') ) {
    define('ABSPATH', dirname(__FILE__) . '/wordpress');
}

WordPress çekirdeği /WordPress içinde olduğu için ABSPATH içine WordPress ekledik
wp-config.php dosyası hassas veriler içerdiğinden; bir .gitignore dosyası oluşturarak depomuza kaydetmeyeceğiz:

 /wp-config.php
/wordpress/
/wp-içerik/
/SATICI/

WordPress, wp-content ve satıcı dizinlerinin de yoksayılması gerekir, böylece onları .gitignore dosyasına da ekleyeceğiz.

Not: wp-içeriğiniz için farklı bir adlandırma kuralı eklemek istemeniz durumunda wp-içerik dizinini değiştirmeniz gerekir.

Proje kök dizinimiz şöyle görünmelidir.

 .git
.gitignore
besteci.lock
besteci.json
SATICI
wp-config.php
index.php
wordpress

Bir veritabanı oluşturmanız ve wp-config.php'deki ayrıntıları değiştirmeniz gerekir. WordPress web siteniz “mydomain.com” olarak adlandırılacak ve WordPress arka ucuna mydomain.com/wordpress/wp-admin adresinden erişilebilecektir.

WordPress Deposundan Eklentiler ve Temalar Ekleme

Varsayılan olarak, Composer yalnızca packagist.org deposuna bakacaktır. Ancak WordPress eklentileri ve temaları içermez.

WordPress eklentilerini ve temalarını çekebilmek için, wpackagist.org deposunda Composer'ı yönlendirmeniz gerekir. Bunu, bu yapılandırma yığınını besteci.json dosyanıza ekleyerek yaparsınız:

 "depolar": [
  {
    "tip": "besteci",
    "url": "https://wpackagist.org",
    "sadece": [
      "wpackagist eklentisi/*",
      "wpackagist-teması/*"
    ]
  }
],

Ayrıca Composer'a eklentileri ve temaları nereye koyacağını söylememiz gerekiyor. Bu, besteci.json'a biraz daha fazla yapılandırma eklemeyi içerir:

 "ekstra": {
        "yükleyici-yolları": {
            "wp-content/mu-plugins/{$name}/": [
                "yazın: wordpress-muplugin"
            ],
           "wp-content/plugins/{$name}/": [
                "tür: wordpress-eklentisi"
            ],
           "wp-content/themes/{$name}/": [
                "tür: wordpress teması"
            ]
        }
    }

Bunu yaptıktan sonra, WordPress'i kurarken yaptığımız gibi, besteci gerekli komutunu kullanarak resmi depolardan herhangi bir eklenti veya tema yükleyebilirsiniz.

# Bir eklenti kurmak için şu formatı kullanın:

 besteci "wpackagist-plugin/:" gerektirir

# Bir tema yüklemek için şu formatı kullanın:

 besteci "wpackagist-theme/:" gerektirir

Sürüm kısıtlamaları karmaşıktır, ancak muhtemelen hatırlanması gereken en basit biçim bir * joker karakter kullanmaktır. 2.x sürümünü kullanarak WP Migrate eklentimizin ücretsiz sürümünü yüklemek için şunları çalıştırırsınız:

composer require "wpackagist-plugin/wp-migrate-db:2.*"

Güncellemelerinizin her zaman en son sürümü almasını istiyorsanız, sürüm kısıtlaması olarak bir * kullanabilirsiniz:

composer require "wpackagist-plugin/wp-migrate-db:*"

Böyle bir komutu ilk kez çalıştırdığınızda, kodu yürütmek için "besteci/kurulumculara" güvenmek isteyip istemediğiniz sorulabilir. Bunu yapmak güvenlidir, ancak bunun Composer'ın bilgisayarınızda kod çalıştırmasına izin verdiğini unutmayın.

Her şey yolundaysa, eklentiyi yüklemelisiniz (ancak etkinleştirmemelisiniz). Bu noktada değişikliklerinizi Git'e kaydetmenizi de tavsiye ederim.

Özel veya Üçüncü Taraf Eklentiler ve Temalar Ekleme

Depodan eklentiler ve temalar istiyorsanız, bunların hepsi iyi. Peki ya wordpress.org deposunda olmayan üçüncü taraf eklentileri veya kendi özel kodunuz eklemek isterseniz? WordPress dizini Git'te değil, öyleyse kendi şeylerinizi nasıl kontrol edersiniz?

Bazı tema ve eklenti yazarları, eklentileri için özel depoları destekler.

Bazı temaların ve eklentilerin, örneğin ücretli eklentiler gibi eklentileri için herhangi bir havuz kullanmasına izin verilmez.

Ancak bu geçerli değilse, buradaki püf nokta, .gitignore dosyasını kullanarak belirli dizinleri seçici olarak yoksaymayı kaldırmak ve bu özel eklentileri ve temaları besteci.json'a eklemektir.

Bu eklentileri ayrıca besteci.json'dan yüklemek için başka bir dizine koyabiliriz.

.gitignore'daki plugins klasörünü yok saydığımız için dist adında başka bir klasör oluşturmamız gerekiyor,

Dağıtımda ücretli ve özel eklentilerimiz olabilir ve bunları Composer'dan kurabiliriz.

  • uzak/
    • eklentiler/
    • temalar/
    • mu-eklentileri/

Özel eklentilerimizi ve temalarımızı uygun klasöre kopyalamamız gerekiyor.

Dist/plugins'e eklenen her eklenti için besteci.json oluşturmamız gerekiyor.

Şu anda, ücretli olan gelişmiş-özel-alanlar-pro'ya sahibiz. Ayrıca, tek tıklamayla kurulum ve dağıtımları otomatikleştirmek için bu eklentiyi besteci aracılığıyla eklemek istiyoruz.

Bu eklentiyi yazar web sitesi portalından indirmeli ve bu eklentiyi dist/plugins/advanced-custom-fields-pro klasörüne çıkarmalıyız. Ve aynı klasörde aşağıdaki içerikle besteci.json oluşturun,

 {
   "name": "özel eklentiler/acf-pro",

   "description": "Gelişmiş Özel Alanlar PRO",

   "versiyon": "5.12.2",

   "type": "wordpress eklentisi",

   "gerekmek": {

       "besteci/yükleyiciler": "^1.0",
       "johnpbloch/wordpress-core": ">=5.4"
   }


}

Sürümü ve adı özel öneklerle buraya ekleyebiliriz. Ve biz kurarken bu eklentiyi çağırmak için kök besteci.json dosyasına bazı kodlar ekleyin.

“Depolar”: bölümünde en son aşağıdaki kodu ekleyin,

 "depolar": [
{
     "tür": "yol",

     "url": "dist/eklentiler/*",

     "seçenekler": {

       "sembolik bağlantı": yanlış

     }

Depolar bölümünde başka girişleriniz de var. Bu eklentiyi yüklemek için iki yolumuz var, ilk önce sürümle birlikte eklenti adını eklemek için

 "gerekmek": {
     "özel eklentiler/acf-pro": ">=5.12.2"
}

Veya aşağıdaki komutu çalıştırın, eklentiyi yükleyecek ve yukarıdaki girişi besteci.json dosyasına ekleyecektir.

 $ besteci özel eklentiler/acf-pro gerektirir

Aynı şekilde temaları ve mu eklentilerini de kurabiliriz.

Tema için tema klasörü konumunu eklememiz gerekiyor,

 "depolar": [
{
     "tür": "yol",

     "url": "dist/temalar/*",

     "seçenekler": {

       "sembolik bağlantı": yanlış

     }

Özel temanıza besteci.json'u ad ve sürüm ayrıntılarıyla eklemeniz gerekir. Bu adı kullanarak, besteci gerekli komutunu kullanarak temayı kurabiliriz.

Sonuç olarak

Composer'ı kullanmak, WordPress'inizin güvenli, güncel ve yeniden üretilebilir kalmasını sağlamak için en etkili yaklaşımdır. Composer, geliştiricilerin projelerine bağımlılıkları kolayca ekleyip güncellemelerine ve her yeni şubenin aynı kodla çalışmasını sağlamak için tam sürümlerini kilitlemelerine olanak tanır.

Bu avantajlarla Composer, WordPress projelerini yönetmek, tekrarlanabilir derlemeler ve taahhüt edilebilir güncellemeler sağlamak için mükemmel bir seçimdir.

Composer'ı kullanmaya başlamanın biraz bunaltıcı olabileceğini anlıyoruz. Herhangi bir sorunuz varsa, bize ulaşmaktan çekinmeyin. WordPress deneyiminizden en iyi şekilde yararlanmanıza yardımcı olmak için buradayız.

Referanslar:

    • https://docs.platform.sh/guides/wordpress/composer.html
    • https://deliciousbrains.com/storing-wordpress-in-git/
    • https://time2hack.com/composer-wordpress-deployment/