1. 安裝Vagrant與VirtualBox
Vagrant
Vagrant是一個基于Ruby的工具,用于創(chuàng)建和部署虛擬化開發(fā)環(huán)境。它 使用Oracle的開源VirtualBox虛擬化系統(tǒng),使用 Chef創(chuàng)建自動化虛擬環(huán)境。
下載地址
VirtualBox
VirtualBox 是一款開源虛擬機軟件
Download
2. 添加box
// 查看box列表
C:\Users\DELL>vagrant box list
There are no installed boxes! Use `vagrant box add` to add some.
// 添加box
C:\Users\DELL>vagrant box add puphpet/centos65-x64
==> box: Successfully added box 'puphpet/centos65-x64' (v20161102) for 'virtualbox'!
3. 初始化,啟動,連接
// 在桌面新建guosk文件夾來初始化Vagrant
C:\Users\DELL\Desktop\guosk>vagrant box list
puphpet/centos65-x64 (virtualbox, 20161102)
// 初始化
C:\Users\DELL\Desktop\guosk>vagrant init puphpet/centos65-x64
// 啟動Vagrant
C:\Users\DELL\Desktop\guosk>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'puphpet/centos65-x64'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'puphpet/centos65-x64' is up to date...
==> default: Setting the name of the VM: guosk_default_1479728274627_41041
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default: Warning: Remote connection disconnect. Retrying...
default:
default: Vagrant insecure key detected. Vagrant will automatically replace
default: this with a newly generated keypair for better security.
default:
default: Inserting generated public key within guest...
default: Removing insecure key from the guest if it's present...
default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
default: The guest additions on this VM do not match the installed version of
default: VirtualBox! In most cases this is fine, but in rare cases it can
default: prevent things such as shared folders from working properly. If you see
default: shared folder errors, please make sure the guest additions within the
default: virtual machine match the version of VirtualBox you have installed on
default: your host and reload your VM.
default:
default: Guest Additions Version: 5.0.26
default: VirtualBox Version: 5.1
==> default: Mounting shared folders...
default: /vagrant => C:/Users/DELL/Desktop/guosk
PuTTY是一個Telnet、SSH、rlogin、純TCP以及串行接口連接軟件。
Download
使用putty.exe連接到虛擬機
login as: vagrant
vagrant@127.0.0.1's password:
Last login: Mon Nov 21 11:47:02 2016 from 10.0.2.2
[vagrant@localhost ~]$ pwd
/home/vagrant
4. 啟動,停止,重啟,銷毀
// 啟動
vagrant up
// 停止
vagrant halt
// 使用ssh連接
vagrant ssh
// 安裝Apach服務器
sudo yum install httpd
// 啟動服務器
[vagrant@localhost ~]$ sudo service httpd start
exit
// 暫停虛擬機
vagrant suspend
// 恢復虛擬機
vagrant resume
// 重啟
vagrant reload
// 銷毀
vagrant destroy
yum
Yum(全稱為 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及CentOS中的Shell前端軟件包管理器。基于RPM包管理,能夠從指定的服務器自動下載RPM包并且安裝,可以自動處理依賴性關(guān)系,并且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝。
5. 共享的目錄
默認情況下,vagrant會共享我們的項目目錄,在項目的虛擬機里面,會有一個跟我們的項目的目錄是同步的。這樣我們可以在本地的電腦上去編輯項目的文件,然后在虛擬機上運行它們。
// 虛擬機內(nèi)的'/vagrant'目錄和本地的項目目錄同步
default: /vagrant => C:/Users/DELL/Desktop/guosk
6. 配置共享目錄
如果有額外的目錄要跟虛擬機同步的話,可以通過修改Vagrantfile這個文件,去添加這些額外的共享目錄。
// Vagrantfile
config.vm.synced_folder "../data", "/vagrant_data",
create: true, owner: "root", group: "root"
// creat:如果本地data文件夾不存在,就會創(chuàng)建
// owner:目錄的擁有者
// group:所屬群組
// 重啟Vagrant
vagrant reload
default: /vagrant => C:/Users/DELL/Desktop/guosk
default: /vagrant_data => C:/Users/DELL/Desktop/data
// vagrant目錄的擁有者和群組是vagrant
drwxrwxrwx. 1 vagrant vagrant 0 Nov 21 12:28 vagrant
// vagrant_data目錄的所有者和所屬群組是root
drwxrwxrwx. 1 root root 0 Nov 21 12:41 vagrant_data
7. 網(wǎng)絡配置
Vagrant提供了三種方法:私有網(wǎng)絡、公有網(wǎng)絡、端口轉(zhuǎn)發(fā)
8. 私有網(wǎng)絡
// Vagrantfile
config.vm.network "private_network", ip: "192.168.33.10"
// 開啟私有網(wǎng)絡并重啟
// 然后本機和虛擬機之間就可以通信了
9. 公有網(wǎng)絡
如果想讓同一局域網(wǎng)內(nèi)的其他設備也可以訪問虛擬機的話,需要去配置公有網(wǎng)絡。
// Vagrantfile
config.vm.network "public_network"
// 設置公有網(wǎng)絡并重啟
vagrant ssh
// ssh登錄
ifconfig
// 查詢ip
inet addr:192.168.1.185 Bcast:192.168.1.255 Mask:255.255.255.0
// 虛擬機共有網(wǎng)絡IP
10. 搭建Web服務器
在虛擬機上搭建一個Web服務器來測試配置好的網(wǎng)絡。
// 安裝Apach服務器
sudo yum install httpd
// 安裝Vim
sudo yum install vim
$ sudo vim /etc/httpd/conf/httpd.conf
// 編輯Apach的配置文件
NameVirtualHost *:80
<VirtualHost *:80>
# ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /vagrant/www/
# ServerName dummy-host.example.com
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
// 將www目錄設置為虛擬機的根目錄
// 啟動httpd
$ sudo service httpd start
// 查看虛擬機共有IP
$ ifconfig
192.168.1.185
瀏覽器訪問192.168.1.185訪問vagrant里面的www這個目錄里面的東西;
為/vagrant跟我們電腦上的項目的目錄是同步的,所以,我們可以本地開發(fā)項目,然后通過在虛擬機上配置好的環(huán)境去運行項目。
11. 打包分發(fā)
// 打包之前先刪除一個文件
sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules
// 執(zhí)行打包
vagrant package
打包完成后會在當前目錄生成一個package.box文件,將這個文件傳給其他用戶,其他用戶只要添加這個box并用其初始化自己的開發(fā)目錄就能得到一個一模一樣的開發(fā)環(huán)境了。