原來(lái)做網(wǎng)站后來(lái)跑?chē)?guó)外了教育機(jī)構(gòu)排名
目錄
- 前言
- 一、軟件下載及安裝
- 1.下載
- 2.安裝
- 擴(kuò)展:
- 二、創(chuàng)建一個(gè)虛擬機(jī)
- 1.Vagrant官方鏡像倉(cāng)庫(kù)
- 三、使用遠(yuǎn)程工具連接虛擬機(jī)
- 1.修改相關(guān)配置文件
- 四、虛擬機(jī)克隆及使用
- 1.通用配置
- 2.簡(jiǎn)單搭建一個(gè)java環(huán)境
- 3.克隆虛擬機(jī)
- 1.重命名虛擬機(jī)(可選)
- 2.打包指定名稱的虛擬機(jī)
- 五、異常情況處理
- 1.up啟動(dòng)報(bào)錯(cuò)
- 2.身份驗(yàn)證失敗
前言
????目前我用虛擬機(jī)主要作用是模擬linux系統(tǒng)下當(dāng)服務(wù)器使用,直接用vmware虛擬機(jī)或者VirtualBox虛擬機(jī)進(jìn)行搭建相關(guān)開(kāi)發(fā)環(huán)境耗時(shí),并且很多步驟冗余,至此想要探尋簡(jiǎn)化配置步驟,并且可以一次搭建多次復(fù)用的方式,我們從使用Vagrant開(kāi)始,然后我們還有去探索克隆虛擬機(jī),搭建完基礎(chǔ)環(huán)境之后移植到其他機(jī)器也能快速使用的方法。
一、軟件下載及安裝
我這里是win環(huán)境下安裝相關(guān)軟件。博客那沒(méi)多,要搞就搞點(diǎn)不一樣的,都安裝最新版本。
1.下載
Vagrant下載
截止2024/7/8最新版本為2.4.1版本,我是win64位系統(tǒng),選擇amd64,如果你的電腦是非常舊的版本或32位選擇I686
VirtualBox下載
我就想要下載舊一些的版本,他可能穩(wěn)定或者相關(guān)資料更多一些,這里也提供舊版本下載提示。
直達(dá)鏈接
2.安裝
①安裝VirtualBox
在選擇安裝位置時(shí),你是否也把目錄切換到了其他磁盤(pán)而不是默認(rèn)的系統(tǒng)盤(pán)
解決方式有兩種
第一種:不喜歡折騰的同學(xué),直接換回系統(tǒng)盤(pán)安裝。
第二種:分兩種情況
第一種情況:選擇其他盤(pán)后,建一個(gè)根目錄,把它安裝到該目錄下。需要做一些準(zhǔn)備。
例如我把它安裝到了某個(gè)目錄下:
需要?jiǎng)?chuàng)建完該文件夾后執(zhí)行如下命令,以管理員身份運(yùn)行cmd程序,執(zhí)行如下幾行代碼。
icacls A:\VirtualBox /reset /t /c
icacls A:\VirtualBox /inheritance:d /t /c
icacls A:\VirtualBox /grant *S-1-5-32-545:(OI)(CI)(RX)
icacls A:\VirtualBox /deny *S-1-5-32-545:(DE,WD,AD,WEA,WA)
icacls A:\VirtualBox /grant *S-1-5-11:(OI)(CI)(RX)
icacls A:\VirtualBox /deny *S-1-5-11:(DE,WD,AD,WEA,WA)
執(zhí)行完畢,重新安裝并且選擇你執(zhí)行過(guò)的目錄即可安裝。
情況2:更換其他磁盤(pán),并且不是放在更目錄,此時(shí)你需要把指定目錄和對(duì)應(yīng)的根目錄都執(zhí)行一次,我嫌麻煩就沒(méi)這么搞了。
②安裝Vagrant
這個(gè)就沒(méi)啥好選的了,最新版沒(méi)找到選擇安裝目錄的位置。在最后一步時(shí),你選擇了yes會(huì)立刻重啟你的電腦。
其他情況暫時(shí)未遇到問(wèn)題。
擴(kuò)展:
①
icacls工具:管理文件和目錄的訪問(wèn)控制列表,這些操作類(lèi)似于linux對(duì)目錄用戶組進(jìn)行權(quán)限分配和設(shè)置。資料來(lái)源網(wǎng)絡(luò),如果錯(cuò)誤還請(qǐng)指正。
1- icacls A:\VirtualBox /reset /t /c
這個(gè)命令將重置A:\VirtualBox
目錄及其所有子目錄和文件的權(quán)限為默認(rèn)設(shè)置。/t
參數(shù)表示操作遞歸應(yīng)用于所有子目錄和文件,/c
參數(shù)則表示如果遇到錯(cuò)誤,命令會(huì)繼續(xù)處理其他項(xiàng)。
2- icacls A:\VirtualBox /inheritance:d /t /c
此命令禁用了A:\VirtualBox
目錄及其子目錄的繼承權(quán)限。inheritance:d表示刪除現(xiàn)有的繼承權(quán)限條目,/t
和/c
與上一個(gè)命令相同
3- icacls A:\VirtualBox /grant *S-1-5-32-545:(OI)(CI)(RX)
這個(gè)命令向A:\VirtualBox
目錄及其子目錄授予對(duì)用戶組*S-1-5-32-545
(通常是本地用戶組)的讀取權(quán)限。(OI
)表示對(duì)象繼承,(CI
)表示容器繼承,(RX
)是讀取權(quán)限的縮寫(xiě)。
4- icacls A:\VirtualBox /deny *S-1-5-32-545:(DE,WD,AD,WEA,WA)
此命令拒絕A:\VirtualBox
目錄及其子目錄中*S-1-5-32-545
用戶組的多種權(quán)限:刪除、寫(xiě)入數(shù)據(jù)、添加子目錄、寫(xiě)入擴(kuò)展屬性、寫(xiě)入屬性等。
5- icacls A:\VirtualBox /grant *S-1-5-11:(OI)(CI)(RX)
類(lèi)似于第三個(gè)命令,但這次是向*S-1-5-11
(通常是管理員組)授予讀取權(quán)限。
6- icacls A:\VirtualBox /deny *S-1-5-11:(DE,WD,AD,WEA,WA)
同第四個(gè)命令,但這次是對(duì)*S-1-5-11
用戶組拒絕多種權(quán)限。
②
如果你的電腦沒(méi)有開(kāi)啟虛擬化,需要進(jìn)入bois進(jìn)行開(kāi)始虛擬化設(shè)置!!!每個(gè)人電腦多少有一些差異,如果沒(méi)有找到請(qǐng)按照自己電腦型號(hào)去網(wǎng)上查一下在哪塊開(kāi)啟
二、創(chuàng)建一個(gè)虛擬機(jī)
1.Vagrant官方鏡像倉(cāng)庫(kù)
倉(cāng)庫(kù)地址
我們使用vagrant 進(jìn)行虛擬機(jī)的創(chuàng)建,使用他對(duì)應(yīng)的官方鏡像進(jìn)行l(wèi)inux系統(tǒng)的創(chuàng)建。
相關(guān)命令在他的文檔中有體現(xiàn)
初始化一個(gè)centos7虛擬機(jī),啟動(dòng)虛擬機(jī)。
cmd執(zhí)行如下命令
vagrant init centos/7
vagrant up
啟動(dòng)虛擬機(jī)
vagrant up
三、使用遠(yuǎn)程工具連接虛擬機(jī)
1.修改相關(guān)配置文件
使用遠(yuǎn)程工具連接虛擬機(jī)。
這里的網(wǎng)絡(luò)和之前博客不太一樣,注意甄別。找到對(duì)應(yīng)的虛擬機(jī)網(wǎng)卡信息
ipconfig
修改vagrant配置文件,把對(duì)應(yīng)的ip設(shè)置為靜態(tài)ip,在192.168.56.xx網(wǎng)段下即可
我的在第35行
首先,使用win的cmd進(jìn)行遠(yuǎn)程ssh連接,修改一下linux中的一些ssh連接設(shè)置。
vagrant ssh
切換root用戶,密碼為:vagrant
·改參數(shù)值,找到 PasswordAuthentication 改為yes
vi /etc/ssh/sshd_config
剛進(jìn)入文件時(shí),使用vi的搜索功能。
/Passw
此時(shí)定位到對(duì)應(yīng)的內(nèi)容后,按i
鍵進(jìn)行編輯。
:wq
重啟ssh服務(wù)
systemctl restart sshd
此時(shí)使用你自己的ssh工具即可進(jìn)行訪問(wèn)
ip:192.168.56.10
username:root
password:vagrant
四、虛擬機(jī)克隆及使用
1.通用配置
更換一下國(guó)內(nèi)yum源
先備份原有配置
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
創(chuàng)建一個(gè)新的repo文件
sudo vi /etc/yum.repos.d/alimirror.repo
編輯新的源
[alimirror]
name=alimirror
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=0
enabled=1
清理緩存并更新元數(shù)據(jù)
yum clean all
yum makecache fast
更新yum
yum update
安裝vim
yum install -y vim-enhanced
2.簡(jiǎn)單搭建一個(gè)java環(huán)境
下載一個(gè)jdk包
此處省略相關(guān)配置環(huán)境變量等,主要為了驗(yàn)證克隆之后是否能生效和使用。
3.克隆虛擬機(jī)
為虛擬機(jī)配置環(huán)境變量,這塊不需要非得抄我的知道怎么配環(huán)境變量的同學(xué)自行配置即可
1.
1.重命名虛擬機(jī)(可選)
為什么要對(duì)虛擬機(jī)重命名?
因?yàn)檫@樣克隆虛擬機(jī)時(shí),可以指定克隆那個(gè)虛擬機(jī),當(dāng)然你如果不想進(jìn)行重命名,也有支持打包當(dāng)前運(yùn)行中的虛擬機(jī)方式。但是如果你同時(shí)需要啟動(dòng)多個(gè)虛擬機(jī)時(shí),這塊隨意,不影響功能使用,這塊也稍微麻煩一些,不想麻煩的可以跳過(guò),個(gè)人感覺(jué)用處不大。
查詢當(dāng)前虛擬機(jī)名稱
vagrant status
就叫default
重命名虛擬機(jī)名稱,為第一步使用vagrant 打包做準(zhǔn)備。
先關(guān)閉當(dāng)前虛擬機(jī)。
1.修改Vagrantfile配置文件,增加虛擬機(jī)名稱配置,就挨著config.vm.box配置再上放增加一行即可,結(jié)束時(shí)需要增加end。
config.vm.define "vm1" do |node|xxxxconfig.vm.box = "centos/7"end
示例:
Vagrant.configure("2") do |config|config.vm.define "vm1" do |node|node.vm.box = "ubuntu/focal64"# ... 其他配置 ...end
end
我命名為vm1
config.vm.define "vm1" do |node|
2.重命名還未結(jié)束,還需要根據(jù)uuid更新底層邏輯
vboxmanage list vms
這個(gè)命令如果提示不是內(nèi)外部命令,那就是你沒(méi)有成功配置box的環(huán)境變量。
3.更新虛擬機(jī)名稱
vboxmanage modifyvm {UUID} --name "虛擬機(jī)名稱"
我的命令
vboxmanage modifyvm {604009aa-cd0c-40a6-978a-380b23c8b873} --name "vm1"
再次查詢當(dāng)前虛擬機(jī)名稱
vagrant status
至此重命名完成。
2.打包指定名稱的虛擬機(jī)
方式1:cmd命令方式(已經(jīng)驗(yàn)證成功,可以正常使用)
使用vagrant命令打包當(dāng)前的虛擬機(jī)
①查詢所有虛擬機(jī)列表
vboxmanage list vms
打包指定名稱的虛擬機(jī)
②你想把打包的文件放到哪里,此時(shí)你就使用cmd進(jìn)行切換目錄
示例
cd A:\DATA\copy
此時(shí)執(zhí)行打包命令后會(huì)把打包的文件放在該目錄下
③進(jìn)行打包
示例打包名為vm1虛擬機(jī),輸出文件為vagrant01.box
vagrant package --base vm1 --output copy.box
這一步非常的耗時(shí)!!!,并且控制臺(tái)無(wú)進(jìn)度條,此時(shí)需要耐心等待。我的文件8個(gè)多G,從任務(wù)管理器能看出磁盤(pán)io每秒達(dá)到50mb左右的速度,也可能我電腦拉胯些比較慢。
兩種方式判斷是否完成
第一種:控制臺(tái)出現(xiàn)不在阻塞之后Compressing即可
第二種:保存目錄的文件不再是0kb大小
④將打包好的box文件add到vagrant
copy 可以理解為虛擬機(jī)的名字copy ,copy .box是我們打包的文件名稱。
注意:需要切換到copy.box目錄再執(zhí)行下方命令
vagrant box add copy copy.box
⑤初始化一個(gè)新的vagrant環(huán)境
vagrant init copy
執(zhí)行完成后只有一個(gè)Vagrantfile文件
⑥編輯這個(gè)新的Vagrantfile文件
Vagrant.configure("2") do |config|config.vm.define "copy"config.vm.box = "copy"config.vm.network "private_network", ip: "192.168.56.20"config.ssh.username = "vagrant"config.ssh.password = "vagrant"
end
全量替換成我的,如果你不是交copy則替換你對(duì)應(yīng)的虛擬機(jī)名稱,ssh這塊是因?yàn)榻鉀Q某個(gè)異常添加的,具體異常請(qǐng)?jiān)谙路讲殚啞?br /> ⑦更改默認(rèn)的虛擬機(jī)位置
選擇其他,找到你init的目錄即可
啟動(dòng)這個(gè)虛擬機(jī)
vagrant up copy
此時(shí)啟動(dòng)后virtual box頁(yè)面會(huì)有一個(gè)虛擬機(jī),但是名稱不是我們起的copy,而是一個(gè)很長(zhǎng)一串的名稱,加上copy內(nèi)容,這塊還在研究,不影響使用。
⑧再次修改ip地址
進(jìn)入控制臺(tái),使用默認(rèn)的username和password進(jìn)行登錄,在切換到root用戶
vagrant ssh
username和password都為
vagrant
su root
vagrant
先查詢一下ip地址是否還是之前打包的ip地址
ip addr show
我這塊已經(jīng)手動(dòng)改過(guò)了,你的話應(yīng)該還是192.168.56.10,此時(shí)需要在服務(wù)器端更改一下。
更改ip地址
切換到該目錄下,查詢自己需要更改的文件,我的文件是eth1文件,你的可能不是
cd /etc/sysconfig/network-scripts/
vi ifcfg-eth1
修改完保存重啟網(wǎng)路服務(wù)一下
systemctl restart network
驗(yàn)證一下是否生效
ip addr show eth1
至此以命令方式的克隆虛擬機(jī)完成,之前搭建的java環(huán)境也正常使用。
方式2:virtual box方式打包(未驗(yàn)證成功,正在解決問(wèn)題)
復(fù)制成功之后,還是需要把對(duì)應(yīng)的文件夾放到系統(tǒng)盤(pán)的默認(rèn)路徑下,否則檢測(cè)不到(這塊需要再研究一下,目前只能是放在原來(lái)虛擬機(jī)的文件夾下)
打開(kāi)我們復(fù)制的這個(gè)虛擬機(jī)文件
正在解決ing
五、異常情況處理
vagrant官方網(wǎng)站
有問(wèn)題實(shí)在解決不了,那就只能肝官網(wǎng)文檔了。
1.up啟動(dòng)報(bào)錯(cuò)
The machine with the name ‘copy’ was not found configured for this Vagrant environment.
解決方式
Vagrantfile文件增加配置內(nèi)容
config.vm.define "copy"
2.身份驗(yàn)證失敗
copy:Warning: Authentication failure. Retrying…
直接使用明文username和password,目前還沒(méi)有進(jìn)行更加深入的研究,只用這個(gè)方式先解決,如果大家有其他優(yōu)雅的方式歡迎一起交流討論。
config.ssh.username = "vagrant"
config.ssh.password = "vagrant"