兩年前寫過一篇關於Vagrant,最近由於環境須要重溫了一下,因此又從新作了一次總結。html
Vagrant是什麼mysql
Vagrant是構建在虛擬化技術之上的虛擬機運行環境管理工具。經過Vagrant能夠輕鬆實現對虛擬機的管理,包括創建和刪除虛擬機、配置虛擬機運行參數、管理虛擬機運行狀態、自動化配置和安裝開發環境各種軟件、打包和分發虛擬機運行環境等,提供了一套基於配置文件和命令行的管理工具。sql
爲何要使用Vagrantubuntu
Vagrant能夠爲團隊開發成員提供一份服務器運行環境的虛擬機,你們都使用統一的開發環境,避免「在我機器上運行是好的,怎麼在你機器上不能運行」問題的發生。服務器
Vagrant中Boxes是什麼網絡
Boxes是一個包含可運行的操做系統及軟件的鏡像包,你能夠把它理解成一個箱子,箱子裏面包含了虛擬機配置、虛擬機硬盤鏡像,能夠直接被添加到Vagrant中使用。使用box,將再也不須要下載ISO鏡像文件、新建虛擬機、修改虛擬機配置等操做,由於box文件已經包含了這些,可直接拿過來使用。ssh
Vagrant安裝、配置及使用ide
1.下載VirtualBox並安裝工具
在線下載地址https://www.virtualbox.org/wiki/Downloads測試
2.下載Vagrant並安裝
能夠到https://www.vagrantup.com/downloads.html,選擇須要的版本進行下載。
3.下載box
vagrantbox種類比較多,能夠到http://www.vagrantbox.es/,選擇須要的類型進行下載,示例使用下載了Ubuntu precise 64 VirtualBox版本,地址:http://files.vagrantup.com/precise64.box
4.使用box
在使用box以前,建立如下目錄結構:
|--Applications
|--vagrant
|--boxes
|—works
執行如下命令:
cd ~/Applications/
mkdir vagrant
cd vagrant
mkdir boxes
mkdir works
而後將下載的precise64.box移動到boxes目錄下,而後執行如下命令:
vagrant box add ubuntu precise64.box
cd ..
cd works
vagrant init ubuntu #在works目錄下生成Vagrantfile文件
5.修改Vagrantfile文件
找到config.vm.network 「public_network",去掉前面的#,而後換行,在其後添加須要的端口映射,如mysql端口,
config.vm.network "forwarded_port", guest: 3306, host: 3306
而後保存。
6.啓動Vagrant
使用命令:vagrant up
若是執行受限,使用sudo。啓動過程當中,可能須要選擇網絡方式,以下圖。
這裏能夠選擇1) en0: Wi-Fi (AirPort),而後繼續啓動,若是沒有報錯,則啓動成功。這裏可能每次啓動都須要作選擇網絡方式,能夠配置成自動的方式,即修改Vagrantfile文件,在config.vm.network 「public_network」後添加bridge: "en0: Wi-Fi (AirPort)」,結果以下。
7.驗證是否啓動成功
進入works目錄下,執行如下命令:
vagrant ssh
成功鏈接則啓動成功,而後就能夠在虛擬機系統中安裝應用及操做了,例如安裝mysql等。
8.安裝MySQL
執行如下命令安裝MySQL,
sudo apt-get update
sudo apt-get install mysql-server #過程當中須要設置root用戶的密碼,必定要記住
sudo mysql_secure_installation #配置MySQL
9.驗證MySQL是否安裝成功
在第8步驟的命令行繼續執行命令,
mysql -u root -p
輸入密碼後,若是成功進入則安裝和啓動成功。
10.虛擬機外鏈接MySQL
MySQL是在虛擬機中安裝啓動的,在外部要使用客戶端進行鏈接訪問,須要作以下操做:
10.1 進入works目錄,執行vagrant ssh,而後執行mysql -u root -p,進入mysql,接着執行grant all privileges on *.* to 'root'@'%' identified by '密碼' with grant option;,接着執行flush privileges;,最後退出。
10.2 接上一步,執行sudo vi /etc/mysql/my.cnf,找到bind_address=127.0.0.1,在其前面添加#,保存。
10.3 關閉Vagrant,而後從新啓動Vagrant。
10.4 在外部使用任意MySQL客戶端作鏈接測試。
11.關閉Vagrant
進入works目錄下,執行如下命令:
vagrant halt
12.導出本地box
構建好的開發環境能夠導出給團隊成員使用,這樣團隊的開發環境就統一了。可使用以下命令導出box,
vagrant package --base 虛擬機實例的名稱 --output 導出後的box名稱
例如:
vagrant package --base works-default-1569977899-11232 --output new-box.box
這裏須要注意的是虛擬機實例的名稱,這個名稱是虛擬機裏面實例的名稱,能夠到VirtualBox中查看。