Wsl debian mediawiki experience

From 清冽之泉
Jump to navigation Jump to search

总体体验:迅如闪电。

安装

# 开启 Windows 支持
UEFI 中开启虚拟化支持
控制面板 - 卸载 - 启用或关闭 Windows 功能中打开“适用于 Linux  Windows 子系统”和“虚拟机平台”

# 查看 WSL 版本
wsl --version

# 安装新的 Linux 分发版前将 WSL 2 设置为默认版本 
wsl --set-default-version 2

# 查看正使用的 Linux 发行版
wsl -l -v

# Powershell 中安装 WSL2 Debian
wsl --install -d Debian

想用 WSL 2,视情况可能需要安装一个 wsl_update_x64.msi 去更新 WSL 的内核。运行 wsl --set-version Debian 2 会获取到 wsl_update_x64.msi 的下载地址。

命令

wsl --shutdown 完整重启
Get-ChildItem "HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss" -Recurse # 查看 WSL 包安装在哪里,我的是 C:\Users\wdf\AppData\Local\Packages\

MediaWiki

sudo apt-get install apache2 mysql-server php php-mysql libapache2-mod-php php-xml php-mbstring php-apcu php-intl imagemagick inkscape php-gd php-cli php-curl php-bcmath git

sudo service mariadb start && sudo service apache2 start
ip a
sudo mariadb
CREATE USER 'db_username'@'db_hostname' IDENTIFIED BY 'passwd'; # 用在本地时,我选的 localhost 当 db_hostname
CREATE DATABASE sth_wiki;
USE sth_wiki;
GRANT ALL ON sth_wiki.* TO 'db_username'@'db_hostname';
commit;
quit;
sudo a2dissite 000-default
service apache2 reload

systemd

一个细微区别是,Bookworm 用的 systemd ,WSL 用的 WSL init,类似 SystemV init。 ps -p 1 -o comm= 可以看出系统用的哪个。其具体命令有所不同。

Systemd command Sysvinit command
systemctl start service_name service mariadb start
systemctl stop service_name service apache2 stop
systemctl restart service_name service service_name restart
systemctl status service_name service service_name status
systemctl enable service_name chkconfig service_name on
systemctl disable service_name chkconfig service_name off

但是这种不同已经过时,略加修改,即可让 WSL 用上最新的 systemd。

只要 wsl --version 显示 WSL 版本号大于 0.67.6,则 wls --update 更新至最新版后,在 /etc/wsl.conf 中写入以下即可:

[boot]
systemd=true

自启

update 20250322:建议不要用任务计划程序开启 WSL,它俩一组合起来就非常傻逼,有 bug:同时打开两个 WSL 虚拟机时,任务计划程序会导致第二个 WSL 虚拟机僵死。


以下别再用了。

开启 systemd 后,WSL Debian 2 里的服务能很方便自启了。

WSL 2 及 Debian 本身怎么自启呢?

博主 sjdhome 写得很好,用 任务计划程序 即可。