Manual:Viki çiftliği

From mediawiki.org
This page is a translated version of the page Manual:Wiki family and the translation is 100% complete.

Aşağıda, MediaWiki'yi birden fazla viki barındıracak şekilde nasıl kuracağınıza ilişkin talimatlar bulunmaktadır. Aynı sunucuda bulunan birden çok wiki, viki-aile veya viki çiftliği olarak adlandırılır. Bilinen viki çiftliklerinin listesi WikiApiary sayfasında mevcuttur.

Yöntemler

Temel ilkeler

Bir viki ailesinin en yaygın yapılandırması, MediaWiki'nin tek bir sürümünü çalıştırır. Bu senaryoda aşağıdaki genel adımlar gereklidir:

  1. Normal bir MediaWiki sitesi kurun ve ondan bir veritabanı şablonu oluşturun. Bu ya tamamen boş olabilir (yani herhangi bir tabloda satır yok) ya da ailenin herhangi bir yeni üyesinde istediğiniz başlangıç ​​sayfaları, kullanıcılar, vikiarası bağlantıları vb. olabilir. Ayrıntılar için Manual:Kurulum kılavuzu sayfasına bakın.
  2. Web sunucunuzu, trafiği birden çok yerden tek bir MediaWiki kurulumuna yönlendirecek şekilde ayarlayın. Bu, birden çok etki alanı, alt etki alanı veya alt dizin için olabilir ve sembolik bağlantılar, takma adlar, URL yeniden yazma veya diğer mekanizmalarla yapılabilir.
  3. Geçerli vikiyi algılamak için kodu LocalSettings.php üstüne ekleyin. Alan adına göre vikiler için:
    $wikis = [
        'example.org' => 'examplewiki',
        'one.example.org' => 'onewiki',
    ];
    if ( defined( 'MW_DB' ) ) {
        // --wiki seçeneğinden bakım betiklerine otomatik olarak ayarlayın
        $wikiID = MW_DB;
    } else {
        // MW_DB ortam değişkeni kullanın veya alan adını eşleyin
        $wikiID = $_SERVER['MW_DB'] ?? $wikis[ $_SERVER['SERVER_NAME'] ?? '' ] ?? null;
        if ( !$wikiID ) {
            die( 'Unknown wiki.' );
        }
    }
    
    $wgLocalDatabases = $wgConf->wikis = array_values( $wikis );
    $wgDBname = $wikiID;
    $wgDBuser = 'mediawiki';
    
  4. Tüm vikiler için farklı olması gereken ayarları yapılandırın. Örneğin:
    $wgCacheDirectory = "/tmp/mediawiki_cache/$wgDBname";
    $wgUploadDirectory = "$IP/images/$wgDBname";
    $wgUploadPath = "/w/images/$wgDBname";
    
  5. Viki başına geçersiz kılmaları yapılandırın. Bu, en az $wgServer ve $wgArticlePath içermelidir.
    $wgConf->settings = [
        'wgServer' => [
            'examplewiki' => 'https://example.org',
            'onewiki' => 'https://one.example.org',
        ],
        'wgArticlePath' => [
            'default' => '/wiki',
        ],
        'wgSitename' => [
            'default' => 'Example',
            'onewiki' => 'One',
        ],
        'wgLogo' => [
            'default' => '/images/examplewiki/Example_logo.png',
        ],
        'wgLanguageCode' => [
            'default' => 'en',
            'onewiki' => 'pt',
        ],
    ];
    extract( $wgConf->getAll( $wgDBname  ) );
    
    Bu, ayrı bir dosyadan yapılabilir, örneğin:
    # LocalSettings.php
    $wgConf->settings = require __DIR__ . '/LocalSettings_overrides.php';
    
    # LocalSettings_overrides.php
    return [
        'wgServer' => ..,
        ..,
    ];
    

Yeni bir viki oluşturmak için, veritabanını oluşturun ve önce ayarlarını ekleyin ve ardından php maintenance/update.php --wiki=mywiki çalıştırın.

Ayrı ayar dosyaları

