Manual:Família de Wikis

From mediawiki.org
This page is a translated version of the page Manual:Wiki family and the translation is 20% complete.
Outdated translations are marked like this.

Em baixo, tem instruções sobre como configurar o MediaWiki para alojar mais do que uma wiki. Múltiplas wikis localizadas no mesmo servidor são chamadas de família de wikis (wiki-family) ou conjunto de wikis (wiki farm). Está disponível uma lista de conjuntos de wiki conhecida em WikiApiary .

Methods

Princípios básicos

The following steps are for running multiple wikis on same version of MediaWiki:

  1. Install the first wiki as normal. Para detalhes, consulte Manual:Guia de Instalação .
  2. Enable your web server to share your MediaWiki install with all wikis. For multiple (sub)domains, you can use listen on multiple server names. For multiple subdirectories, you could use rewrite rules, aliases, or symlinks.
  3. Add code to the top of LocalSettings.php, to detect the current wiki. For wikis by domain name:
    $wikis = [
        'example.org' => 'examplewiki',
        'one.example.org' => 'onewiki',
    ];
    if ( defined( 'MW_DB' ) ) {
        // Automatically set from --wiki option to maintenance scripts
        $wikiID = MW_DB;
    } else {
        // Use MW_DB environment variable or map the domain name
        $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. Configure settings that must differ for all wikis. For example:
    $wgCacheDirectory = "/tmp/mediawiki_cache/$wgDBname";
    $wgUploadDirectory = "$IP/images/$wgDBname";
    $wgUploadPath = "/w/images/$wgDBname";
    
  5. Configure per-wiki overrides. This should include at least $wgServer and $wgArticlePath.
    $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  ) );
    
    This could be done from a separate file, e.g.:
    # LocalSettings.php
    $wgConf->settings = require __DIR__ . '/LocalSettings_overrides.php';
    
    # LocalSettings_overrides.php
    return [
        'wgServer' => ..,
        ..,
    ];
    

To create a new wiki, create its database and add its settings first, and then run php maintenance/update.php --wiki=mywiki.

Separate settings files

Isto irá deixá-lo instalar mais do que uma wiki num único servidor, utilizando o mesmo código fonte.

  1. Install the first wiki as normal, via the web or CLI installer, which sets up your database and generates a LocalSettings.php file.
  1. After installation, rename the generated LocalSettings.php file to include the wiki ID (e.g. database name), like LocalSettings_mywiki.php.
  1. Repeat step one and two above for each wiki you wish to create.
  1. Create a new LocalSettings.php file that will load the correct one.
<?php
$wikis = [
    'example.org' => 'examplewiki',
    'one.example.org' => 'onewiki',
];
if ( defined( 'MW_DB' ) ) {
    // Automatically set from --wiki option to maintenance scripts
    $wikiID = MW_DB;
} else {
    // <span lang="en" dir="ltr" class="mw-content-ltr">Use MW_DB environment variable or map the domain name</span>
    $wikiID = $_SERVER['MW_DB'] ?? $wikis[ $_SERVER['SERVER_NAME'] ?? '' ] ?? null;
}

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

// Add any settings that should apply to all wikis below this line
// -------

If your wikis are on the same domain but under different paths (e.g. example.org/wiki1, example.org/wiki2 etc.), you can use something like this:

<?php
$wikis = [
    '/example' => 'examplewiki',
    '/w_example' => 'examplewiki',
    '/one' => 'onewiki',
    '/w_one' => 'onewiki',
];
if ( defined( 'MW_DB' ) ) {
    // Automatically set from --wiki option to maintenance scripts.
    $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.' );
}
If you use Short URL, you need to add both your $wgArticlePath and the $wgScriptPath.

Drupal-sites de estilo

This setup has the advantage of being completely transparent to users and reasonably secure in terms of the images directory.

  1. Create a base directory to contain all your MediaWiki files e.g. mkdir /home/web/mediawiki.
  2. Install MediaWiki and additional tools as usual to a version-declaring subdirectory (e.g., /home/web/mediawiki/mediawiki-1.10.0).
  3. Link the version-declaring directory to a code directory. e.g., ln -s /home/web/mediawiki/mediawiki-1.10.0 /home/web/mediawiki/code
  4. Create a sites directory to contain our images and settings: mkdir /home/web/mediawiki/sites
  5. Setup the wiki as normal from the /code directory.
  6. After successful installation, move LocalSettings.php into a sites directory that will be a match when the site is checked. For example, to capture http://example.com/mywiki, one would create the directory example.com.mywiki. e.g., mkdir /home/web/mediawiki/sites/example.com.mywiki. See the Drupal's settings.php file for more information on this.
  7. If you intend to use media files, create an images directory in your site directory. e.g., mkdir /home/web/mediawiki/sites/example.com.wiki/images. Make it writable as necessary.
  8. Place the Drupal-style LocalSettings.php file in your main directory: cp DrupalLocalSettings.php /home/web/mediawiki/code/LocalSettings.php
  9. Modify the LocalSettings.php of each subsite to point to the right places:
    1. First comment out the code relating to $IP, (lines 16-20 in 1.15.3) as this is set to the code directory by index.php.
    2. Next insert the following two lines to ensure that image files are accessible, e.g.: $wgUploadDirectory = "/home/web/mediawiki/sites/wiki.example.com/images"; and $wgUploadPath = "/images";. These need to be put somewhere after the call to DefaultSettings.php (line 25 in 1.15.3), as the variables will otherwise be reset.
    3. Make further modifications as required.
  10. Prepare your Apache 2 installation. Example site: wiki.example.com
    1. Create a link to the code directory, if required e.g. ln -s /home/web/mediawiki/code /home/web/wiki.example.com
    2. Create an appropriate VHost configuration:
