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的各种高级特性,易用性、安全性等方面带来的收益,应该是很值得花时间研究下的~
最后欢迎访问我的个人博客~