折腾了两天,终于搭建好我的256TB私有云!

前不久某度了一下,购置一台ECS可以干些什么,居然有人说可以搭建私有云,当时就心动了一下,接着就是不停的搜索,学习,整理,折腾了前前后后两天,终于在我的ECS上面搭建好自己的私有云。

我用的是Nextcloud,我在网上看到还有Owncloud,Seafile,Sync等等,最后选择Nextcloud也是因为学习的是Nextcloud教程,大家有兴趣可以试试别的,不知道效果怎么样。闲话到这里,下面是我的搭建过程,分享给大家,权作抛砖引玉。

我发现Nextcloud支持Webdav,这个功能太方便了,意外之喜!

#第一步 安装系统盘

在我的ECS里,我安装的是LAMP环境(Ubuntu 16.04 Apache PHP7.1),这个可以直接复制,在阿里云市场可以搜索到),听说PHP版本在7.0以下的会报错,不知道具体什么原因,所以我老打老实地安装了个7.1版本的。

安装过程就不赘述了,很简单,按照提示创建实例就可以了。

#第二步 修改sql数据库密码,创建数据库

创建好之后,就到了第二步,修改sql数据库密码。打开ssh,输入

cd /root/oneinstack
./reset_db_root_password.sh

然后创建数据库
如:创建oneinstack的数据库(举例)

mysql -uroot –p #进入数据库控制台
Enter password: #数据库root密码,▷输入密码不显示在屏幕上
MySQL [(none)]> create database nextcloud; #特别注意有分号
MySQL [(none)]> show databases; #查看数据库,除nextcloud数据库,其它3个为系统默认库,不能删除
MySQL [(none)]> exit; #退出数据库控制台,特别注意有分号
  • 如果需要删除一个数据库

如:删除nextcloud的数据库(举例)

# mysql -uroot –p #进入数据库控制台
Enter password: #数据库root密码,▷输入密码不显示在屏幕上
MySQL [(none)]> drop database nextcloud;
MySQL [(none)]> show databases; #查看数据库  
MySQL [(none)]> exit; #退出数据库控制台,特别注意有分号。
  • 创建数据库用户
    为了安全我们通常给每一个网站程序建立唯一的数据库连接帐号(帐号名不能为root)。
    如:添加一个用户名为admin,密码为password,授权为本机localhost对nextcloud数据库所有权限,命令如下:
    mysql -uroot –p 
    Enter password: #输入数据库的root密码,默认不显示密码
    MySQL [(none)]> grant all privileges on nextcloud.* to admin@’localhost’ identified by ‘password’; #授权语句,特别注意有分号                   
    MySQL [(none)]> flush privileges; #权限立即生效MySQL [(none)]> exit; #退出数据库控制台,特别注意有分号

#第三步 把Nextcloud压缩包使用FTP软件
这里我使用的是Filezilla,通过Filezilla把nextcloud放到

cd /data/wwwroot/default

然后解压,得到一个nextcloud的文件夹,因为数据库在第二步已经设置好了,所以这里我们直接打开浏览器,输入IP地址/nextcloud,进入界面,设置用户名和密码,点击配置数据库,把设置好的数据库用户,数据库密码,数据库名输入进去,localhost不变,点击安装完成。到了这一步,我们的nextcloud就安装完成了。

[nextcloud下载链接]https://download.nextcloud.com/server/releases/nextcloud-12.0.2.zip)
#第四步 把OSS挂载到nextcloud
到了这一步,说明我们的nextcloud已经在我们的服务器安装好,现在要做的就是扩大它的存储空间。这里我用的是阿里云提供的ossfs教程。因为自己也是按照这个教程来设置的,所以就不再做复制粘贴了,上链接

[OSS挂载ECS对应文件夹教程]https://help.aliyun.com/document_detail/32196.html?spm=5176.87240.400427.67.MN9NjQ

###需要注意的几点是:
1.链接中示例的第4步要改一改权限,参见如下对照:
* 示例:(原文)

my-bucket这个bucket挂载到/tmp/ossfs目录下,AccessKeyId是faint,AccessKeySecret是123,oss endpoint是http://oss-cn-hangzhou.aliyuncs.com

echo my-bucket:faint:123 > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs
mkdir /tmp/ossfs
ossfs my-bucket /tmp/ossfs -ourl=http://oss-cn-hangzhou.aliyuncs.com
  • 示例:(修改)

my-bucket这个bucket挂载到/tmp/ossfs目录下,AccessKeyId是faint,AccessKeySecret是123,oss endpoint是http://oss-cn-hangzhou.aliyuncs.com

echo my-bucket:faint:123 > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs
mkdir /tmp/ossfs
ossfs my-bucket /tmp/ossfs -ourl=http://oss-cn-hangzhou.aliyuncs.com -o allow_other 

可以发现,就是最后一行新增了-o allow_other,这个是777权限。

2.你不能把整个nextcloud文件夹都挂载到oss上去,不然就算挂载成功,也会提示没内存或者Forbidden错误(有的教程里面可以挂载整个nextcloud的data文件夹,我现在还不知道怎么弄的);
我的办法是:只挂载存储内容的文件夹,即

cd /data/wwwroot/dafault/nextcloud/data/admin/files 
#这个files文件夹就是nextcloud里面的用户最终保存文件的文件夹,只挂载这个文件夹,就不会提示错误。

3.记得设置开机自启
* 通过fstab的方式自动mount
在/etc/fstab中加入下面的命令

ossfs#your_bucket_name your_mount_point fuse _netdev,url=your_url,allow_other 0 0
#your后面的要填自己的bucket信息,不要直接复制粘贴,url如果是内网的话最好填内网url,不走流量

保存/etc/fstab文件。执行mount -a命令,如果没有报错,则说明设置正常。
到这一步,ubuntu16.04就能自动挂载了。

##好了,大功告成,到了这里,说明256TB的私有云就搭建完成了!
不过这里要说的是,我发现这个Geek的私有云随着存储内容的增多,变得越来越贵。

我的ECS和OSS在一个区域,走内网,所以不走流量,但是OSS还有存储费用,请求次数费用,ECS还有带宽流量(我用的是流量计费模式),和ECS包年包月费用,这样几笔算下来,存储量一大,费用就惊人,所以这个256TB在我看来,只是个噱头罢了,土豪除外。

当然了,如果这是日常存存文件,同步一下工作文档,用的量少,不仅可以方便同步,还算安全,至少如果不会像经营性网盘那样存在数据泄露的可能,毕竟两者还是有区别的。

话说回来,如果存储量少,也就没有挂载的必要了,如果想省钱,性价比高,又要有超大的存储量,就又形成了一个悖论,至少现在我还解不了,不知道各位看客有没有别的好的方案,不妨摆上案桌,大家一起来分享探讨一番。

(没有贴图,见谅!想来按照这个步骤也看的明白了)