进入你的 Ubuntu 子系统的家目录:
$ cd ~
注意: 这里是进入 Ubuntu 子系统的家目录,而不是Windows10的。
创建一个 projects
目录,用于存放项目代码:
$ mkdir projects
用 VS Code 打开家目录,VS Code 需要被加入到 Windows 的系统环境变量中:
$ code .
这里要注意,由于 WSL2 跨OS的文件性能很差,会导致项目运行速度很慢,所以我们的项目目录是存放在 Ubuntu 子系统中的家目录, 而不是 windows10 的家目录。后面调用code .
命令是为了用 VS Code 打开我们的projects
目录,以获取projects
目录的网络位置路径,方便我们使用诸如 phpStorm 这样的 IDE 打开项目。
在 VS Code 界面,右键projects
目录,选择Reveal in Explorer
,也就是在 Windows文件管理器
中打开目录:
在windows资源管理器
中,右键projects
目录,选择固定到快速访问
和发送到 -> 桌面快捷方式
,便于以后打开项目目录。
你也可以直接打开 「Windows 文件资源管理器」,在地址栏输入 \\wsl$
打开,一级一级找到你的项目存放目录。
所以,即使我们的项目存放在 Ubuntu 子系统中,项目目录也是可以通过网络位置访问的,我第一次按照社区官方教程搭建 Laravel Sail 开发环境时,也是将项目存放在/mnt/c/code
目录下,这就产生了跨OS的文件系统性能问题,项目的运行速度并没有令我满意。我也是在无意间在 Windows Terminal 中使用code
命令打开 Ubuntu 子系统中的家目录时,才发现了可以通过网络位置打开项目目录。
回到 Windows Terminal 界面,命令行工具选择 Ubuntu,进入项目存放目录:
$ cd /home/myhui/projects
假设我们现在有一个项目,叫做 kkyn_dcat_admin,拉取你的项目源代码(或者创建新的项目):
$ git clone git@gitee.com:kkyn_dcat_admin.git
如果是全新的项目,你也可以使用 composer 创建一个新的 Laravel 项目:
$ composer create-project laravel/laravel Example --prefer-dist "8.*"
这里说明一下,如果你使用ssh协议拉取项目源码,由于 Ubuntu 子系统跟 Windows10 宿主系统是隔离的,所以你需要将 windows 10 的 SSH Key 拷贝到 Ubuntu 子系统中(注意不要完全复制粘贴命令,ASUS
和myhui
要改成你自己的。):
$ cp /mnt/c/Users/ASUS/.ssh/id_rsa* /home/myhui/.ssh/
如果你还没有SSH KEY,可以用 Git Bash
重新生成 SSH Key,并将生成的公钥添加你的github或者gieee信任列表中。打开 Git Bash
,运行以下命令:
ssh-keygen -t rsa -C "[email protected]
使用 IDE 或者编辑器打开项目,这里我们使用 PhpStorm:
编辑composer.json
文件,添加"laravel/sail": "^1.8"
开发依赖:
或者使用 composer require laravel/sail --dev
安装最新版 laravel-sail.
小提示:用 PhpStorm 通过网络位置打开位于 Ubuntu 子系统内的项目时,点击 PhpStorm 下面的 Terminal 工具,PhpStorm 会自动进入 Ubuntu 子系统的 shell 环境,所以不用傻傻的 Windows Terminal 与 PhpStorm 来回切换了。
回到 Windows Terminal 界面, 打开 Ubuntu 选项卡,进入你的项目目录:
$ cd ~/projects/kkyn_dcat_admin
查看你的当前用户在 Ubuntu 中的 UID:
$ id myhui
先保存运行结果,稍后会用到:
uid=1000(myhui) gid=1000(myhui) groups=1000(myhui),0(root),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),117(netdev),1001(docker)
发布.env
文件
$ cp .env.example .env
用IDE编辑.env文件,配置你的 APP_SERVICE、WWWUSER、WWWGROUP、mysql、redis 选项,其中 APP_SERVICE 的目的是为了 sail 与容器交互,WWWUSER、WWWGROUP 可以保证使用诸如sail artisan make:migration xxx
这种命令生成的文件所属的用户与用户组与你的当前用户相同,避免文件操作的权限问题:
# 镜像服务名称
APP_SERVICE=kkadmin.test
# 上面生成的UID
WWWUSER=1000
# 上面生成的用户组名称
WWWGROUP=1000
# mysql
DB_CONNECTION=mysql
DB_HOST=mysql
FORWARD_DB_PORT=33060 #从容器映射到外部的端口,管理工具可通过此端口管理数据库
DB_PORT=3306
DB_DATABASE=kkyn
DB_USERNAME=root
DB_PASSWORD=password
# redis
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379
REDIS_CLIENT=phpredis
执行命令安装依赖:
$ composer install
注意:我们安装在 Ubuntu 子系统中的php环境主要用来安装依赖,如果你不想使用Docker来做开发环境,请自行在 Ubuntu 子系统中安装诸如mysql、redis等的其他软件。
docker-compose
用于编排容器,运行以下命令发布配置文件:
$ php artisan sail:install --with=mysql,redis
with选项可选的值有 mysql, pgsql, mariadb, redis, memcached, meilisearch, mailhog, selenium。自己根据情况选择。如果运行php artisan sail:install
命令不带--with
选项,会出现一个选择框,选择需要一同参与编排的镜像列表。