coder| 重回 win 开发环境之基于 wsl2 的 PHP 开发环境

date: 2020-7-7 23:59:39
title: coder| 重回 win 开发环境之基于 wsl2 的 PHP 开发环境

内容简介:

  • 开启 wsl2
  • 使用 wsl Ubuntu
  • 使用 window terminal
  • 使用 docker desktop 并开启 wsl2 支持
  • 使用 vscode 并开启 wsl 支持
  • wsl Ubuntu 配置 PHP 环境
  • phpstorm 开启 wsl 支持
  • mark: 总结

相关资源:

开启 wsl2

# 开启 wsl
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

# 更新到 wsl2
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

重启, 完成更新 (我在这里犯了一个 低级错误, 看文档不仔细, 没有重启, 浪费了很多时间)

使用 wsl Ubuntu

Microsoft store 搜索 wsl 即可, 推荐使用 Ubuntu, 使用人数最多, 遇到 bug 方便搜索解决

进入到 wsl Ubuntu 中, 第一次需要设置用户名密码, 设置完就完成了 wsl Ubuntu 的安装

  • wsl 常用命令
wsl # 进入默认的 wsl, 或者输入 wsl 的名字进入

wsl -l -v # 查看
ws --set-default <name> # 设置默认
\\wsl$\<name>\home\<user> # 默认目录, 使用此路径可以访问到 wsl 中的文件

使用 window terminal

安装十分简单, Microsoft store 中搜索安装即可, 安装后根据文档修改了 主题(theme) 和 快捷键(key-binding), 参考如下

// 只保留我修改的部分
{
    // 设置 wsl Ubuntu 为默认
    "defaultProfile": "{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}",
    "profiles":
    {
        "defaults":
        {
            // 设置主题, 并对所有 profile 生效
            // Put settings here that you want to apply to all profiles.
            "acrylicOpacity" : 0.7,
            "colorScheme" : "Campbell",
            "cursorColor" : "#FFFFFD",
            "fontFace" : "Cascadia Code PL",
            "useAcrylic" : true
        },
        "list":
        [
            // 这里就是新增的 wsl Ubuntu
            {
                "guid": "{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}",
                "hidden": false,
                "name": "Ubuntu-20.04",
                "source": "Windows.Terminal.Wsl"
            },
        ]
    },
    "keybindings":
    [
        // 添加了我常用的快捷键
        { "command": "closeTab", "keys": "ctrl+shift+w" },
        { "command": { "action": "switchToTab", "index": 0 }, "keys": "alt+1" },
        { "command": { "action": "switchToTab", "index": 1 }, "keys": "alt+2" },
        { "command": { "action": "switchToTab", "index": 2 }, "keys": "alt+3" },
        { "command": { "action": "switchToTab", "index": 3 }, "keys": "alt+4" },
        { "command": { "action": "switchToTab", "index": 4 }, "keys": "alt+5" },
        { "command": { "action": "switchToTab", "index": 5 }, "keys": "alt+6" },
        { "command": { "action": "switchToTab", "index": 6 }, "keys": "alt+7" },
        { "command": { "action": "switchToTab", "index": 7 }, "keys": "alt+8" },
        { "command": { "action": "switchToTab", "index": 8 }, "keys": "alt+9" }
    ]
}

window terminal 的其他优点就不提了, 用过 iterm2 之类 terminal 都不会觉得有啥, 大概是 cmd / powershell 实在是太令人失望了吧...

使用 docker desktop 并开启 wsl2 支持

参看此文档 https://docs.docker.com/docker-for-windows/wsl/ 即可, 下载好 docker desktop 然后再配置中开始 wsl 支持即可

设置生效后, 就可以在 wsl 中执行 docker info 确认是否生效了

使用 vscode 并开启 wsl 支持

这个也简单, vscode 中搜索 wsl 插件安装即可, 之后就可以在 wsl 中使用 code 打开文件

注意: root 下没有 code 命令, 可以使用 echo $PATH 查看到差别, wsl 初始化时设置的用户会带上 win 下的几个 path, 所以可以使用 explorer.exe . 来打开目录, 而 root 下的 PATH 是没有这些路径的

wsl Ubuntu 配置 PHP 环境

  • 修改 Ubuntu 镜像源:

清华大学镜像源 mirror: https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/

  • 安装 PHP 7.2 版本

PS: PHP 要锁定到 7.2 / 7.2 这样的版本号, 否则可能导致 7.3 下依赖的包, 在 7.2 无法安装, 开发团队内部/各环境之间, 保持 PHP 版本统一

# 添加支持安装不同 php 版本的源
sudo apt-get install software-properties-common python-software-properties 
sudo add-apt-repository ppa:ondrej/php && sudo apt-get update

# 包含 pecl 等工具, 方便安装扩展
sudo apt-get -y install php7.2-dev php7.2-xml php7.2-bcmath php7.2-curl php7.2-mbstring

# 验证
php -v
  • 安装依赖的扩展 ext: redis mongodb rdkafka swoole
# 1.1 直接使用 pecl 安装
sudo pecl install redis

# 1.2 下载好文件后安装
wget http://pecl.php.net/get/redis-5.3.0.tgz
sudo pecl install redis

# 2. 添加到 ini 文件中
php --ini # 查看 ini 文件位置
sudo chmod 777 /etc/php/7.2/cli/php.ini # 添加编辑权限, 方便 vscode 打开
code /etc/php/7.2/cli/php.ini
# 添加以下内容
extension=redis.so

# mongodb 直接安装

# rdkafka
sudo apt install -y librdkafka-dev
sudo pecl install rdkafka

# swoole 使用编译安装, 方便修改编译参数
wget http://pecl.php.net/get/swoole-4.5.2.tgz
tar zxvf swoole-4.5.2.tgz
cd swoole-4.5.2
sudo phpize
./configure
make
sudo make install

# 添加 sdebug 支持
git clone https://github.com/swoole/sdebug.git
cd sdebug
sudo bash rebuild.sh
  • php.ini 完整配置
extension=redis.so
extension=mongodb.so
extension=rdkafka.so
extension=swoole.so
swoole.use_shortname=0 # hyperf 需要使用

[xdebug]  
zend_extension=xdebug.so
xdebug.remote_enable = On  
xdebug.remote_handler = dbgp     
xdebug.remote_host= localhost  
xdebug.remote_port = 9000 # 默认使用 9000 端口, 可以更新其他端口
xdebug.idekey = PHPSTORM
  • 安装 composer
mkdir tmp && cd tmp
# 安装稳定版
wget https://getcomposer.org/composer-stable.phar

# 安装最新版
wget https://getcomposer.org/composer.phar

# 添加到环境变量中
# 可以使用 `echo $PATH` 先检查
sudo cp composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer

# 使用镜像源
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

phpstorm 开启 wsl 支持

最新版的 phpstorm 已经开始了 wsl 支持, 安装好 插件(plugin) 后, 就可以开始使用了

打开项目, 使用上面提到的路径:

\\wsl$\<name>\home\<user>\<project path>

配置 wsl:

设置(setting) -> 语言与框架(language & framework) -> PHP -> cli interpreter -> 添加 -> 选择 wsl

mark 写在最后

目前还在初步使用阶段中, 能把 hyperf-skeleton 跑起来, 后续使用过程中遇到更多场景, 会陆续更新到新的 blog 中

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。