Manual:在适用于 Linux 的 Windows 子系统上运行 MediaWiki
此文档用于说明如何通过适用于 Linux 的 Windows 子系统(WSL)来运行 MediaWiki。 有关直接在 Windows 上运行 MediaWiki 的文档,请参阅 手册:在Windows上运行MediaWiki。
背景
Windows 10 包含一个 Linux 兼容层,即适用于 Linux 的 Windows 子系统,旨在帮助需要在 Windows 计算机上使用 Linux/Unix 开发环境的 Web 开发人员。 这样就可以像在 Linux 机器上一样运行 MediaWiki,与设置和运行虚拟机相比,开销更小,集成度更高。
对于内存和 CPU 资源有限的 Windows 10 笔记本电脑来说,这可能是一个不错的选择。 但是,WSL 需要 64 位版本的 Windows 10(x64 或 ARM64),不能在安装了 32 位 x86 Windows 10 的电脑上运行。
安全提示
MediaWiki 是一个 Web 应用程序,按照这些说明操作将设置一个 Web 服务器,该服务器运行在您的计算机上,并且可以暴露给网络上的其他计算机。
特别需要注意的是,在 Web 服务器中运行的 PHP 和其他 Linux 代码可能可以访问您的 Windows C:\ 驱动器,并可能能够读取或修改文件或运行 Windows 程序。
强烈建议仅将其用于开发目的,不要用于服务器部署,并限制对 Web 服务器的网络访问,以避免意外地向网络开放任何内容。 请只运行您信任的 MediaWiki 及其扩展程序。
WSL 版本
WSL 有两个主要版本:原始版本以 Windows 驱动程序的形式模拟 Linux 内核 ABI,而较新的 WSL2 使用专门的 Hyper-V 虚拟机来运行原生 Linux 内核。 虽然 MediaWiki 应该可以在 WSL1 下工作,但 2020 年 5 月更新引入了 WSL 2 作为替代方案。 可以自由地从 WSL1 升级/降级到 WSL2。
WSL2 与更多软件兼容,但由于虚拟机有自己的 IP 地址,与 localhost 分开,因此可能会使某些集成场景变得稍微复杂一些。
(服务器端口已转发到 localhost,因此这种方法对于设置 Web 服务器来说基本没问题。)
请注意,尽管 WSL2 需要硬件支持虚拟化,并且底层使用 Hyper-V,但它在 Windows 10 家庭版和 Windows 10 专业版上均可使用。 WSL1 则不需要虚拟化支持。 这可以使开发人员更容易在现有机器上安装,而无需花钱升级到专业版,但可能会与其他虚拟机软件(如 VirtualBox)存在兼容性问题(v6.0 是可以与基于 Hyper-V 的产品共存的最早版本)。
安装
- 转到控制面板→程序和功能,然后点击左侧的链接“启用或关闭 Windows 功能”,或者运行
C:\Windows\System32\OptionalFeatures.exe。- 请复选“适用于 Linux 的 Windows 子系统”;对于 WSL2,请复选“虚拟机平台”。
- 让它安装并重启。
- 前往“Microsoft Store”并搜索最新的 "Ubuntu" Linux 发行版
- 安装它!
- Debian 系统也可用,但在某些方面可能略有不同。
- 点击“开始”菜单中的“Ubuntu”图标,或者从 PowerShell 会话中输入
wsl(注意提示符如何从 Windows 样式变为 Linux 样式)。- 按照屏幕提示设置 Linux 用户名和密码
- 让它提取
WSL 设置
要使用 WSL2 模式,请退出并在 PowerShell 会话中运行:
wsl --set-version Ubuntu 2
这可能需要几分钟来转换文件系统。
要验证当前使用的 WSL 版本,请执行以下操作:
wsl -l -v
依赖性设置
首先,确保系统镜像已更新:在 Ubuntu 终端中运行 sudo apt update && sudo apt upgrade -y。
首次安装后可能需要几分钟时间。
安装依赖项:sudo apt install apache2 composer git git-review imagemagick mysql-client mysql-server php php-apcu php-cli php-gd php-intl php-mbstring php-mysql php-xml zip
运行服务
你可能需要手动启动服务:
sudo service mysql startsudo service apache2 start- 在 WSL1 上,这可能会向 Windows 防火墙发出有关监听端口的警报。 请确认允许,但出于安全考虑,您可限制在“私有”网络中。
你可能需要费一番周折才能在 MySQL 上设置 root 密码:
- 以 root 用户运行 MySQL:
sudo mysql
- 在 MySQL 终端中运行:
use mysql;alter user 'root'@'localhost' identified by 'your-password-here';- 如果刚才失败了,请尝试update user set authentication_string=password('输入你的密码'), plugin='mysql_native_password' where user='root';。create user '你的用户名'@'localhost' identified by '输入你的密码';create database `数据库名称`;- 这必须与安装过程中的 wiki 数据库相匹配grant all on `数据库名称`.* to '你的用户名'@'localhost';- Note those are backticks not single quotes around 数据库名称flush privileges;exit
- 现在您可以使用用户名
root和密码输入你的密码从安装程序登录。
MediaWiki 设置
从 git 克隆内容,就像在 Linux 服务器上一样。
Ubuntu 上的 Apache 默认设置为指向 /var/www/html 作为文档根目录,您可以在该目录下创建一个目录来检出或使用自定义路径重新配置 Apache。
建议使用 /var/www/html/w,以符合 /w/index.php 为主脚本路径的惯例。
cd /var/www/htmlsudo mkdir wsudo chown your-user-name wcd wgit clone https://gerrit.wikimedia.org/r/mediawiki/core.git .- 别漏掉末尾的点。cd skinsgit clone https://gerrit.wikimedia.org/r/mediawiki/skins/Vector.git
扩展
例如(来自skins/):
cd ../extensionsgit clone https://github.com/wikimedia/mediawiki-extensions-CollapsibleVectorgit clone https://github.com/wikimedia/mediawiki-extensions-Gadgetsgit clone https://github.com/wikimedia/mediawiki-extensions-ParserFunctionsgit clone https://github.com/wikimedia/mediawiki-extensions-Scribuntogit clone https://github.com/wikimedia/mediawiki-extensions-WikiEditor
别忘了在你的 LocalSettings.php 文件底部添加加载扩展程序的代码行。
别忘了在 MediaWiki 目录以及任何需要它的扩展目录中运行 composer update --no-dev。
在浏览器中运行网页安装程序,地址为 http://localhost/w/;安装时请使用你设置的用户名和数据库名称。
当安装程序最后提示您下载 LocalSettings.php 时,请将其保存为 \\wsl$\Ubuntu\var\www\html\w 或同样的内容,然后您就可以访问您的 wiki 了!
作业队列
你可能需要手动运行 作业队列运行器。 理想情况下,这应该通过 Web 服务器完成,但如果实在不行,你可以启动 Ubuntu 终端并运行以下命令:
cd /var/www/html/php maintenance/runJobs.php
其他配置
WSL 环境在很大程度上看起来与任何其他 Ubuntu 或 Debian 系统类似,只是服务不会自动启动,必须在每次启动时手动运行。 有关在 Debian 或 Ubuntu 上运行 MediaWiki 的一般说明,请参阅 在 Debian 或 Ubuntu 上运行 MediaWiki。
编辑文件
在 Windows 系统下,您可以使用 \\wsl$\Ubuntu 访问 Linux 文件,因此可以使用支持 Unix 换行符的 Windows 文本编辑器来处理您的代码和配置。
Visual Studio Code 还有一个 WSL 远程处理扩展,可以更直接地与 WSL 环境集成,这对于在编辑器中使用 PHP 代码检查可能很有用。
但是请注意以下警告:不要使用 Windows 应用程序和工具更改 Linux 文件
或者,你可以使用你喜欢的基于终端的编辑器。
参见