Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save pastleo/ab1255846b5335407105 to your computer and use it in GitHub Desktop.
Save pastleo/ab1255846b5335407105 to your computer and use it in GitHub Desktop.
在 Windows 用 Vagrant 快速建立你的 Linux 環境

在 Windows 用 Vagrant 快速建立你的 Linux 環境

Vagrant 是啥?

Vagrant 幫助你秒建虛擬機,甚至幫你安裝軟體到這個虛擬機,讓你躺著獲得測試環境

為何要用虛擬機

這樣一來,

  1. 你的 FB 可以開著等人敲你,或是任何等待時間可以拿來做別的事情
  2. 你的 LOL 還是可以開著等人邀你
  3. 環境被你玩到髒了、崩潰了,當成用過的衛生紙丟掉即可
  4. 你建好的環境可以在各種機器中游走 (可攜性),所以也可以任意繁殖,重灌之後虛擬機的靈魂依舊不散(如果你有備份的話)

為何是 Linux (or unix-like)?

簡單,因為 Linux 大多是開放原始碼的,這個特性可以:

  1. 你的軟體不用錢
  2. 原始碼攤在陽光下給大家檢驗

好吧,那要怎麼安裝呢?

  • Vagrant 支援各種虛擬化方式(文件中稱為 provider),本次教學使用 Virtualbox,它免錢又好用,因此下載並安裝

    1. Vagrant
    2. VirtualBox
  • 接著,去Vagrant Cloud尋找別人打包好的 Box (機器映像檔),因為我個人目前最常接觸的環境是 CentOS (來源),因此我選擇 chef/centos-6.5 這個 Box

2015/4/9 Updates: 如果是資訊創意課程的同學,課程中使用的機器名稱 (Box) 為 puphpet/debian75-x64,現在 centos-6.5 已經過於老舊了

  • 打開 CMD (或者終端機),選一個空資料夾,下

     vagrant init <Box>
     // 上面的 <Box> 請改成上面選擇的名稱
    
  • Vagrant 會建立 Vagrantfile,這個檔案敘述了虛擬機的設定,用文字編輯器打開它會發現

     config.vm.box = "剛剛選的 Box 名稱"
    
  • 這行就代表你指定的機器名稱,其他設定基本上不需要更改,因此下

     vagrant up
    
  • 開始正式下載機器並開機,開機過程應該可以發現

     default: SSH address: 127.0.0.1:2222
     default: SSH username: vagrant
     default: SSH auth method: private key
    
  • 因此登入用 SSH (Putty),並且使用私鑰進行登入(而非密碼),這邊的私鑰是由 vagrant 提供的 insecure_private_key ,但是格式為 openssh 的格式,要利用 puttygen 轉換成 ppk 才能讓 putty 使用:

    • 打開 PuttyGen ,選擇 Conversions > Import key
    • PuttyGen1
    • 選擇 <家目錄>\vagrant.d\insecure_private_key ,這是 vagrant 提供的 openssh 的私鑰
    • PuttyGen2
    • 接著按下 Save private key ,把私鑰存到 <你知道的地方>\insecure_private_key.ppk
    • PuttyGen3
  • 接著打開 Putty ,其餘的設定如下,之後登入用的 User name 用 vagrant

    • Host Name: 127.0.0.1
    • Port: 2222
    • Username: vagrant
    • Password: vagrant,如果 vagrant 拒絕你的 private_key 還是可以輸入這個密碼來登入
    • Private key 選擇之前轉換好的 <你知道的地方>\insecure_private_key.ppk
    • Putty1
    • Putty2

2015/4/30 Updates: 後來發現 vagrant 會對獨立虛擬機額外產生 private_key ,所以 insecure_private_key 就沒用了,而這個額外產生的 private_key 放在 <Vagrantfile_folder>\.vagrant\machines\default\virtualbox,所以變成要轉換這個檔案為 ppk 格式給 Putty 來避免輸入密碼
上面利用 puttygenopenssh 的私鑰轉換成的方法,也可以用來轉換 unix 產生的私鑰

  • 成功登入之後,你便可以開始使用你的環境,以上做法只是 最基本,vagrant 有很多設定可以使用,請參考官方文件

關於網路的部分

Vagrant 預設的機器網路只有給 SSH 這個通道而已 (127.0.0.1:2222),如果你要在機器上面架設 Web Service,就沒辦法用原本機器的瀏覽器去看成果,在 Vagrantfile 裡頭的

# config.vm.network "forwarded_port", guest: 80, host: 8080
# config.vm.network "private_network", ip: "192.168.33.10"
# config.vm.network "public_network"

是跟網路有關的設定,把 # 拿掉(反註解)就可以啟動這些設定,建議使用 private_network 這個方法,這樣這台機器就只有原本的主機可以存取,並且 IP 是固定的,以下是 Vagrant 對網路設定的說明

設定完成之後,如果機器已經啟動,要重新 vagrant reload 啟動機器才會套用

一些可能的例外情況

  • 如果出現指令找不到,請到控制台設定環境變數 Path 有沒有 C:\Program Files (x86)\Vagrant\bin,並且每個路徑都用 ; 隔開
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment