Build your own private cloud disk using VirtualBox & CentOS7 & SSH & Seafile & ngrok Part1
這個(gè)是個(gè)人的一篇經(jīng)驗(yàn)總結(jié),或者說花樣踩坑集錦
先說下最終完成的效果:宿主機(jī)為Mac,在VirtualBox中安裝CentOS7 minimal做為服務(wù)器,通過SSH由宿主機(jī)連接到CentOS7并在其中構(gòu)建Seafile服務(wù),通過外網(wǎng)或內(nèi)網(wǎng)訪問Seafile服務(wù)以完成同步或共享文件的功能,達(dá)到擁有私有云盤的目的
在VirtualBox中配置用于安裝CentOS7的虛擬機(jī)
VirtualBox是一款Mac上很好用的虛擬機(jī)軟件,之所以選擇VirtualBox而不是其他的虛擬機(jī)軟件,是因?yàn)槲宜卷?xiàng)目開發(fā)就用的VirtualBox,所以我最初做這個(gè)項(xiàng)目的目的之一就是用來練手加強(qiáng)對(duì)VirtualBox的理解的
CentOS7是RedHat之下的一款社區(qū)版Linux,目前最高級(jí)版本為7, 可以在這里下載。在下載頁(yè)面會(huì)看到有DVD ISO
,Everything ISO
,Minimal ISO
三個(gè)選項(xiàng),一般來說,如果需要GUI頁(yè)面,選擇DVD ISO
,如果只需要最小安裝尤其是作為服務(wù)器操作系統(tǒng)時(shí),選擇Minimal ISO
,而Everything ISO
對(duì)一般用戶來說很少選擇,其包含了以上兩種ISO文件所有的內(nèi)容,并額外包括開發(fā)CentOS功能所需要的內(nèi)容
下面開始比較通用的在VirtualBox中安裝虛擬機(jī)的步驟,這個(gè)步驟理論上是適合于創(chuàng)建任何系統(tǒng)虛擬機(jī)的,畢竟只是打造一臺(tái)"裸機(jī)"
- 命名虛擬機(jī)及指定操作系統(tǒng),命名隨意,Type選Linux,Version選Red Hat
- 指定虛擬機(jī)內(nèi)存空間,隨意更改,我采用了默認(rèn)設(shè)置
- 虛擬硬盤文件格式,隨意更改,我采用了默認(rèn)設(shè)置
- 虛擬硬盤文件存儲(chǔ)位置及大小,隨意更改,我采用了默認(rèn)設(shè)置
- 虛擬硬盤文件是否可動(dòng)態(tài)增長(zhǎng),隨意更改,我采用了默認(rèn)設(shè)置
- 裸機(jī)搞定
在虛擬機(jī)中安裝CentOS7操作系統(tǒng)
- 載入操作系統(tǒng)鏡像 CentOS7 Minimal ISO
啟動(dòng)剛剛設(shè)置成功的裸機(jī),會(huì)要求安裝系統(tǒng),在系統(tǒng)文件加載的地方指定到之前下載的CentOS7 Minimal ISO后點(diǎn)擊start即可
進(jìn)入CentOS系統(tǒng)安裝頁(yè)面后,鼠標(biāo)被VirtualBox的虛擬機(jī)窗口捕獲后會(huì)提示是否允許捕獲,當(dāng)然選是,然后虛擬機(jī)中按cmd + 鼠標(biāo)左鍵
的方式可以退出捕獲,讓鼠標(biāo)回歸宿主機(jī)
- 安裝CentOS7
進(jìn)入安裝選擇界面,鍵盤方向鍵上下調(diào)節(jié)選項(xiàng),Enter
鍵選中選項(xiàng),這里選擇最簡(jiǎn)單的安裝方式即可,即執(zhí)行Install CentOS Linux 7
選項(xiàng)
安裝時(shí)需要注意,不要隨便調(diào)節(jié)窗口大小,一般VirtualBox會(huì)自動(dòng)縮放窗口以讓用戶能最明顯和方便的點(diǎn)擊各個(gè)按鈕,如果你像我一樣手賤的縮放了窗口,那么記得上下左右滾動(dòng)窗口以找到各種下一步的按鈕,不要像我一樣輕易以為VirtualBox傻缺
選擇系統(tǒng)語(yǔ)言,推薦英語(yǔ),沒啥可說的
系統(tǒng)安裝設(shè)定,這個(gè)我們不需用在CentOS安裝時(shí)設(shè)定,因?yàn)槲覀冎霸诼銠C(jī)設(shè)置時(shí)已經(jīng)搞定了,這里點(diǎn)開這個(gè)設(shè)定窗口后直接左上角done
即可
點(diǎn)擊Begin Installation
即可,喝水
開始安裝后,在讀條的過程中,會(huì)發(fā)現(xiàn)有兩個(gè)設(shè)定需要完成,這里不用著急,著急也沒用,進(jìn)度圖跑完前沒法點(diǎn)擊這兩個(gè)按鈕,安心喝水
讀條結(jié)束后,開始設(shè)置兩個(gè)黃色感嘆號(hào)內(nèi)容
root用戶的密碼設(shè)定,很重要,不用我多說
注意看圖,知識(shí)點(diǎn)又來了,設(shè)置的root密碼強(qiáng)度差不說,還居然包含了root用戶名,被系統(tǒng)吐槽,而且這樣的密碼需要點(diǎn)兩次左上角的Done
才能設(shè)置成功
這里主要是在本地虛擬環(huán)境,不想設(shè)置太復(fù)雜的密碼,會(huì)忘 -_-#
接下來設(shè)置一個(gè)登陸用戶,在你設(shè)置完root密碼后,這個(gè)設(shè)定已經(jīng)變成可選了,但是還是推薦在這里設(shè)置好
我這里直接給自己的登陸用戶作為管理員了,以后的操作都會(huì)使用該用戶<strike>為了加深印象我又把密碼設(shè)置的很差勁讓系統(tǒng)提醒一次 [doge] </strike>
OK,這里設(shè)置完畢后,左上角Done
*2,系統(tǒng)就開始啟動(dòng)了,在VirtualBox中安裝CentOS7的操作就完成了
通過SSH由Mac宿主機(jī)訪問CentOS7虛擬機(jī)
- 登陸虛擬機(jī),查看網(wǎng)絡(luò)配置
在CentOS7啟動(dòng)后,會(huì)停留在localhost login:
處等待,這里使用管理員kenshin
的賬密登入
圖中重點(diǎn),ip addr
查看CentOS7的網(wǎng)絡(luò)配置,注意2: enp0s3:
,這里指示的是虛擬機(jī)的internet連接,能夠發(fā)現(xiàn),沒有ip地址
這是因?yàn)镃entOS7的網(wǎng)絡(luò)服務(wù)并不是默認(rèn)開機(jī)啟動(dòng)的,需要手動(dòng)配置
首先進(jìn)入到CentOS7的網(wǎng)絡(luò)配置文件所在目錄
cd /etc/sysconfig/network-scripts/
然后打開ifcfg-enp0s3
文件,這里需要sudo
權(quán)限來編輯該文件
sudo vi ifcfg-enp0s3
將ONBOOT
設(shè)置為yes
后wq
保存并退出
- 關(guān)閉虛擬機(jī),配置網(wǎng)卡
經(jīng)過上面的操作,理論上是只需要重啟網(wǎng)絡(luò)服務(wù)就可以了,但是我們需要退出來為虛擬機(jī)額外添加網(wǎng)卡,所以索性先關(guān)機(jī)
而更實(shí)際上,我們?cè)趧?chuàng)建裸機(jī)的時(shí)候就可以添加好這個(gè)額外的網(wǎng)卡的,但是我忘了
其實(shí)真實(shí)情況是,這里我浪費(fèi)了很多時(shí)間來處理網(wǎng)卡的事情,最初我并沒有想到VirtualBox默認(rèn)的NAT網(wǎng)卡不能完成我后面需要的SSH連接的功能,后來還搞了一陣Bridged Adapter的作用,所以這里是已經(jīng)折騰了很多東西之后才發(fā)現(xiàn)的事情,但是既然是記錄步驟,就不說那些錯(cuò)誤和解決錯(cuò)誤的詳情了,最后再統(tǒng)一總結(jié)下就好了
另外,關(guān)于NAT,Host-only,Bridged的Adapter的區(qū)別,后面會(huì)提到
總之,現(xiàn)在把虛擬機(jī)關(guān)機(jī),回到VirtualBox界面后,為虛擬機(jī)添加一個(gè)Host-only Adapter
- 啟動(dòng)虛擬機(jī),再次查看網(wǎng)絡(luò)信息
網(wǎng)卡添加完畢后,啟動(dòng)虛擬機(jī),登入管理員賬戶,執(zhí)行ip addr
命令查看網(wǎng)絡(luò)信息
重點(diǎn)來了,圖上我們有了兩個(gè)internet的ip地址
圖中2: enp0s3 .... inet 10.0.2.15
是由NAT Adapter提供的,其可以ping通外界網(wǎng)絡(luò),也就是外界網(wǎng)絡(luò)對(duì)其來說可見,但是外界不能ping通10.0.2.15
,也就是其對(duì)外界網(wǎng)絡(luò)來說不可見,包括宿主機(jī)也不能ping通 10.0.2.15
圖中3: enp0s8 ... inet 192.168.99.101
是由Host-onlyAdapter提供的,其可以ping通外界網(wǎng)絡(luò),也就是外界網(wǎng)絡(luò)對(duì)其來說可見,但是外界不能直接ping通192.168.99.101
,也就是其對(duì)外界網(wǎng)絡(luò)來說不可見,但是宿主機(jī)可以ping通 192.168.99.101
這就是為什么需要額外添加一張Host-onlyAdapter的原因,如果宿主機(jī)都不能ping通虛擬機(jī),那么SSH毛毛啊
- 宿主機(jī)SSH連接虛擬機(jī)
在虛擬機(jī)中執(zhí)行service sshd start
命令來開啟SSH服務(wù),默認(rèn)會(huì)運(yùn)行在22端口
在虛擬機(jī)中執(zhí)行systemctl status sshd
命令來查看SSH服務(wù)狀態(tài)
Loaded: ...enabled...
表示SSH服務(wù)開啟了開機(jī)自啟動(dòng),這正是我們需要的
Active: active(running)...
表示SSH服務(wù)當(dāng)前正在運(yùn)行
現(xiàn)在,想建立SSH連接就只剩下最后一步,設(shè)置端口
在NAT Adatper中配置端口轉(zhuǎn)發(fā)信息,為什么不在Host-only Adapter中配置呢,因?yàn)椴荒?/p>
Tips, 配置端口轉(zhuǎn)發(fā)不需要重啟虛擬機(jī)的
打開虛擬機(jī)的網(wǎng)絡(luò)配置界面,在NAT Adapter中選擇Port Forwarding
Port Forwarding
配置端口轉(zhuǎn)發(fā)信息
這里做了兩個(gè)端口轉(zhuǎn)發(fā)
Guest Port 22
是用來做SSH連接的,默認(rèn)情況下,服務(wù)器22端口用于SSH,Guest IP
和Host IP
都正常設(shè)置,Host Port
隨意,不要沖突了就好
Guest Port 8000
是用來做服務(wù)轉(zhuǎn)發(fā)的,后面會(huì)用到,我會(huì)把虛擬機(jī)8000端口的服務(wù)轉(zhuǎn)發(fā)到宿主機(jī),然后宿主機(jī)可以用來搞點(diǎn)事情,這里Guest IP
和Host IP
也是正常設(shè)置,Host Port
同樣隨意,不沖突就行
保存信息之后,在CentOS7中使用sudo systemctl restart network
命令重啟下網(wǎng)絡(luò)服務(wù)或者直接reboot
命令重啟機(jī)器
在宿主機(jī)SSH連接虛擬機(jī),-p
指定端口,后面再跟要登入的用戶及服務(wù)器地址,我們已經(jīng)做了端口和地址轉(zhuǎn)發(fā),因此這里的命令如下
Bingo!!!
搞定,我們現(xiàn)在可以在Mac宿主機(jī)終端經(jīng)由SSH操作CentOS7虛擬機(jī)了,也就是我們的服務(wù)器(下面我也會(huì)除非萬(wàn)不得已,不然均稱呼我們的CentOS7君為服務(wù)器),接下來我們就開始在服務(wù)器配置Seafile,不過現(xiàn)在內(nèi)容太多了,尤其是很多圖片,所以寫在第二部分
最后歡迎訪問我的個(gè)人博客~