# Windos下虛擬機安裝Linux
## Windos下安裝虛擬機
### 推薦安裝`virtualbox`虛擬機
### 簡介
VirtualBox 是一款開源虛擬機軟件。VirtualBox 是由德國 Innotek 公司開發,由Sun Microsystems公司出品的軟件,使用Qt編寫,在 Sun 被 Oracle 收購后正式更名成 Oracle VM VirtualBox。
VirtualBox號稱是最強的免費虛擬機軟件,它不僅具有豐富的特色,而且性能也很優異!(最重要的是內存占用小,而且免費開源,vm正版需要收費而且內存占用大!)
VirtualBox 簡單易用功能強大,一個Box為一個虛擬機,隨用隨配置,不用即銷毀.不用再發愁語言環境配置互相交錯,其特有的打包分發功能,一次配置,永久使用,團隊開發環境,測試環境,保證相同,再也沒有`代碼在我這里正常`這一說法.不管你是PHP,Python,Golang,Ruby等,隨心切換環境,只需要2行命令即可完成!
將環境配置簡單化,省下時間學習新語言!(Laravel官方推薦環境Homestead就是用的`VirtualBox`!)
### 下載:
在這里下載并安裝[VirtualBox ](https://www.virtualbox.org/wiki/Downloads),[Vagrant](https://www.vagrantup.com/downloads.html). 直接下載 GUI 安裝包安裝就行.
>[danger] 注意:
> Vagrant要添加到PATH,具體點這里[Vagrant添加到PATH](https://jingyan.baidu.com/article/7f41ececed3144593d095c2f.html);這樣可以在任何地方使用vagrant,這里推薦使用gitBash命令行
>VirtualBox必須和Vagrant版本匹配(都下載最新就好!)
### 下載一個合適的box
進行完以上步驟后,就需要考慮我們的虛擬機需要使用什么操作系統了,vagrant的開源社區,提供了很多已經打包好的操作系統,在vagrant的世界里被稱為box。在 http://www.vagrantbox.es/ 這里你可以找到你想要的操作系統box,當然你也可以自己制作一個.
>[info] 資源
> [LNMP的Box下載](https://pan.baidu.com/s/1dGutCid)
> 密碼:69vk
### 完成一個box的安裝
首先創建目錄:
`mkdir -m 777 /d/lnmp`
右鍵打開gitBash:
```
$ vagrant box add {title} {url}
$ vagrant init {title}
$ vagrant up
```
vagrant box add 是添加box的命令
其中{title}可以自行設置,title是盒子名稱,如:`ubuntu`,{url}是`.box`文件的位置,如:`d/lnmp/lnmp.box`;

然后可以使用`vagrant box list`來查看安裝的box列表

然后使用`vagrant init lnmp`來初始化box

這樣就會在當前目錄生成一個 Vagrantfile的文件,里面有很多配置信息,默認不做任何配置改動,也是可以啟動系統的。

文件夾共享設置,第一個是windos文件夾位置,第二個是linux文件夾位置(根目錄下的code文件夾,沒有的話自動創建)!
配置基本結束,如果想了解更多配置,自己百度或google
然后使用`vagrant up`來啟動這個awesome的系統吧!(是不是很簡單?省去了vm繁瑣的設置)

>[danger] 注意:
> Vagrant端口22對應2222,ssh連接使用127.0.0.1:2222
>第三個框是文件夾對應
這時,你就可以在gitBash上使用`vagrant ssh`自動連接到lnmp的虛擬主機!
或者使用第三方ssh工具,如xshell等(推薦xshell,簡單功能強大)
>[warning] 提醒:
>xshell連接時,地址為127.0.0.1,
>端口:2222
>用戶名:vagrant
>密碼:vagrant
>

## OK!接下來就享受Linux帶來的樂趣吧!
### 下面是vagrant常用命令!
| 命令 | 作用 |
|---|---|
| vagrant box add | 添加box的操作 |
| vagrant init | 初始化box的操作,會生成vagrant的配置文件Vagrantfile |
| vagrant up | 啟動本地環境 |
| vagrant ssh | 通過 ssh 登錄本地環境所在虛擬機 |
| vagrant halt | 關閉本地環境 |
| vagrant suspend | 暫停本地環境 |
| vagrant resume | 恢復本地環境 |
| vagrant reload | 修改了 Vagrantfile 后,使之生效(相當于先 halt,再 up) |
| vagrant destroy | 徹底移除本地環境 |
| vagrant box list | 顯示當前已經添加的box列表 |
| vagrant box remove | 刪除相應的box |
| vagrant package | 打包命令,可以把當前的運行的虛擬機環境進行打包 |
| vagrant plugin | 用于安裝卸載插件 |
| vagrant status | 獲取當前虛擬機的狀態 |
| vagrant global-status | 顯示當前用戶Vagrant的所有環境狀態 |