Build your own private cloud disk using VirtualBox & CentOS7 & SSH & Seafile & ngrok Part2
在服務(wù)器安裝Seafile
Seafile官網(wǎng)介紹自己為一個(gè)企業(yè)級(jí)的,高可靠,高性能的文件同步和共享平臺(tái)。實(shí)際上類(lèi)似的平臺(tái)有很多,比如還有廣為人知的ownCloud等
- 服務(wù)器端下載Seafile
在Seafile的官網(wǎng)是只有網(wǎng)頁(yè)下載按鈕沒(méi)有適合無(wú)GUI服務(wù)器操作系統(tǒng)的下載方式的,但是我們能夠從官網(wǎng)獲知Seafile的最新版本,然后在Bintray網(wǎng)站下載當(dāng)前Linux Server端最新版本的Seafile壓縮包

首先,在宿主機(jī)SSH連接到服務(wù)器后,使用命令sudo yum install wget為服務(wù)器安裝wget

之后,即可以使用wget的方式下載指定版本的Seafile文件壓縮包,版本號(hào)在官網(wǎng)查詢(xún)替換即可

配置Seafile
本節(jié)的配置Seafile的內(nèi)容,是達(dá)拉然巨坑,我是根據(jù)官方文檔中Deploying Seafile with MySQL一節(jié)來(lái)做的,遇到了不少問(wèn)題問(wèn)題,邊做邊說(shuō)
- 按照文檔要求,解壓文件,建立文件夾

這里有個(gè)小工具tree很有用,我們安裝一下,命令為sudo yum install tree -y

作用看下圖就知道了

- 按照官方文檔要求,安裝Seafile服務(wù)的依賴(lài)

-
安裝官方文檔要求,運(yùn)行
setup-seafile-mysql.sh腳本

這里提示了缺少python的setuptools模塊,注意,這里雖然高亮提醒的是缺少setuptools,但是需要安裝的東西在其下面的非高亮log部分,在CentOS中,執(zhí)行yum install python-distribute進(jìn)行安裝

-
按照官方文檔要求,再次運(yùn)行
setup-seafile-mysql.sh腳本

這里成功的開(kāi)始運(yùn)行腳本,需要點(diǎn)擊ENTER按鍵開(kāi)始,開(kāi)始之后的內(nèi)容會(huì)要求設(shè)置一系列的相關(guān)內(nèi)容,具體的內(nèi)容表達(dá)的信息基本可以猜到,猜不到的也羅列的很清楚在Deploying Seafile with MySQL文檔中
但是
在運(yùn)行到mysql相關(guān)的登入步驟時(shí),出現(xiàn)了錯(cuò)誤

這個(gè)坑花了很多時(shí)間,Google出來(lái)的答案也是五花八門(mén),最后的解決方式是使用MariaDB來(lái)完成數(shù)據(jù)庫(kù)的創(chuàng)建
關(guān)于MariaDB和MySQL的關(guān)系,感興趣可以看wiki
- 終止腳本,安裝并啟動(dòng)MariaDB
ctrl + C終止腳本,使用命令sudo yum install mariadb mariadb-server安裝MariaDB及其服務(wù)

啟動(dòng)MariaDB服務(wù)sudo systemctl start mariadb.service
設(shè)置開(kāi)機(jī)自啟動(dòng)sudo systemctl enable mariadb.service

數(shù)據(jù)庫(kù)安全性設(shè)置,推薦全部選擇Y

至此,數(shù)據(jù)庫(kù)的問(wèn)題解決了,可以再次執(zhí)行setup-seafile-mysql.sh腳本,順利完成
啟動(dòng)Seafile服務(wù)
-
按照官方文檔,運(yùn)行
seafile.sh腳本及seahub.sh腳本
啟動(dòng)seafile及seahub服務(wù),過(guò)程中需要設(shè)置郵箱密碼等賬戶信息,關(guān)于seafile和seahub,可以理解為:seafile是文件服務(wù)的后臺(tái),seahub是服務(wù)的前端,在服務(wù)器端8000端口可以訪問(wèn)seahub頁(yè)面,從而查看到文件信息

- 設(shè)置防火墻
我們需要從外部訪問(wèn)到seafile和seahub服務(wù),因此我們需要為seafile和seahub的端口設(shè)置防火墻為public

