Win10 下 Laravel 开发方法一:WSL+Valet

我大概发现了两种Win10下正常开发的方法,各有所长,也各有所短。 我自己Windows系统是英文的,所有如果有那里不对,请务必告诉我。

WSL

WSL就是一个寄生于Win10的Linux系统,它有被砍的七七八八的Linux内核,和你放在上面的Distro容器。一般大家都是用Ubuntu,因为其他的Distro跑的不太完美。

WSL的大问题是,没有dbus,没有systemd , 而且不是随开机启动,也就是说你要开机开service,需要另外想办法。但是,毕竟还是Linux,所有Linux有的,它都有,所以PHP可以跑的比较顺。

安装WSL

怎么装啊?网上教程一箩筐, 都可以参考。我没有中文版的Win10,所以,步骤如下, 抄自: ,没截图:
Win10控制面板被藏住了,所以 Win+R , 然后输入:control

  1. 需要到 控制面板\所有控制面板项\程序和功能 中选择 启用或者关闭Windows功能
  2. 找到 适用于Linux的Windows子系统 并勾选,然后 确定 选择 立即重新启动
    1a. 或者,你找得到Powershell的话,右键点击powershell,以管理员身份启动 (求大神告诉我这个选项中文到底是什么),然后跑:
    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
  3. 去Windows商店,搜索 Ubuntu, 然后安装上去。
  4. ctrl+r , 然后输入:ubuntu, 等待安装完毕,如果看到卡了超过一分钟,按按enter键(嗯,自带terminal会卡)。

这里我必须要吐槽Windows10自带的两个Terminal,这都9102年了……所以,推荐大家安装 Hyper 或者 Terminus ,大家选个自己觉得好看的吧。虽然这俩都是英文的,但是Terminal,有没有中文真的无所谓。尤其是Hyper,配置就是个js文件。 不然,接下来的步骤等的时候无法喝茶,需要坐在电脑前面按回车。

等你的Ubuntu弄好了以后,切换到刚安装的Terminal,接下来的,装Valet,都是从这里翻译的 (我貌似改了一点?)

