通过虚拟主机(Apache)设置Wiki服务器场

时间:2019-03-13 21:25:41

标签: apache mediawiki virtualhost

我当前在标准Apache文件夹(即/ var / www / html)中运行Mediawiki。 现在,我被要求制作Mediawiki多语言,这可以通过创建Wiki场来实现,方法是通过虚拟主机在不同子域上设置技术上各个Wiki,然后通过Mediawiki扩展将它们连接起来。

尽管我只能让它在一定程度上起作用,但我最近尝试过尝试虚拟主机。也就是说,我设置并通过SSH启用了两个VH,但是加载了de.example.com和en.example.com之后,我只得到了两个404。

因此,在崩溃之前,我只是想问一下我的具体问题:

我想将位于/var/www/html/的Mediawiki的当前安装移至/var/www/html/de/,并将相同的安装复制到/var/www/html/en/(以便以后进行编辑,而不必重新安装)再次)。

然后,我希望de.example.com指向/var/www/html/de/,en.example.com指向/var/www/html/en/

此外,example.com应该链接到de.example.com

由于我目前对如何正确实现这一目标感到困惑,因此,我真的很感谢您提供针对此特定问题的快速具体指南(也就是说,从某种意义上说,这使我重回正轨?)。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

没有使用MediaWiki配置Wiki服务器场的“一种正确方法”。但是,https://www.mediawiki.org/wiki/Manual:Wiki_family中记录了许多不同的解决方案。

对于小型Wiki农场,类似Manual:Wiki_family中的"Giant switch statement"是一种合理的开始方式。该技术利用了以下事实:MediaWiki在处理每个请求的早期就处理了MediaWiki部署目录的根目录中的LocalSettings.php文件,并且该文件可以基于 Host:标头或在请求中找到的其他信息。

要使用此方法,您需要执行以下操作:

  1. 将MediaWiki文件上传到Web服务器上的Web文件夹(例如/var/www/html/)。原来的问题已经做到了。
  2. 照常设置初始Wiki。有关详细信息,请参见mediawiki.org上的Manual:Installation guide。原来的问题也已经做到了。
  3. 成功安装后,将生成的LocalSettings.php重命名以使其易于跟踪使用哪个Wiki(例如LocalSettings_en_example_com.php
  4. 为要创建的每个Wiki重复上述第二步和第三步,为每个Wiki创建一个新的LocalSettings.php文件,然后重命名以跟踪其配置的Wiki(LocalSettings_de_example_com.php等)
  5. 创建一个自定义LocalSettings.php文件,以根据每个请求的 Host 标头的内容选择正确的LocalSettings_*.php

    <?php
    // Include common settings to all wikis before this line (eg. database configuration)
    
    switch ( $_SERVER['SERVER_NAME'] ) {
        case 'en.example.com':
            require_once 'LocalSettings_en_example_com.php';
            break;
        case 'de.example.com':
            require_once 'LocalSettings_de_example.com.php';
            break;
        default:
            header( 'HTTP/1.1 404 Not Found' );
            echo 'This wiki is not available. Check configuration.';
            exit( 0 );
    }
    
  6. 最后,使用与每个虚拟主机的文档根相同的/var/www/html目录,为您的Web服务器配置多个虚拟主机,每个Wiki一个虚拟主机。