Build your own private cloud disk using VirtualBox & CentOS7 & SSH & Seafile & ngrok Part2
在服務器安裝Seafile
Seafile官網介紹自己為一個企業級的,高可靠,高性能的文件同步和共享平臺。實際上類似的平臺有很多,比如還有廣為人知的ownCloud等
- 服務器端下載Seafile
在Seafile的官網是只有網頁下載按鈕沒有適合無GUI服務器操作系統的下載方式的,但是我們能夠從官網獲知Seafile的最新版本,然后在Bintray網站下載當前Linux Server端最新版本的Seafile壓縮包
首先,在宿主機SSH連接到服務器后,使用命令sudo yum install wget
為服務器安裝wget
之后,即可以使用wget
的方式下載指定版本的Seafile文件壓縮包,版本號在官網查詢替換即可
配置Seafile
本節的配置Seafile的內容,是達拉然巨坑,我是根據官方文檔中Deploying Seafile with MySQL一節來做的,遇到了不少問題問題,邊做邊說
- 按照文檔要求,解壓文件,建立文件夾
這里有個小工具tree
很有用,我們安裝一下,命令為sudo yum install tree -y
作用看下圖就知道了
- 按照官方文檔要求,安裝Seafile服務的依賴
-
安裝官方文檔要求,運行
setup-seafile-mysql.sh
腳本
這里提示了缺少python的setuptools
模塊,注意,這里雖然高亮提醒的是缺少setuptools
,但是需要安裝的東西在其下面的非高亮log部分,在CentOS中,執行yum install python-distribute
進行安裝
-
按照官方文檔要求,再次運行
setup-seafile-mysql.sh
腳本
這里成功的開始運行腳本,需要點擊ENTER
按鍵開始,開始之后的內容會要求設置一系列的相關內容,具體的內容表達的信息基本可以猜到,猜不到的也羅列的很清楚在Deploying Seafile with MySQL文檔中
但是
在運行到mysql相關的登入步驟時,出現了錯誤
這個坑花了很多時間,Google出來的答案也是五花八門,最后的解決方式是使用MariaDB來完成數據庫的創建
關于MariaDB和MySQL的關系,感興趣可以看wiki
- 終止腳本,安裝并啟動MariaDB
ctrl + C
終止腳本,使用命令sudo yum install mariadb mariadb-server
安裝MariaDB及其服務
啟動MariaDB服務sudo systemctl start mariadb.service
設置開機自啟動sudo systemctl enable mariadb.service
數據庫安全性設置,推薦全部選擇Y
至此,數據庫的問題解決了,可以再次執行setup-seafile-mysql.sh
腳本,順利完成
啟動Seafile服務
-
按照官方文檔,運行
seafile.sh
腳本及seahub.sh
腳本
啟動seafile及seahub服務,過程中需要設置郵箱密碼等賬戶信息,關于seafile和seahub,可以理解為:seafile是文件服務的后臺,seahub是服務的前端,在服務器端8000端口可以訪問seahub頁面,從而查看到文件信息
- 設置防火墻
我們需要從外部訪問到seafile和seahub服務,因此我們需要為seafile和seahub的端口設置防火墻為public
至此,服務器Seafile服務配置啟動完畢,我們擁有了自己的私有云盤
從局域網內訪問私有云盤
還記得我們之前已經將服務器的192.168.99.101:8000
轉發到了宿主機的localhost:9988
,那么我們現在直接訪問localhost:9988
就可以登錄到seahub網頁,郵箱密碼就是前面設置的那個
登陸后,我們上傳一張圖片作為實驗,成功
Bingo!!!
現在只要在我們局域網內的任何人只要用這個賬密登入,就可以同步和共享文件了
理論上,如果我們不是在VirtualBox里面,而是在真實的線上的一臺服務器上面做我們上面這些操作,現在已經可以通過服務器的IP地址來完成從互聯網到私有云盤的訪問了,我們的私有云盤項目就搞定了
但是,既然我們在VirtualBox里面做的,那么就把這個項目做到底,讓她能夠被公網訪問
從公網訪問VirtualBox內的虛擬機服務器上的私有云盤
這里我們需要利用一個神器ngrok,這里我要實現的只是將私有云盤能夠從公網訪問,爽一把,所以只需要使用最基礎的ngrok的端口映射功能就好了,這個神器還是第一次開發微信公眾號后臺的時候認識的
ngrok的使用很簡單,下載,運行,運行方式如下,如果提示ngrok
命令為發現,那么將ngrok移入Mac的bin目錄或者制作軟鏈接到bin目錄就好
運行ngrok映射本地端口到公網 ngrok http 9988
將9988
端口映射到隨機公網地址(想不隨機要花錢,暫時窮-_-$)
圖上http://....ngrok.io
就是現在9988
端口映射到公網后的地址,也就是說,從這個在公網可以訪問的地址,訪問時,會訪問到宿主機的localhost:9988
,而記得我們之前已經將localhost:9988
與虛擬機服務器的192.168.99.101:8000
綁定,那么就達到了從公網直接穿透過來訪問我們的VirtubalBox上面服務的目的
最后一張圖,使用手機訪問ngrok提供的地址,成功訪問到了自己在VirtualBox上的私有云服務,注意圖片左上角,使用的是手機網絡而非宿主機Mac所連接的WiFi,同時地址欄也能看到訪問的地址是ngrok給映射的地址
問題總結
- NAT, Host-only, Bridged Adapter的區別
強烈推薦看一下VirtualBox官網的Virtual networking一章
- SSH相關
關于SSH,所有需要了解到東西都能在這里找到答案
- Seafile的更進一步配置,高級用法
推薦根據官方文檔來研究,雖然官方文檔有些地方寫的不是特別清楚,但是也沒有別的更好的途徑,踩坑之后可以再Google之
最后,鑒于各種免費網盤的限容、審查、不定時炸彈般下架等種種不方便,在找到合適的服務器后搭建成功自己的私有云盤,結合Seafile的各種高級特性,易用性、安全性等方面帶來的收益,應該是很值得花時間研究下的~
最后歡迎訪問我的個人博客~