至此,服務(wù)器Seafile服務(wù)配置啟動(dòng)完畢,我們擁有了自己的私有云盤(pán)
從局域網(wǎng)內(nèi)訪問(wèn)私有云盤(pán)
還記得我們之前已經(jīng)將服務(wù)器的192.168.99.101:8000轉(zhuǎn)發(fā)到了宿主機(jī)的localhost:9988,那么我們現(xiàn)在直接訪問(wèn)localhost:9988就可以登錄到seahub網(wǎng)頁(yè),郵箱密碼就是前面設(shè)置的那個(gè)

登陸后,我們上傳一張圖片作為實(shí)驗(yàn),成功

Bingo!!!
現(xiàn)在只要在我們局域網(wǎng)內(nèi)的任何人只要用這個(gè)賬密登入,就可以同步和共享文件了
理論上,如果我們不是在VirtualBox里面,而是在真實(shí)的線上的一臺(tái)服務(wù)器上面做我們上面這些操作,現(xiàn)在已經(jīng)可以通過(guò)服務(wù)器的IP地址來(lái)完成從互聯(lián)網(wǎng)到私有云盤(pán)的訪問(wèn)了,我們的私有云盤(pán)項(xiàng)目就搞定了
但是,既然我們?cè)赩irtualBox里面做的,那么就把這個(gè)項(xiàng)目做到底,讓她能夠被公網(wǎng)訪問(wèn)
從公網(wǎng)訪問(wèn)VirtualBox內(nèi)的虛擬機(jī)服務(wù)器上的私有云盤(pán)
這里我們需要利用一個(gè)神器ngrok,這里我要實(shí)現(xiàn)的只是將私有云盤(pán)能夠從公網(wǎng)訪問(wèn),爽一把,所以只需要使用最基礎(chǔ)的ngrok的端口映射功能就好了,這個(gè)神器還是第一次開(kāi)發(fā)微信公眾號(hào)后臺(tái)的時(shí)候認(rèn)識(shí)的
ngrok的使用很簡(jiǎn)單,下載,運(yùn)行,運(yùn)行方式如下,如果提示ngrok命令為發(fā)現(xiàn),那么將ngrok移入Mac的bin目錄或者制作軟鏈接到bin目錄就好
運(yùn)行ngrok映射本地端口到公網(wǎng) ngrok http 9988
將9988端口映射到隨機(jī)公網(wǎng)地址(想不隨機(jī)要花錢(qián),暫時(shí)窮-_-$)

圖上http://....ngrok.io就是現(xiàn)在9988端口映射到公網(wǎng)后的地址,也就是說(shuō),從這個(gè)在公網(wǎng)可以訪問(wèn)的地址,訪問(wèn)時(shí),會(huì)訪問(wèn)到宿主機(jī)的localhost:9988,而記得我們之前已經(jīng)將localhost:9988與虛擬機(jī)服務(wù)器的192.168.99.101:8000綁定,那么就達(dá)到了從公網(wǎng)直接穿透過(guò)來(lái)訪問(wèn)我們的VirtubalBox上面服務(wù)的目的
最后一張圖,使用手機(jī)訪問(wèn)ngrok提供的地址,成功訪問(wèn)到了自己在VirtualBox上的私有云服務(wù),注意圖片左上角,使用的是手機(jī)網(wǎng)絡(luò)而非宿主機(jī)Mac所連接的WiFi,同時(shí)地址欄也能看到訪問(wèn)的地址是ngrok給映射的地址

問(wèn)題總結(jié)
- NAT, Host-only, Bridged Adapter的區(qū)別
強(qiáng)烈推薦看一下VirtualBox官網(wǎng)的Virtual networking一章
- SSH相關(guān)
關(guān)于SSH,所有需要了解到東西都能在這里找到答案
- Seafile的更進(jìn)一步配置,高級(jí)用法
推薦根據(jù)官方文檔來(lái)研究,雖然官方文檔有些地方寫(xiě)的不是特別清楚,但是也沒(méi)有別的更好的途徑,踩坑之后可以再Google之
最后,鑒于各種免費(fèi)網(wǎng)盤(pán)的限容、審查、不定時(shí)炸彈般下架等種種不方便,在找到合適的服務(wù)器后搭建成功自己的私有云盤(pán),結(jié)合Seafile的各種高級(jí)特性,易用性、安全性等方面帶來(lái)的收益,應(yīng)該是很值得花時(shí)間研究下的~
最后歡迎訪問(wèn)我的個(gè)人博客~