下載并安裝程序
- 下載并安裝virtualbox
https://www.virtualbox.org/wiki/Downloads - 下載并安裝vagrant
https://www.vagrantup.com/downloads.html - 下載ubuntu/xenial64的box(注意選擇的是Ubuntu 16.04 LTS 64位系統(tǒng)鏡像鼻吮,不要搞錯了捧存,后面換源的時候如果一個14.04的box使用16.04的源击奶,會報錯的
W: Unknown Multi-Arch type 'no' for package 'compiz-core'
的錯誤的骚秦,血的教訓)- 訪問https://app.vagrantup.com/ubuntu/boxes/xenial64
- 點擊最新的版本闷沥,得到鏈接https://app.vagrantup.com/ubuntu/boxes/xenial64/versions/20180510.0.0
- 在尾部手動添加/providers/virtualbox.box補全下載鏈接策添,使用迅雷下載(更快)
https://app.vagrantup.com/ubuntu/boxes/xenial64/versions/20180510.0.0/providers/virtualbox.box
新建項目目錄
vagrant
(隨便啦恋捆,就是用來開發(fā)的項目目錄)棵逊,并將下載的box文件復制進來(不一定需要,只是為了方便后面操作的說明)悼吱,之后的命令都是在這個目錄下進行的
添加box
vagrant box add u14evm xenial-server-cloudimg-amd64-vagrant.box
命令
vagrant box add <boxName> <boxFilePath>
中:
<boxName>
為自己指定的box名字(默認為base)
<boxFilePath>
為下載的box文件本地路徑
其他相關命令:
- 查看box列表:
vagrant box list
- 刪除box:
vagrant box remove <boxName>
vagrant初次安裝
- 初始化vagrant:
vagrant init u14evm
(u14evm
為<boxName>
),生成Vagrantfile
- 安裝并啟動虛擬機:
vagrant up
(第一次才是安裝慎框,之后就只是啟動) - 登錄:
vagrant ssh
這里第二步:
vagrant up
可能會出現(xiàn)Warning: Remote connection disconnect. Retrying...
或Warning: Authentication failure. Retrying...
這個錯誤,可能是自動登不上虛擬機后添。
image.png
打開virtualbox笨枯,看看安裝的虛擬機的運行情況
image.png
發(fā)現(xiàn)是正常啟動的,說明已經(jīng)安裝好了遇西,只是無法自動登錄馅精。點擊上圖上面的顯示,查看虛擬機的終端粱檀,如下圖洲敢,需要登錄
image.png
賬號和密碼都輸入vagrant
,如下可以正常登錄并使用了
image.png解決辦法:改用私鑰登錄
vagrant ssh
默認通過vagrant
賬號(密碼也是vagrant
)登錄虛擬機(查看virtualbox確保虛擬機是啟動狀態(tài)的)ssh-keygen -t rsa
生成rsa公私鑰
image.pngcat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
將公鑰添加到authorized_keys
文件里面
image.pngcat .ssh/id_rsa
查看私鑰梧税,并在目錄新建一個文件id_rsa
將私鑰復制進來
image.pngconfig.ssh.private_key_path = 'id_rsa'
編輯目錄下的Vagrantfile
配置文件沦疾,加入此配置logout
登出虛擬機后,重新vagrant ssh
登錄第队,可以正常登錄了vagrant reload
重啟哮塞,可以看到正常啟動的狀態(tài)了
image.png
如果上面第一步
vagrant ssh
沒有密碼登錄,而是出現(xiàn)publickey密鑰錯誤如下
image.png
vagrant ssh-config
查看配置凳谦,
image.png
是讀取D:/vagrant/.vagrant/machines/default/virtualbox/private_key
的私鑰忆畅,但是根據(jù)https://github.com/hashicorp/vagrant/issues/9433上面說的,是因為沒有那個文件的權限尸执,以及win10系統(tǒng)ssh二進制包的問題家凯,可以試試使用cmder試試。
如果還是不可以的話如失,那就只能先通過virtualbox
使用vagrant
賬戶登錄绊诲,然后在里面生成公私鑰,和前面2褪贵、3步一樣配一下虛擬機的公鑰掂之,將私鑰git push到遠端,主機這邊從遠端拉下私鑰脆丁,執(zhí)行5世舰、7步就可以了。
總之就是自己定義公私鑰槽卫,然后想法設法讓主機和虛擬機通過自己的公私鑰交流
其他相關命令:
啟動虛擬機:vagrant up
(第一次是)
刪除虛擬機:vagrant destroy
暫停虛擬機:vagrant suspend
(推薦)
關閉虛擬機:vagrant halt
(耗時不推薦)
恢復被暫停的虛擬機:vagrant resume
重啟虛擬機:vagrant reload
(每次改了Vagrantfile
配置文件記得重啟)
查看虛擬機狀態(tài):vagrant status
執(zhí)行shell命令:vagrant provision
(用于執(zhí)行一鍵部署)
Vagrantfile
把下面的shell腳本注釋去掉跟压,添加echo "hello world"
,保存并執(zhí)行vagrant provision
測試是否能夠正常使用
config.vm.provision "shell", inline: <<-SHELL
echo "hello world"
SHELL
vagrant開發(fā)環(huán)境搭建
- 配置
Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
# 虛擬機名字<boxName>
config.vm.box = "u14evm"
# 指定私鑰文件路徑
config.ssh.private_key_path = 'id_rsa'
# 橋接網(wǎng)絡
config.vm.network "public_network"
# 映射文件夾
config.vm.synced_folder "./web/", "/var/www/web"
# shell腳本
config.vm.provision "shell", inline: <<-SHELL
# 切換為root用戶運行
sudo su
bash -ex /var/www/web/setup.sh
SHELL
end
- 重啟:
vagrant reload
- 執(zhí)行腳本:
vagrant provision
其中setup.sh
腳本做了以下幾件事:
- 換源
- 安裝依賴
- 配置相應服務器軟件 supervisor nginx redis 等
- 重啟相應服務器軟件 supervisor nginx 等
setup.sh
腳本
# 換源
ln -f -s /var/www/web/misc/sources.list /etc/apt/sources.list
mkdir -p /root/.pip
ln -f -s /var/www/web/misc/pip.conf /root/.pip/pip.conf
# 裝依賴
apt-get update
apt-get -y install nginx
echo 'succsss'
echo 'ip'
hostname -I
misc/sources.list
下寫入ubuntu源(注意虛擬機的版本和源的版本一致)
# 默認注釋了源碼鏡像以提高 apt update 速度歼培,如有需要可自行取消注釋
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# 預發(fā)布軟件源震蒋,不建議啟用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
misc/pip.conf
(清華的pip源)
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/
通過setup.sh
最后的hostname -I
可以查看當前虛擬機的ip地址茸塞,局域網(wǎng)的其他電腦可以通過這個地址訪問虛擬機,如下
因為已經(jīng)安裝了nginx喷好,默認是開啟的翔横,在主機的瀏覽器輸入192.168.1.14
读跷,即可訪問到nginx服務