Bu, aynı kaynak kodunu kullanarak tek bir sunucuya birden fazla viki kurmanıza izin verecektir.

  1. İlk vikiyi web veya veritabanınızı ayarlayan ve LocalSettings.php dosyası oluşturan CLI yükleyici aracılığıyla normal şekilde yükleyin.
  2. Kurulumdan sonra, oluşturulan LocalSettings.php dosyasını, LocalSettings_mywiki.php gibi viki kimliğini (ör. veritabanı adı) içerecek şekilde yeniden adlandırın.
  3. Oluşturmak istediğiniz her wiki için yukarıdaki birinci ve ikinci adımı tekrarlayın.
  4. Doğru olanı yükleyecek yeni bir LocalSettings.php dosyası oluşturun.
<?php
$wikis = [
    'example.org' => 'examplewiki',
    'one.example.org' => 'onewiki',
];
if ( defined( 'MW_DB' ) ) {
    // --wiki seçeneğinden bakım betiklerine otomatik olarak ayarlayın
    $wikiID = MW_DB;
} else {
    // MW_DB ortam değişkeni kullanın veya alan adını eşleyin
    $wikiID = $_SERVER['MW_DB'] ?? $wikis[ $_SERVER['SERVER_NAME'] ?? '' ] ?? null;
}

if ( $wikiID ) {
    require_once "LocalSettings_$wikiID.php";
} else {
    die( 'Unknown wiki.' );
}

// Bu satırın altındaki tüm vikilere uygulanması gereken ayarları ekleyin
// -------

Vikileriniz aynı etki alanında ancak farklı yollar altındaysa (ör. example.org/wiki1, example.org/wiki2 vb.), şöyle bir şey kullanabilirsiniz:

<?php
$wikis = [
    '/example' => 'examplewiki',
    '/w_example' => 'examplewiki',
    '/one' => 'onewiki',
    '/w_one' => 'onewiki',
];
if ( defined( 'MW_DB' ) ) {
    // --wiki seçeneğinden bakım betiğine otomatik olarak ayarlayın
    $wikiID = MW_DB;
} else {
    $path = explode( '/', $_SERVER['REQUEST_URI'] ? '', 3 )[1] ?? '';
    $wikiID = $_SERVER['MW_DB'] ?? $wikis[ $path ] ?? null;
}

if ( $wikiID ) {
    require_once "LocalSettings_$wikiID.php";
} else {
    die( 'Unknown wiki.' );
}
Kısa URL kullanıyorsanız, hem $wgArticlePath hem de $wgScriptPath eklemeniz gerekir.

Drupal-stil siteleri