<VirtualHost *:80>
    ServerAdmin me@example.com
    DocumentRoot /home/web/wiki.example.com
    ServerName wiki.example.com
    CustomLog /var/log/apache2/wiki.mysite.log common
    # Alias for the site to be accessible
      Alias /mediawiki/code /home/web/mediawiki/code
    # Alias for wiki so images work
      Alias /images /home/web/mediawiki/sites/wiki.example.com/images
    # If you want to password protect your site
    #  <Directory /home/web/wiki.example.com>
    #    AuthType Basic
    #    AuthName "My protected wiki"
    #    AuthUserFile /etc/apache2/htpasswd/users-mywiki
    #   require valid-user
    #  </Directory>
</VirtualHost>
11. If you are setting the sites up locally, update your hosts file with the site names. The site should now work.

In my case, I made another copy of the code from which to install and update my LocalSettings.php and databases. Note that $_SERVER['HTTP_HOST'] in the companion Drupal code is undefined when running maintenance scripts from the command line, so this solution does not permit the use of maintenance scripts without some modification.

Drupal Modificado-método de estilo para o Ubuntu

A simplified method for multiple wikis and multiple (or nested) subwikis on Ubuntu/Kubuntu that is loosely based on the above method can be found at:

Múltiplas wikis a partilhar recursos comuns

Se deseja ter algumas wikis em idiomas diferentes, partilhando os mesmos ficheiros mediateca em outra wiki única.

Por exemplo:

  • en.example.org - inglês
  • fr.example.org - francês
  • de.example.org - alemão
  • pool.example.org - ficheiros mediateca para todas estas wikis (como a Commons).
The above example uses the name "pool". Avoid using the name "commons" because this may conflict with the interwiki link also named commons for Wikimedia Commons.

Also avoid using the name "media" (e.g. media.example.org) as that may cause a conflict between your interwiki and the internal namespace Media: for accessing local media files, e.g. [[media:File.png]].

Tabelas da base de dados partilhada

Consulte Manual:Base de dados partilhada para instruções sobre a configuração das tabelas da base dados partilhada.

Interwiki

Agora tem de definir as Interligações entre wikis entre todas as wikis, editando as suas base de dados MySQL (se preferir, instale e utilize Extensão:Interwiki ) If the wikis are language editions, it is recommended to name the interwiki prefix after the exact language code. For example, "de" for the German wiki in your family. This way, you can connect pages about the same subject using language links.

Adding [[de:Hauptseite]] on your English "Main Page" will create a link "Deutsch" in the languages sidebar. Para mais informação, visite Help:Interwiki linking

If you have a central wiki for files, create a prefix for this as well. E.g. pool to https://pool.example.org/wiki/$1 and enable the "Forward" checkbox to recognise it as a local wiki in the same family.

Envio

Certifique-se que a pasta "images" da wiki pool é gravável.

Isto é útil para alterar "Enviar ficheiro"-Hiperligação das wikis de idioma para apontar para o site de envio poolwiki. Abra "LocalSettings.php" de cada wiki de idioma e adicione:

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

Na versão 1.17, também irá ter de definir $wgUploadMissingFileUrl para ser redirecionado para wiki pool nas hiperligações a vermelho.

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

If you want to allow uploads only for your pool wiki, you may use something like this:

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

Utilizar ficheiros partilhados

To use poolwiki's files in the languagewikis, open "LocalSettings.php" for each languagewiki and add:

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

Now you can integrate pool's files with (e.g. [[File:MyLogo.png]]) in the languagewikis.

Descrição da imagem

Em cada languagewiki, abra (como uma aministrador) a mensagem MediaWiki:Sharedupload-desc-here.

Altere o texto para qualquer coisa, como:

Este ficheiro é guardado na nossa ''pool'' de dados.
Para informação e descrição, por favor, visite a

(And note the ':' at the beginning of the line, which stops 'pool' from being included in the interwiki list at the left of the page.)

If you want to output the media-description, stored in the PoolWiki, too, add to the "LocalSettings.php" of the languagewikis:

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

Extensões da Wiki Farm

There are several MediaWiki extensions that attempt to simplify hosting of several wikis by using just one code base, however only one is currently noteworthy:

Ver também

  • Central ID — the mechanism by which user accounts can have an extra 'central' identifier.

Referências