Windows 设置的先决条件

  1. 安装 Acrylic DNS Proxy.
  2. 下载 WSL Startup Scripts. (此步骤,我命名为步骤0

WSL 设置

  1. 打开某个 terminal.
  2. 运行 sudo visudo.
  3. 把这两行加入(如果已经存在,就覆盖),如果不会vi,找到相应的行,按i,然后编辑,然后 esc > :wq'> 回车:
    ALL ALL = (root) NOPASSWD: /usr/sbin/serviceusername ALL=(ALL) NOPASSWD: ALL
  4. 运行 sudo add-apt-repository ppa:ondrej/php.
  5. 运行 sudo apt-get update && sudo apt-get upgrade
  6. 运行 sudo apt-get install network-manager libnss3-tools jq xsel build-essential libssl-dev dnsmasq nginx php-fpm php-cli php-mysql php-sqlite3 php-intl php-zip php-xml php-curl php-mbstring redis-server php-redis php-pear php7.2-dev pkg-config libz-dev libzip-dev libmemcached-dev libmemcached11 libmemcachedutil2 libmagickwand-dev imagemagick memcached mysql-server

如果需要装MariaDB
把上面的mysql-server去掉,然后:

  1. sudo apt-get install software-properties-common
  2. sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
  3. sudo add-apt-repository "deb [arch=amd64,arm64,ppc64el] http://mariadb.mirror.liquidtelecom.com/repo/10.4/ubuntu $(lsb_release -cs) main"
  4. sudo apt update && sudo apt -y install mariadb-server mariadb-client

MySql

mysql_secure_installation 无法正常运行,所以:

  1. 运行 sudo usermod -d /var/lib/mysql/ mysql
  2. 运行 sudo mysqladmin -u root -h localhost password examplepass
  3. 运行 sudo service mysql start

Node

  1. 运行 curl -sL https://deb.nodesource.com/setup_10.x -o nodesource_setup.sh.
  2. 运行 sudo bash nodesource_setup.sh.
  3. 运行 sudo apt-get install nodejs.

Yarn

  1. 运行 curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -.
  2. 运行 echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list.
  3. 运行 sudo apt-get update && sudo apt-get install yarn.

Composer

  1. 运行 wget https://getcomposer.org/installer.
  2. 运行 php installer.
  3. 运行 sudo mv composer.phar /usr/local/bin/composer.

Valet WSL

  1. 运行 composer global require valeryan/valet-wsl.

Bash Config

  1. 运行 vi ~/.bash_aliases.
  2. 运行 export PATH=~/.composer/vendor/bin:$PATH.
  3. 运行 source ~/.bashrc.

Acrylic 设置 (回Windows)

  1. 在Windows内 , 按下 windows 键 ,输入 Acrylic, 打开 Acrylic UI
  2. 找到 Edit Acrylic Host File, 把 127.0.0.1 *.test 放到最后一行,并保存
  3. 菜单,找到Actions(第二个), 按 Restart Acrylic Service

Valet 设置 (WSL)

  1. 运行 valet install.
  2. 找到你Laravel目录, 然后运行 valet park, valet link.
  3. 看好不好使,去Chrome 输入 folder.test. (此处folder是你目录的名字)
  4. 如果需要SSL,运行 valet secure.

Valet 设置 (Windows)

  1. ctrl+r, 输入 C:/tools/valet/certs/, 双击 install_certs.cmd文件。这个会安装一个root ca,所以你可以用自己的cert
  2. 去chrome试试https?

WSL 设置 (Windows内)

  1. 把你从步骤0下载到的文件放进: C:/tools/wsl-startup/.
  2. 调整你的 services.sh, 这个里面包括了你所有需要的服务
  3. win+r > taskschd.msc , 建立一个新的任务,登录时运行 bash-start.vbs
  4. 重启试试,你现在可以直接进入Chrome ,

设置 Cron

1 运行 sudo crontab -e.

栗子

*/5 * * * * php /mnt/c/username/Projects/folder/artisan schedule:run >> /dev/null 2>&1

后言

这个方法,简单暴力,我觉得是蛮方便的,而且你想要多少格域名,就多少个域名。而且对于我这种Ubuntu小白,及其友好(Fedora里面Service没法用)。感觉和Linux原生差不多了。这里提几点:

  1. Composer,PHP, Artisan一定要在WSL内跑,千万不能用Windows跑,那个路径会冲突。
  2. Ubuntu进去,默认的目录,是你Windows用户目录,而非你的home目录。你的home目录还在,你的ssh密匙,.bashrc什么的都在那里。
  3. 建议把项目放在Windows用户目录内(不然Windows 打开和读写有困难),建议目录改成区分大小写的,需要管理员权限运行 cmd ,然后 fsutil.exe file setCaseSensitiveInfo “C:\my folder” enable , “C:\my folder” 改成你自己的目录。

下一篇,我们转战Docker。嘿嘿……

本作品采用《CC 协议》,转载必须注明作者和本文链接
Software Engineer Practices above all 软件开发标准高于一切
Shuyi
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 8

file
请问一下 wsl 安装完后 发现这个是怎么回事?127.0.0.1 能正常打开nginx 欢迎页面。

4年前 评论
Shuyi

@轻描淡写 这是哪一步出的错?

4年前 评论

@Shuyi 重载nginx 的时候 我用的是lnmp.org 上面的一键安装包安装lnmp环境 ,可能是安装包的问题。

4年前 评论

valet 现在有 windows 版本了,直接用也不错。

4年前 评论
Shuyi

@dreamfish 有是有,但是,PHP支持还是不完美,比如说Composer的路径会依然很混乱,而且Windows下别想用 php-pcntl, php-posix,所以Laravel Horizon用不了。你Composer的Repo如果是Path,就呵呵了……

4年前 评论
Shuyi

@轻描淡写 建议还是按照这个步骤跑,反正我也不懂Ubuntu,你就复制粘贴就完事了……你说的那个安装包,估计无法用在WSL……

4年前 评论

@Shuyi windows 下搞什么都是有很多问题,wsl 也是局限很多。最好还是换电脑 :grin:

4年前 评论
Shuyi

@dreamfish 我一般是用Fedora的,不过微软的电脑太好用了,所以就要处理在Win下开发,不过WSL的限制现在已经不影响PHP开发……反正,也是闲暇时候没事乱掰,哈哈哈,工作用的肯定是Fedora

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!