Vagrant安裝和使用

下載并安裝程序


新建項(xiàng)目目錄vagrant(隨便啦,就是用來開發(fā)的項(xiàng)目目錄),并將下載的box文件復(fù)制進(jìn)來(不一定需要,只是為了方便后面操作的說明),之后的命令都是在這個(gè)目錄下進(jìn)行的

添加box


vagrant box add u14evm xenial-server-cloudimg-amd64-vagrant.box

image.png

命令vagrant box add <boxName> <boxFilePath>中:
<boxName>為自己指定的box名字(默認(rèn)為base)
<boxFilePath>為下載的box文件本地路徑

其他相關(guān)命令:

  • 查看box列表:vagrant box list
  • 刪除box:vagrant box remove <boxName>

vagrant初次安裝


  • 初始化vagrant:vagrant init u14evmu14evm<boxName>),生成Vagrantfile
  • 安裝并啟動(dòng)虛擬機(jī):vagrant up(第一次才是安裝,之后就只是啟動(dòng))
  • 登錄:vagrant ssh

這里第二步:vagrant up
可能會(huì)出現(xiàn)Warning: Remote connection disconnect. Retrying...Warning: Authentication failure. Retrying...這個(gè)錯(cuò)誤,可能是自動(dòng)登不上虛擬機(jī)。

image.png

打開virtualbox,看看安裝的虛擬機(jī)的運(yùn)行情況

image.png

發(fā)現(xiàn)是正常啟動(dòng)的,說明已經(jīng)安裝好了,只是無法自動(dòng)登錄。點(diǎn)擊上圖上面的顯示,查看虛擬機(jī)的終端,如下圖,需要登錄
image.png

賬號和密碼都輸入vagrant,如下可以正常登錄并使用了
image.png

解決辦法:改用私鑰登錄

  1. vagrant ssh 默認(rèn)通過vagrant賬號(密碼也是vagrant)登錄虛擬機(jī)(查看virtualbox確保虛擬機(jī)是啟動(dòng)狀態(tài)的)
  2. ssh-keygen -t rsa 生成rsa公私鑰
    image.png
  3. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 將公鑰添加到authorized_keys文件里面
    image.png
  4. cat .ssh/id_rsa 查看私鑰,并在目錄新建一個(gè)文件id_rsa將私鑰復(fù)制進(jìn)來
    image.png
  5. config.ssh.private_key_path = 'id_rsa' 編輯目錄下的Vagrantfile配置文件,加入此配置
  6. logout 登出虛擬機(jī)后,重新vagrant ssh登錄,可以正常登錄了
  7. vagrant reload重啟,可以看到正常啟動(dòng)的狀態(tài)了
    image.png

如果上面第一步vagrant ssh沒有密碼登錄,而是出現(xiàn)publickey密鑰錯(cuò)誤如下

image.png

vagrant ssh-config查看配置,
image.png

是讀取D:/vagrant/.vagrant/machines/default/virtualbox/private_key的私鑰,但是根據(jù)https://github.com/hashicorp/vagrant/issues/9433上面說的,是因?yàn)闆]有那個(gè)文件的權(quán)限,以及win10系統(tǒng)ssh二進(jìn)制包的問題,可以試試使用cmder試試。
如果還是不可以的話,那就只能先通過virtualbox使用vagrant賬戶登錄,然后在里面生成公私鑰,和前面2、3步一樣配一下虛擬機(jī)的公鑰,將私鑰git push到遠(yuǎn)端,主機(jī)這邊從遠(yuǎn)端拉下私鑰,執(zhí)行5、7步就可以了。
總之就是自己定義公私鑰,然后想法設(shè)法讓主機(jī)和虛擬機(jī)通過自己的公私鑰交流

其他相關(guān)命令:
啟動(dòng)虛擬機(jī):vagrant up(第一次是)
刪除虛擬機(jī):vagrant destroy
暫停虛擬機(jī):vagrant suspend(推薦)
關(guān)閉虛擬機(jī):vagrant halt (耗時(shí)不推薦)
恢復(fù)被暫停的虛擬機(jī):vagrant resume
重啟虛擬機(jī):vagrant reload(每次改了Vagrantfile配置文件記得重啟)
查看虛擬機(jī)狀態(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
image.png

vagrant開發(fā)環(huán)境搭建

  • 配置Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|

  # 虛擬機(jī)名字<boxName>
  config.vm.box = "u14evm"

  # 指定私鑰文件路徑
  config.ssh.private_key_path = 'id_rsa'
  
  # 橋接網(wǎng)絡(luò)
  config.vm.network "public_network"

  # 映射文件夾
  config.vm.synced_folder "./web/", "/var/www/web"

  # shell腳本
  config.vm.provision "shell", inline: <<-SHELL
    # 切換為root用戶運(yùn)行
    sudo su
    bash -ex /var/www/web/setup.sh
  SHELL
end
  • 重啟:vagrant reload
  • 執(zhí)行腳本:vagrant provision

其中setup.sh腳本做了以下幾件事:

  • 換源
  • 安裝依賴
  • 配置相應(yīng)服務(wù)器軟件 supervisor nginx redis 等
  • 重啟相應(yīng)服務(wù)器軟件 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源(注意虛擬機(jī)的版本和源的版本一致)

# 默認(rèn)注釋了源碼鏡像以提高 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

# 預(yù)發(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可以查看當(dāng)前虛擬機(jī)的ip地址,局域網(wǎng)的其他電腦可以通過這個(gè)地址訪問虛擬機(jī),如下

image.png

因?yàn)橐呀?jīng)安裝了nginx,默認(rèn)是開啟的,在主機(jī)的瀏覽器輸入192.168.1.14,即可訪問到nginx服務(wù)

image.png

參考鏈接


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1,介紹Vagrant 我們做web開發(fā)的時(shí)候經(jīng)常要安裝各種本地測試環(huán)境,比如apache,php,mysql,r...
    meng_philip123閱讀 2,642評論 0 12
  • 1. Vagrant 的介紹 虛擬開發(fā)環(huán)境 平常我們經(jīng)常會(huì)遇到這樣的問題:在開發(fā)機(jī)上面開發(fā)完畢程序,放到正式環(huán)境之...
    斐波那契額閱讀 1,962評論 1 12
  • 開發(fā)需要在各種系統(tǒng)上進(jìn)行開發(fā)任務(wù),運(yùn)維則需要在各種系統(tǒng)上學(xué)習(xí)工具使用。因此,虛擬機(jī)恐怕也是 IT 人員最常使用的工...
    李廣慧閱讀 5,686評論 3 24
  • 如果文章對你有所幫助,請點(diǎn)喜歡并關(guān)注,這將是我最大的動(dòng)力,謝謝 構(gòu)造方法是類里的一個(gè)特殊的方法,他不能有返回值(包...
    光哥很霸氣閱讀 24,217評論 2 20
  • 我總結(jié)了下恒恒平時(shí)的喝水習(xí)慣,你們參考哈,每個(gè)孩子不一樣,所以也要區(qū)分對待噠! 1. 口唇干燥。寶寶不斷用舌頭舔嘴...
    Tony恒閱讀 231評論 0 0

友情鏈接更多精彩內(nèi)容