Manual:Running MediaWiki on Windows Subsystem for Linux/ja
これは、Windows 10 上で Windows Subsystem for Linux (WSL) で MediaWiki を実行するための説明文書です。 Windows 上で直接 MediaWiki を実行するための説明文書は Manual:MediaWiki の Windows 上での実行 を参照してください。
背景
Windows 10 には Linux 互換レイヤーである Windows Subsystem for Linux が含まれており、Windows コンピューター上で Linux/Unix 開発環境を必要とするウェブ開発者を支援する目的で設計されています。 これを利用することで、仮想マシンを構築・実行する場合に比べてオーバーヘッドが少なく、統合性も高い状態で、Linux マシン上での実行と同様に MediaWiki を動作させられます。
これは、RAM や CPU リソースが限られた Windows 10 ノート PC にとって、有力な選択肢となる可能性があります。 ただし、WSL を使用するには 64 ビット版の Windows 10 (x64 または ARM64) が必要であり、32 ビット版の x86 Windows 10 では実行できません。
セキュリティの注記
MediaWiki はウェブ アプリケーションであり、以下の手順に従うことで、利用者のコンピューター上で動作するウェブ サーバーがセットアップされ、ネットワーク上の他のコンピューターからもアクセス可能になることがあります。
特に注意すべき点として、ウェブ サーバー上で動作する PHP やその他の Linux コードは、Windows の C:\
ドライブにアクセスできる可能性があり、ファイルの読み取りや変更、Windows プログラムの実行ができる場合があります。
これは開発目的のみに使用し、本番サーバーとしての運用には使用しないことが強く推奨されます。また、ウェブ サーバーへのネットワーク アクセスを制限することで、ネットワーク上に意図せず公開してしまうことを避けてください。 信頼できる MediaWiki および拡張機能のみを実行してください。
WSL のバージョン
WSL には 2 つの主要なバージョンがあります。最初のバージョンは、Linux カーネル ABI を Windows ドライバーとしてエミュレートするものです。新しいバージョンである WSL2 は、専用の Hyper-V 仮想マシンを使用してネイティブの Linux カーネルを実行します。 MediaWiki は WSL1 でも動作するはずですが、2020年5月の更新 では代替として WSL2 が導入されました。 WSL1 と WSL2 は自由にアップグレード/ダウングレードできます。
WSL2 はより多くのソフトウェアと互換性がありますが、VM が独自の IP アドレスを持っているため、localhost
との統合シナリオが若干複雑になる場合があります。
(サーバーは localhost
にポート フォワードされているため、ウェブ サーバーの設定にはほとんど問題なく機能します。)
WSL2 は仮想化のためのハードウェア サポートを必要とし、内部で Hyper-V を使用しますが、Windows 10 Home および Windows 10 Pro の両方で利用可能です。 WSL1 は仮想化を必要としません。 これにより、開発者は既存のマシンに Pro アップグレードを購入せずにインストールできるようになりますが、VirtualBox のような他の仮想マシン ソフトウェアとの互換性の問題が発生する可能性があります (v6.0 は Hyper-V ベースの製品と共存できる最初のバージョンです)。
セットアップ
- 「コントロール パネル」に移動し、「プログラムと機能」を選択します。その後、左側のリンク「Windows の機能の有効化または無効化」をクリックするか、
C:\Windows\System32\OptionalFeatures.exe
を実行します。- Check "Windows Subsystem for Linux" and, for WSL2, "Virtual Machine Platform"
- let it install and reboot
- Go to 'Microsoft Store' and search for the latest "Ubuntu" Linux distribution
- install it!
- Debian is also available, but might be slightly different in some respects.
- Click on the "Ubuntu" icon in Start menu or enter
wsl
from a PowerShell session, (notice how the prompt changes from Windows to Linux style).- follow the on-screen prompts about setting up a Linux username and password
- let it extract
WSL Setup
To use WSL2 mode, exit and run in a PowerShell session:
wsl --set-version Ubuntu 2
This may take a few minutes to convert filesystems.
To verify which version of WSL is in use do:
wsl -l -v
Dependency setup
First, ensure the system image is up to date: run sudo apt update && sudo apt upgrade -y
in the Ubuntu terminal.
This may take a few minutes after first installation.
Install deps: 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
Running services
You may have to manually start up services:
sudo service mysql start
sudo service apache2 start
- on WSL1 this may prompt Windows Firewall about the listening port. Allow it, but consider limiting to "private" networks for safety.
You may have to jump through some hoops to set the root password on mysql:
- Run mysql as root:
sudo mysql
- In the mysql terminal run:
use mysql;
alter user 'root'@'localhost' identified by 'your-password-here';
- If that fails tryupdate user set authentication_string=password('あなたのパスワード'), plugin='mysql_native_password' where user='root';
instead.create user 'あなたのユーザー名'@'localhost' identified by 'あなたのパスワード';
create database `database_name`;
- This must match with the wiki database in the install processgrant all on `database_name`.* to 'あなたのユーザー名'@'localhost';
- Note those are backticks not single quotes around database_nameflush privileges;
exit
- Now you can use username
root
, passwordあなたのパスワード
when logging in from the installer
MediaWiki setup
Clone things from git as you would on a Linux server.
Apache on Ubuntu is set by default to point at /var/www/html
for the docroot, you can create a dir under there to check out or reconfigure Apache with a custom path.
I recommend /var/www/html/w
for consistency with convention that /w/index.php
is the main script path.
cd /var/www/html
sudo mkdir w
sudo chown your-user-name w
cd w
git clone https://gerrit.wikimedia.org/r/mediawiki/core.git .
- Don't miss the dot at the end.cd skins
git clone https://gerrit.wikimedia.org/r/mediawiki/skins/Vector.git
Extensions
For example (from skins/):
cd ../extensions
git clone https://github.com/wikimedia/mediawiki-extensions-CollapsibleVector
git clone https://github.com/wikimedia/mediawiki-extensions-Gadgets
git clone https://github.com/wikimedia/mediawiki-extensions-ParserFunctions
git clone https://github.com/wikimedia/mediawiki-extensions-Scribunto
git clone https://github.com/wikimedia/mediawiki-extensions-WikiEditor
Don't forget to add the lines to load the extensions at the bottom of your LocalSettings.php
file.
Don't forget to run composer update --no-dev
in the MW directory, and for any extension dirs that require it.
Run the web installer in a browser at http://localhost/w/
; use your name and database here for installation.
When the installer prompts you to download LocalSettings.php
at the end, save it into \\wsl$\Ubuntu\var\www\html\w
or equivalent and you will be able to access your wiki!
Job queue
You may want or need to manually run the job queue runner.
Ideally this should be done via the web server, but in a pinch you can fire up the Ubuntu terminal and run:
cd /var/www/html/
php maintenance/runJobs.php
Other configuration
For the most part the WSL environment will look like any other Ubuntu or Debian system, except that services won't automatically start and must be manually run on every boot. See Running MediaWiki on Debian or Ubuntu for general instructions on running on these operation systems.
Editing files
From the Windows side you can access Linux files in \\wsl$\Ubuntu
, so Windows text editors that are ok with Unix line endings can be used to work with your code and config.
Visual Studio Code also has a WSL remoting extension which can integrate more directly with the WSL environment, which might be good for using PHP linting in the editor.
However note the warnings at Do not change Linux files using Windows apps and tools
Or, you can use your favorite terminal-based editors.