CentOS7 WSL

安装

  1. 控制面板->启用或关闭Windows功能->适用于Linux的Windows子系统,挑勾,安装
  2. 下载安装包 https://github.com/yuk7/CentWSL
  3. 解压到同一目录中,如 F:\CentOS7
  4. 运行 CentOS7.exe

配置

  1. 更新 yum -y update
  2. 安装软件 yum -y install wget zip unzip passwd openssl openssh-server openssh-clients lsof

环境

下载最新的hdltmp安装包,解压并安装

SSH配置

  1. 编辑 /etc/ssh/sshd_config,修改或打开 Port 22
    UsePAM no
    PermitRootLogin yes
    PasswordAuthentication yes
  2. 创建公私密钥,输入命令后,直接按两次enter键确认就行了
    ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
    ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
    ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
  3. 开启服务 /usr/sbin/sshd -D &

开机启动(慎用)

  1. Win+R运行shell:startup,打开启动文件夹
  2. 创建文件,比如CentOS7.vbs
  3. 用编辑器打开文件,写入命令,例:
    Set ws = CreateObject("Wscript.Shell")
    ws.run "wsl -d CentOS7 -u root /etc/init.d/nginx start"
    ws.run "wsl -d CentOS7 -u root /etc/init.d/php-fpm start"
    ws.run "wsl -d CentOS7 -u root /etc/init.d/mysql start"
    ws.run "wsl -d CentOS7 -u root /usr/sbin/sshd -D &"
  4. -d后跟的是wsl名称,可在命令行中用wsl -l命令查看

多wsl并存

将CentOS7.exe和rootfs.tar.gz拷贝到新目录中,并重命名CentOS7.exe,例CentOS7_2.exe,双击运行即可

关键服务

  1. LxssManager
  2. LxssManagerUser_xxxxx

WSL里Nginx+PHP,反映慢,卡住等问题

在wsl里搭建lnmp环境时,

访问简单的PHP 文件 (例如Hello world)没有问题,

但访问多数 PHP 文件卡死,

有的(例如phpinfo()),虽然可以加载出来但浏览器显示网页仍未加载完全或者巨慢。

原因

用 Unix Socket 方式连接 Nginx 和 PHP,然而,WSL 对 Unix Socket 的支持并不是那么完美

解决方法

在 nginx.conf 的 http 节点添加:

1
fastcgi_buffering off;

然后重启nginx即可。