尝试用 WSL2 + Ubuntu 开发
目的
用 WSL2 模拟 Linux 开发环境,然后用 Linux 开发项目,熟悉各种 Linux 系统和命令,为以后成为大神埋下习惯的种子
前言
可不看
笔者是 Window 用户,去年真正学 Linux,以前也用过虚拟机开发,也有过各种尝试,但因为各种原因,还是回归 Window 开发
去年看到方应杭的直播开发,了解到 docker + VS code 的开发模式,而后就写了 手把手提高开发体验:dev-container,配置好后我没有继续研究,没有马上把环境切换成,直到最近,换电脑,才想着就用 Linux 开发吧
正文
什么是 WSL
Window 中的 Linux 系统,Window 提供的内置虚拟机
所以我们可以在 Window 中安装 Ubuntu、Centos 等 Linux 系统
但他的缺点是文件系统和 Window 不一致,但可以共享
说白了,如果你在 Linux 中操作 Window 中的文件,会卡顿。反之亦然
WSL、docker、Window 的虚拟机(Hyper-v)的关系相当于,Window 用 Hyper-v 实现了虚拟机,也就是 WSL,window 中的 docker 也是基于此技术来实现容器化的
省流版
修改默认安装目录到 D 盘
更换阿里云软件源
更新软件
安装 oh my zsh
配置 ssh
node 环境
ruby 环境
修改默认安装目录到 D 盘
1 | wsl --help # 查看文档 |
同理,可以把 docker 也放到 D 盘中
更多命令可以前往官网查看
更换阿里云软件源
1.备份
1 | sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak |
2.修改
1 | sudo vim /etc/apt/sources.list |
将 source.list 文件内容替换成下面的
1 | deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse |
更新软件
1 | sudo apt update && sudo apt upgrade -y |
安装 oh my zsh
安装 zsh
1 | sudo apt install zsh -y |
安装 ohmyzsh
1 | sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" |
安装 ohmyzsh 插件,按照自己的喜好
可以看看 antfu 的配置
1 | git clone https://github.com/denysdovhan/spaceship-prompt.git "$ZSH_CUSTOM/themes/spaceship-prompt" --depth=1 |
进入 .zshrc
文件,并修改成ZSH_THEME="spaceship"
,并让配置立马生效 source ~/.zshrc
将 ohmyzsh 设置为默认编辑器
1 | chsh -s $(which zsh) |
配置 ssh
生成 github 公钥
1 | ssh-keygen -t rsa -C "t511069160@qq.com" -f "~/.ssh/id_rsa_github" |
生成 gitlab 公钥
1 | ssh-keygen -t rsa -C "XX" -f "~/.ssh/id_rsa_gitlab" |
配置 config 文件
1 | Host github |
测试是否配置成功
1 | ssh -T git@github.com |
node 环境
使用 nvm 来控制 node 版本,因为有些老项目还在用 14 版本的
1 | curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash |
如果说安装失败或者安装很慢,就在 /etc/hosts
中将 raw.githubusercontent.com
域名映射下,具体方法可看GitHub520
将配置写进 .nvm 中
1 | export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" |
再让配置立即生效source ~/.zshrc
1 | nvm --version # 0.39.3 |
ruby 环境
使用 rvm 来管理 ruby,安装文档参考官网
安装 GPG keys
1 | gpg2 --keyserver keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB |
报错:
先下载 gnupg2
1 | apt install grupg2 -y |
grupg2 安装好了,就重新 GPG keys。再安装 rvm
1 | curl -sSL https://get.rvm.io | bash -s stable |
安装好后,我们需要修改 ruby 安装源,来提高安装速度
1 | echo "ruby_url=https://cache.ruby-china.com/pub/ruby" > /usr/local/rvm/user/db |
看截图中的绿色字,RVM 安装的路径
使 rvm 命令生效
1 | source /usr/local/rvm/scripts/rvm |
此时,rvm -v
就能看到 rvm 1.29.12(latest)...
安装 ruby
1 | rvm install ruby-3.1.3 |
安装 rails
1 | gem install rails --verbose # --verbose 可以查看进度 |
遇到的问题(一)
之前用 curl -sSL https://get.rvm.io | bash -s stable
安装完后,使用gem install rails
说command not found ubuntu
,解决不了,后来尝试了各种方法安装,例如下载源码,例如用sudo apt-get install ruby-full
,后来都不是很好使
可怪自己 linux 基础太差,英语又不好,下载完 rvm 后,它已经提示了,让我切换用户并重新登录
而我第二次安装的契机是不死心,还是想用 rvm 安装,然后就想到先卸载,再重新安装
发现了 apt-get purge rvm
、apt-get remove rvm
等命令,第二次安装我用了 sudo 命令,安装地址改成了 /usr/shar/rvm
删除 rvm
1 | sudo apt-get purge rvm |
重新安装
1 | curl -sSL https://get.rvm.io | sudo bash -s stable |
第一步,将正在用的用户添加到 rvm 组中
1 | sudo usermod -a -G rvm johan |
第二步,注销-再次登录
我的办法比较土,先切换到 root,再切回来
1 | su root |
第三步,运行生效命令
1 | source /etc/profile.d/rvm.sh |
这样就安装成了
遇到的问题(二)
因为在 WSL 中开发,但是有时候要用手机来查看样式问题,所以需要在手机端访问,但是 WSL 启动的服务,手机端访问不了。笔者对网络方面的知识不了解,也不想了解。按照从局域网访问 WSL2 这篇文章的操作来做
先开启对应端口防火墙,再将 WSL 上的 ip 、端口映射到本地
后续
做事情都要有所目的,当初写 手把手提高开发体验:dev-container 时,想着把环境配置成一致,方便项目部署。但发现所占内存太大,笔记本(12G)带不动。现如今新电脑(32G)虽然可以用此方法来开发,但笔者的目的变了,笔者现如今想学的是 Linux 、bash,使用 WSL 能随时随地接触它,熟悉它,习惯它
开发还是用 WSL ,但是写东西,例如写博客之类的还是会依赖于 Windows,所以真不如别人说的还不如买一台 mac 呢