Bu kurulum, kullanıcılara tamamen şeffaf olma ve images dizini açısından makul ölçüde güvenli olma avantajına sahiptir.

  1. Tüm MediaWiki dosyalarınızı ör. mkdir /home/web/mediawiki içerecek şekilde bir temel dizin oluşturun.
  2. MediaWiki'yi ve ek araçları her zamanki gibi sürüm bildiren bir alt dizine yükleyin (örn., /home/web/mediawiki/mediawiki-1.10.0).
  3. Sürüm bildiren dizini bir kod dizinine bağlayın. örn., ln -s /home/web/mediawiki/mediawiki-1.10.0 /home/web/mediawiki/code
  4. Resimlerimizi ve ayarlarımızı içerecek bir sites dizini oluşturun: mkdir /home/web/mediawiki/sites
  5. Vikiyi /code dizininden normal şekilde kurun.
  6. Başarılı kurulumdan sonra, LocalSettings.php dosyasını site kontrol edildiğinde eşleşecek bir siteler dizinine taşıyın. Örneğin, http://example.com/mywiki sitesini yakalamak için example.com.mywiki dizini oluşturulur. örn., mkdir /home/web/mediawiki/sites/example.com.mywiki. Bununla ilgili daha fazla bilgi için Drupal'ın settings.php dosyasına bakın.
  7. Medya dosyalarını kullanmayı düşünüyorsanız, site dizininizde bir images dizini oluşturun. örn., mkdir /home/web/mediawiki/sites/example.com.wiki/images. Gerektiğinde yazılabilir hâle getirin.
  8. Drupal-stil LocalSettings.php dosyasını ana dizininize yerleştirin: cp DrupalLocalSettings.php /home/web/mediawiki/code/LocalSettings.php
  9. Doğru yerleri işaret etmek için her alt sitenin LocalSettings.php dosyasını değiştirin:
    1. İlk önce $IP ile ilgili kodu yorumlayın, (1.15.3'te 16-20 satırlar) çünkü bu, index.php tarafından code dizinine ayarlanmıştır.
    2. Ardından, resim dosyalarının erişilebilir olduğundan emin olmak için şu iki satırı ekleyin, örn.: $wgUploadDirectory = "/home/web/mediawiki/sites/wiki.example.com/images"; ve $wgUploadPath = "/images";. Değişkenler aksi takdirde sıfırlanacağından, bunların DefaultSettings.php (1.15.3'te satır 25) çağrısından sonra bir yere konulması gerekir.
    3. Gerektiğinde daha fazla değişiklik yapın.
  10. Apache 2 kurulumunuzu hazırlayın. Örnek site: wiki.example.com
    1. Gerekirse code dizinine bir bağlantı oluşturun, örn. ln -s /home/web/mediawiki/code /home/web/wiki.example.com
    2. Uygun bir VHost yapılandırması oluşturun:
<VirtualHost *:80>
    ServerAdmin me@example.com
    DocumentRoot /home/web/wiki.example.com
    ServerName wiki.example.com
    CustomLog /var/log/apache2/wiki.mysite.log common
    # Sitenin erişilebilir olması için takma ad
      Alias /mediawiki/code /home/web/mediawiki/code
    # Resimlerin çalışması için viki takma adı
      Alias /images /home/web/mediawiki/sites/wiki.example.com/images
    # Sitenizi parola ile korumak istiyorsanız
    #  <Directory /home/web/wiki.example.com>
    #    AuthType Basic
    #    AuthName "Koruma altındaki vikim"
    #    AuthUserFile /etc/apache2/htpasswd/users-mywiki
    #   require valid-user
    #  </Directory>
</VirtualHost>
11. Siteleri yerel olarak kuruyorsanız, hosts dosyanızı site adlarıyla güncelleyin. Site şimdi çalışmalıdır.

Benim durumumda, LocalSettings.php ve veritabanlarımı yüklemek ve güncellemek için kodun başka bir kopyasını çıkardım. Yardımcı Drupal kodundaki $_SERVER['HTTP_HOST'] ögesinin, komut satırından bakım betikleri çalıştırırken tanımsız olduğunu unutmayın, bu nedenle bu çözüm, bazı değişiklikler yapılmadan bakım betiklerinin kullanılmasına izin vermez.

Ubuntu için değiştirilmiş Drupal-stil yöntemi

Ubuntu/Kubuntu'da birden çok viki ve birden çok (veya iç içe geçmiş) alt viki için yukarıdaki yöntemi temel alan basitleştirilmiş bir yöntem şu adreste bulunabilir:

Ortak kaynakları paylaşan birden fazla viki

Farklı dillerde bazı vikilere sahip olmak, aynı medya dosyalarını başka bir tek vikide paylaşmak istiyorsunuz.

Örneğin:

  • en.example.org - İngilizce
  • fr.example.org - Fransızca
  • de.example.org - Almanca
  • pool.example.org - Tüm vikiler için paylaşılan medya dosyaları.
Yukarıdaki örnek "pool" adını kullanır. "commons" adını kullanmaktan kaçının, çünkü vikiarası bağlantı için Wikimedia Commons için commons olarak da adlandırılan ile çakışabilir. Ayrıca, vikiarası bağlantı ile yerel medya dosyalarına erişim için dahili ad alanı Media: arasında bir çakışmaya neden olabileceğinden, "media" adını (örneğin media.example.org) kullanmaktan kaçının, ör. [[media:File.png]].

Paylaşılan veritabanı tabloları

Paylaşılan veritabanı tablolarının ayarlanmasıyla ilgili talimatlar için Manual:Paylaşılan veritabanı sayfasına bakın.

Vikiarası

Extension:Interwiki kullanarak tüm vikiler arasında vikiarası bağlantıları oluşturabilirsiniz. Vikiler dil sürümleriyse, vikiarası önekini tam dil kodundan sonra adlandırmanız önerilir. Örneğin, ailenizdeki Almanca viki için "de". Bu şekilde, aynı konuyla ilgili sayfaları dil bağlantılarını kullanarak bağlayabilirsiniz.

İngilizce "Main Page" sayfanıza [[de:Hauptseite]] eklemek, diller kenar çubuğunda bir "Deutsch" bağlantısı oluşturacaktır. Daha fazla bilgi için Help:Interwiki linking sayfasına ziyaret edin

Dosyalar için merkezi bir vikiniz varsa, bunun için de bir önek oluşturun. Örn. aynı ailede yerel bir wiki olarak tanımak için pool ile https://pool.example.org/wiki/$1 ve "İleri" onay kutusunu etkinleştirin.

Yükleme

Pool-viki'nin "images" klasörünün yazılabilir olduğundan emin olun.

Dil vikilerinin "Dosya yükle" bağlantısını, poolwiki'nin yükleme sitesine işaret edecek şekilde değiştirmek yararlıdır. Her dil vikisinin "LocalSettings.php" dosyasını açın ve şunu ekleyin:

$wgUploadNavigationUrl = "https://pool.example.org/index.php/Special:Upload";

1.17'de ayrıca $wgUploadMissingFileUrl ögesini kırmızı bağlantılarda pool-viki'ye yönlendirilecek şekilde ayarlamanız gerekir.

$wgUploadMissingFileUrl= "https://pool.example.org/index.php/Special:Upload";

Yalnızca havuz vikiniz için yüklemelere izin vermek istiyorsanız, şöyle bir şey kullanabilirsiniz:

if ( $wgDBname === 'pool' ) {
	$wgEnableUploads = true;
} else {
	$wgEnableUploads = false;
}

Paylaşılan dosyaları kullanın

Poolwiki'nin dosyalarını dil vikilerinde kullanmak için, her dil viki için "LocalSettings.php" dosyasını açın ve şunu ekleyin:

$wgUseSharedUploads = true;
$wgSharedUploadPath = 'https://pool.example.org/images';
$wgSharedUploadDirectory = '/(LOCALPATH)/POOL-FOLDER/images/';
$wgHashedSharedUploadDirectory = true;

Artık deponuzun dosyalarını (örneğin, [[File:MyLogo.png]]) ile dil vikilerinde entegre edebilirsiniz.

Resim açıklaması

Her dil vikisinde (hizmetli olarak) MediaWiki:Sharedupload-desc-here mesajını açın.

Metni şöyle bir şeyle değiştirin:

Bu dosya veri depomuzda saklanır.
Bilgi ve açıklama için lütfen [[:pool:File:{{PAGENAME}}|buradaki açıklama]] sayfasını ziyaret edin.

(Ve satırın başındaki ':' işaretine dikkat edin, bu 'pool' sitesinin sayfanın solundaki vikiarası listesine eklenmesini engeller.)

PoolWiki'de de saklanan medya açıklamasının çıkışını almak istiyorsanız, dil vikilerinin "LocalSettings.php" dosyasına ekleyin:

$wgFetchCommonsDescriptions = true;
$wgSharedUploadDBname = 'pool';  # DB-Name of PoolWiki
$wgSharedUploadDBprefix = 'wiki_'; # Table name prefix for PoolWiki
$wgRepositoryBaseUrl = "https://pool.example.org/index.php/Image:";

Viki Çiftliği Uzantıları

Yalnızca bir kod tabanı kullanarak birkaç vikinin barındırılmasını basitleştirmeye çalışan birkaç MediaWiki uzantısı vardır, ancak şu anda yalnızca bir tanesi dikkate değerdir:

Ayrıca bakınız

Kaynakça