我们需要在一台服务器上运行多个 MediaWiki Wiki,这些 Wiki 需要完全独立的用户帐户。更好的解决方案是什么:
- 使用单独的源代码并在数据库中使用命名空间。
- 使用相同的源代码这,本质上你为每个包含站点特定信息的站点创建一个定制的 localsettings.php 文件,并且你有一个主 localsettings.php 文件,该文件根据 url 将你发送到相关的站点特定的 localsettings.php
- 对除 localsettings.php 和主文件夹中的任何其他相关文件之外的所有源代码进行符号链接。
显然,如果能够对每个实例使用相同的代码会更好,因为这样可以使升级变得更加容易。
它将在 Ubuntu 服务器、Apache 以及 nginx 和 MySQL 上运行。
答案1
使用单独的源代码和单独的数据库。这样,您可以在其中一个中安装扩展或自定义主题,而不会影响其他。
如果你确实知道你永远不会在一个 wiki 中拥有自定义扩展/主题,而在其他 wiki 中则不会,那么 3. 似乎是比 2 更好的选择,但请记住上传文件夹(LocalSettings 中有一个设置可以指定路径)
答案2
无论如何,Mediawiki 升级都是小菜一碟,因此我运行了 2 个完全独立的实例,包括插件目录的副本和 LocalSettings.php 文件的副本(不是符号链接)。几年前,我发现,如果试图在运行 2 个升级时节省几分钟,那么我可能要花几天的时间才能正确设置它,所以我不再费心了 :)
2 个数据库,2 个代码实例。很简单。您可以非常轻松地在两者之间进行导出和导入,也许有一天您想将它们合并在一起。
答案3
MediaWiki 安装只不过是一个目录树和相关数据库。您可以根据需要运行任意数量的并行安装。任何需要共享的文件库部分都可以通过符号链接来实现。只有当您想共享数据库的某些部分时,情况才会变得棘手,因为这往往是一条通往灾难的单行道,因此建议您最好避免这样做。
答案4
警告:对于 debian apt install mediawiki(版本 1.35.8)
树结构已更改为包含符号链接。
在 1.35.8 中我发现 apt 安装程序使用 /var/lib/mediawiki 包含指向 /etc/mediawiki 和 /usr/share/mediawiki 的符号链接,使其不再是可以复制的简单目录树。
所述副本将共享以下实例:index.php 包括 img_auth.php composer.json autoload.php api.php 供应商 thumb.php thumb_handler.php 皮肤 rest.php 资源 opensearch_desc.php mv-config 维护 load.php 语言甚至 LocalSettings.php -> /etc/mediawiki/LocalSettings.php