2018年2月

Windows 10 开启 Bash On Ubuntu记录

2018.02.04 更新

这周折腾了半天准备用 WSL (Windows Subsystem for Linux) 搭个开发环境,结果发现这个玩意儿虽然出来一段时间了,但是坑还是真的多。

首先是没有支持 TCP_INFO socket option,参考 php-fpm启动提示Protocol not available (92)该怎么解决呢?,这导致了 php-fpm 监听端口时,日志里会一直打印错误,但是能用,很神奇,而如果 listen 的是 socket 的话,则功能不正常,一直超时。

我发现的还有,如果 mysql 的 data 目录不是放在 WSL 自身硬盘路径内,而是放到 D 盘或者其他外部目录的话,虽然能新建数据库,但是建表有问题。

其他比如不支持升级发行版之类的必然的问题就不多说了,还有就是新版的 Win10 WSL 的安装路径是 C:\Users\<username>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState

所以从亲身的惨痛经历来看,建议还是不要妄想在 Windows 上用虚拟化以外的方案搭建开发环境。

===

步骤记录如下:

1.设置 -> 更新和安全 -> 针对开发人员,选择开启开发人员模式,这一步可能需要重启。

2.控制面板 -> 程序 -> 启用或关闭windows功能,选中 “适用于 Linux 的 Windows 子系统(Beta)”,然后重启。

3.打开 cmd 或者 PowerShell,点击左上角进入设置,在 ‘选项’ 面板中将 “使用旧版控制台” 取消选中,然后重启命令行。

4.在命令行中键入 ‘bash’,然后系统就会让你下载系统文件,选择 ‘y’ 之后就等待下载安装完成吧。

几个注意点:

1.不翻墙的话下载速度很慢,反正电信不翻墙是几乎下载不了的。
2.这个子系统的根目录默认在 %userprofile%\AppData\Local\Lxss\rootfs,这个略坑。

使用xshellputty等ssh终端连接本地bash方式:

1.卸载并重新安装 openssh-server:

sudo apt-get remove --purge openssh-server
sudo apt-get install openssh-server

2.在/etc/ssh/sshd_config中添加或将原有的配置项的值修改为如下:

ListenAddress 0.0.0.0
UsePrivilegeSeparation no
PasswordAuthentication yes

3.运行service ssh --full-restart即可

使用 LaraDock 搭建 Laravel 的 Docker 开发环境

参考链接:基于 LaraDock 在 Docker 中快速构建 Laravel 应用系列教程 —— 搭建开发环境

基本参考上文的步骤即可,不过有如下注意点:

  • LaraDock 现在只支持原生 Docker, Docker Toolbox 这种基于虚拟机的方案需要使用比较老的版本
  • 如果是在 Windows 上使用的话,LaraDock 的 .env 文件 中需要配置 COMPOSE_PATH_SEPARATOR=;COMPOSE_FILE=docker-compose.yml;docker-compose.dev.yml,因为这个分隔符在 Windows 中不支持使用 :
  • 千万不要用 DaoCloud 的加速器,其他加速器貌似也不行,用了这个之后 docker pull laradock/workspace 一直失败,这个包会循环下载直到提示 no space left on device,一开始我以为是 Windows Docker 或者配置的问题,顺着这个方向去查解决方案,查了好久都没头绪,后来把加速器去掉果然好了
  • 设置 proxy 时,格式为 http://host:port,如果 host 是在本机上的的话,需要写成 DockerNAT 那个网卡的 IP 地址,比如 10.0.75.1,另外这个 proxy 的配置也会被 docker 写入到容器中,具体见官网文档