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 中

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容