As @ tom-j-Nowell OP yorumunda belirterek, çoklu bu kolaylaştırabilir.
Performans ve güvenlik gerçekten çok bölgeli bir sorun değildir (en azından normal kurulumlardan daha fazla değildir), ancak çok sitenin bazen bir sorun olabileceğini kabul ediyorum, çünkü çok sayıda eklenti (özel veya 3. taraf) olmayabilir çok sitede düzgün çalışabilir veya belki de farklı web sitelerinin kullanıcılarını tamamen ayrı tutmak isteyebilirsiniz.
Bunu başarmak istediğinizin o kadar da zor olmadığını söyledi.
Kurulum arasında değiştirmeniz gereken şey:
- eklentiler klasörü
- temalar klasörü
- veritabanı ayarları
Bu yapılandırma sabitleriwp-config.php
kullanarak yapılabilir tek sorun URL onları dayalı nasıl değiştirilir.
En 'SERVER_NAME'
azından web sunucunuz doğru yapılandırılmışsa, sunucu değişkeni sizin için çalışmalıdır.
Örneğin /conf
, aynı wp-config.php
dosya ve /WordPress
klasör düzeyinde adlandırılmış bir klasör oluşturabilirsiniz .
Bu klasöre bazı dosyalar ekleyebilirsiniz:
branch1.domain.com.conf
branch2.domain.com.conf
branch3.domain.com.conf
her birinin içinde şöyle bir şey yapabilirsiniz
$branch = 'branch1';
$base_dir = dirname( __DIR__) . "/{$branch}";
defined( 'WP_CONTENT_DIR' ) or define( 'WP_CONTENT_DIR', $base_dir );
// be sure WP understand URLs correctly
defined( 'DB_HOME' ) or define( 'DB_HOME', "{$branch}.example.com" );
defined('WP_SITEURL') or define('WP_SITEURL', "{$branch}.example.com/WordPress");
// adjust DB settings as needed
defined( 'DB_NAME' ) or define( 'DB_NAME', $branch );
defined( 'DB_USER' ) or define( 'DB_USER', $branch );
defined( 'DB_PASSWORD' ) or define( 'DB_PASSWORD', '********' );
unset( $base_dir, $branch );
Bu, her bir yapılandırma dosyasında "dal" a göre değişecektir.
Bundan sonra, benzersizinizde şöyle bir wp-config.php
şey yapabilirsiniz:
$defaults_conf = [
'WP_CONTENT_DIR' => __DIR__ . '/branch1',
'DB_HOST' => 'localhost',
'DB_NAME' => 'branch1',
'DB_USER' => 'branch1',
'DB_PASSWORD' => '********',
];
$host = getenv('WORDPRESS_HOST') ?: $_SERVER['SERVER_NAME'];
if ($host && file_exists(__DIR__."/conf/{$host}.conf")) {
require __DIR__."/conf/{$host}.conf";
}
array_walk($defaults_conf, function($value, $name) {
defined($name) or define($name, $value);
});
unset($defaults_conf, $host);
Yukarıda belirtilenler, sunucu adına bağlı olarak (bulunursa) farklı bir yapılandırma dosyası yüklediğiniz ve yapılandırma dosyası varsayılan yapılandırmanın herhangi birini tanımlamıyorsa (veya dosya bulunamazsa) yapılandırmanın varsayılan olarak ayarlanmış olmasıdır.
Güzel bir şey, yeni bir şube eklemek için, sadece şube klasörünü oluşturmanız .conf
ve yeni şube alanından sonra bir ad vermeniz gerekir ve işiniz bitti, WP tarafında değişecek bir şey yok.
Çizgi:
$host = getenv('WORDPRESS_HOST') ?: $_SERVER['SERVER_NAME'];
alan adını nereden alacağım. İlk seçenek olarak, bir ortam değişkeni kullanıyorum, çünkü $_SERVER['SERVER_NAME']
WP CLI kullanılırken böyle bir komut satırı bağlamında çalışmaz. Bu gibi durumlarda, WP'yi belirli bir daldaki ayarları kullanmaya zorlamak için bir ortam değişkeni ayarlayabilirsiniz.
Şubeye özgü yapılandırma dosyalarında değişiklik yaptığımı WP_CONTENT_DIR
ve bunun eklentiler ve temalar klasörünü ilgili /plugins
ve /themes
şube alt klasörlerine otomatik olarak ayarlayacağını unutmayın .
Burada olası bir sorun, /uploads
klasörü paylaşmak istiyorsanız (dosyaların karşıya yüklendiği yer).
Varsayılan olarak, bu klasör bir içerik dizininin alt klasörüdür, bu nedenle yukarıdaki iş akışını kullanmak /uploads
her dal kök klasörünün bir alt klasörü olacaktır.
Bu sizin için bir sorun değilse, sadece onunla gitmekten başka, en kolay çözüm /uploads
her şube klasöründe paylaşmak istediğiniz gerçek yüklemeler klasörüne bir sembolik bağlantı yapmak olacaktır .