window下的开发之旅
这里致力于打造
window
+vagrant
+virtualbox
+vscode
的一个舒适的开发环境。
- vagrant (虚拟机管理工具)
- virtuxlbox (虚拟机)
- vscode (微软开源编辑器,可以自行打造ide)
软件安装
window下包管理工具两款
scoop也许思路很好但是没有chocolatey版本管理好,而且chocolatey可以面向企业用户,而且可以编写配置文件保持统一的开发环境,所以建议chocolatey用起来,scoop看个人喜好吧。
启用安装wsl子系统
仅限win10。
-
进入控制面板->程序和功能->启用或关闭window功能,勾选如下选项.
-
进入win10商店搜索linux,找到ubuntu18进入安装。
-
启动,进入会让你设置用户名和密码,设置好进入系统,配置国内阿里镜像,参考一下地址。
https://developer.aliyun.com/mirror/ubuntu?spm=a2c6h.13651102.0.0.3e221b11loPlxM
说明:既然要用命令行就一定要会基本的vim操作,进入wsl后输入
sudo apt install vim
,安装vim ,编辑文件例如1.txt,输入命令vim 1.txt
, vim分为很多种模式,刚开始用只需要记住进入后按i
, 小写的,就进入了编辑模式(这样就和普通编辑器一样了),编辑完成后,按ecs
就进入了初始的命令模式,不管你在什么模式下只要按esc
都会进入到初始的命令模式,编辑完成后进入命令模式输入:
, 然后输入w
是保存的意思,回车执行命令保存
,退出的话就是:
后输入q
退出,当然这两个也可以连起来用:
, 输入wq
, 代表保存退出,好了说到这里至少配置个加速地址是没有问题的吧。
- 配置完成加速地址后,可以执行以下指令。
# 更新系统软件
sudo apt update
sudo apt upgrade
# 删除没有用的软件包
sudo apt autoremove
vagrant的安装和使用
咱们用vagrant是用来测试处理工作的,想玩图形化界面那你还是自己安装虚拟机吧,或者找一个带图形化的镜像或者自己进入命令行安装图形界面,或者自己直接将自己的物理机装成linux岂不是快哉。
vagrant和virtualbox的安装
在使用vagrant之前请先安装好virtualbox虚拟机,如果前面的软件安装中提到的软件安装管理工具你安装了的话你可以这样。
choco install virtualbox
而且你要安装指定版本你可以如以下一样执行命令:
choco install virtualbox --version=6.1.4
软件包你可以直接到官网搜索信息非常全面https://chocolatey.org/。
vagrant的安装你可以直接执行以下命令:
choco install vagrant --version=2.2.7
vagrant的基本使用
vagrant所有配置基于Vagrantfile配置文件,我们找一个空的文件夹执行一下命令
vagrant init centos7
在目录下就会自动生成配置文件
接着执行以下指令, 没有问题的话,首先会上官网给你下载centos7镜像,然后给你创建一个虚拟机,然后你在virtualbox的管理界面就会看到创建好的虚拟机,这一切都非常理想,但是在国内,镜像要是这样下载可能就一直等着吧,等到失败。
vagrant up
所以这里主要想说的是咱们要学会自己去下载镜像并添加镜像,官网镜像地址https://app.vagrantup.com/boxes/search, 搜索一下centos ,找到centos7进去往下翻找到
这个就是centos官网提供的镜像有vitualbox需要的咱们进入网址,一直深入目录咱们是7我相信你能找到的,贴一下链接
http://cloud.centos.org/centos/7/vagrant/x86_64/images/, 下载CentOS-7-x86_64-Vagrant-2001_01.VirtualBox.box
, 版本自己自行选择,下载时找个下载工具迅雷也可以,当然你也可以用开源的motrix
, 是的可以choco install motrix
这样安装。
下载完成后进入相应的目录,执行以下命令添加镜像。
vagrant box add centos7 ./CentOS-7-x86_64-Vagrant-2001_01.VirtualBox.box
操作完成之后在执行vagrant up
, 等一会执行完成之后观察virtualbox界面你的虚拟机就被创建出来了.
因为我的文件夹叫做docker所以会以docker开头,你的文件夹是什么名字就会以什么开头。
然后在目录下执行指令, 你就进入了虚拟机的命令行界面
vagrant ssh
看我的界面,我已经做了一些操作了。
常用管理命令
$ vagrant init #初始化,实质应是创建Vagrantfile文件
$ vagrant up #启动虚拟机
$ vagrant halt #关闭虚拟机
$ vagrant reload #重启虚拟机
$ vagrant ssh #SSH至虚拟机
$ vagrant status #查看虚拟机运行状态
$ vagrant destroy #销毁(删除)当前虚拟机(除Vagrantfile中的配置所有数据都不会保留)
$ vagrant suspend #暂停虚拟机——只是暂停,虚拟机内存等信息将以状态文件的方式保存在本地,可以执行恢复操作后继续使用
$ vagrant resume #恢复虚拟机 —— 与前面的暂停相对应
box管理
$ vagrant box list
$ vagrant box add
$ vagrant box remove
重启并生效配置,修改了Vagrantfile的情况下,执行以下命令:
vagrant reload --provision
其它详细内容请查看官网文档:https://www.vagrantup.com/docs/index.html
wsltty终端的使用
window下的终端powershell或者cmd 界面展示的字符总是容易错行,反正看着不爽,这个wsltty专门为wsl出的终端用着感觉还不错。
安装
choco install wsltty
安装后搜索脚本,如下执行
当然我这个是安装了zsh和更换了主题之后的,可以自行安装zsh以及右击标题栏进入设置调整主题。
让我们在子系统下安装docker
这里我的方案其实是让wsl中的docker调用虚拟机中的进程,自己搜索以下wsl就知道了,总之wsl还是不要运行docker后台进程了,用一套构建工具就够了。
两个仓库来让我的操作更加简便:
首先将vagrant-template克隆到你自己的目录里面,进入目录docker,然后vagrant up
, 一会一个安装了docker的虚拟机就诞生了,这里用的镜像就是centos7 和我们上面提到的一样。
创建虚拟机之后咱们在wsl内执行指令安装docker.
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
因为我们要操作的是虚拟机中的docker,这里我们不需要运行docker, 只需要配置环境变量
export DOCKER_HOST=tcp://192.168.99.2:2375
编辑~/.bashrc加入这一行然后执行source ~/.bashrc
或者关闭界面重新进入输入docker ps
然后我们的docker就安装完成了,就这么简单,因为咱们的模板仓库中的docker模板配置了私有网络,ip为192.168.99.2
,所以咱们访问这个ip可以访问到这个虚拟机。
第二个仓库就是让咱们可以生成wsl中的配置可以ssh hostname直接操作虚拟机的,这样的话使用wsltty界面各种字符的显示就好太多了,使用如下,也可以参见仓库,克隆下来需要配置path环境变量,可以配置到~/.bashrc
,例如
export PATH=$PATH:/home/xuzhen97/tool-script
然后操作像配置docker环境变量一样,让咱们的这个生效。执行以下指令(这里可以看出的是在wsl下可以调用exe)
vagrant.exe ssh-config | vagrant-wslssh.py docker >> ~/.ssh/config
然后咱们ssh docker
,你发现咱们可以进入虚拟机了。
说明:vagrant.exe ssh 进入后tmux的鼠标模式无效,ssh docker有效。
WSL连接远程服务器乱码问题
使用如下命令修改Ubuntu子系统的LANG
sudo vim /etc/default/locale
之前的LANG为:
LANG=C.UTF-8
改为:
LANG=zh_CN.UTF-8
然后安装对应的语言包
sudo apt-get install language-pack-zh-hans
最后关掉当前的子系统窗口重开即可。
vscode直接连接虚拟机
vscode安装Remote Development扩展
vscode直接连接wsl
如果主机安装了wsl安装扩展后进入可以直接进入wsl, 自己慢慢体验吧,很多功能非常方便,尤其是编写python脚本时,这里的脚本目的是为wsl写的时候就更明显了。
vscode链接vagrant创建的虚拟机
-
到虚拟机初始化的目录下打开powershell执行以下指令
-
给我们的虚拟机改个名字
-
连接我们的虚拟机并操作