利用阿里云OSS安装高速私有云盘Nextcloud/Owncloud

Owncloud/Nextcloud是一个类似于Dropbox/Google Drive的PHP开源私有云盘程序,UI美观功能强大,也可作精确权限控制的团队共享,比百度云什么的都强大多了。国内Dropbox被墙,百度云之类限速很不好用,此时有服务器条件的搭建一个完全属于自由的私有云盘就是一个极好的选择。

Nextcloud是Owncloud的一个分支,原美国的Owncloud公司已倒闭由德国公司接手更新,其原创始人出走创立了Nextcloud,由测试来看, 两者客户端是互通的,界面几乎一样,但Nextcloud使用更加灵活,比如可以自定义Logo和主题,功能更加强大,推荐用Nextcloud,觉得更有前途一些。

上传速度测试,只取决于您的网络带宽,只要您的带宽足够,10几M/s不是问题。

一、OSS对象及OSSFS安装
阿里云对象存储OSS是一种低成本的网络存储技术,如果是用阿里云的服务器,推荐使用阿里云OSS对象存储,存储价格实惠,目前0.148元/GB/月,存储包40G/9元每年,配合阿里云同区域服务器ECS内网免费。安装ossfs工具后相当于把OSS对象存储映射为了服务器的一个网络硬盘,可直接访问,使用也很方便。
github地址:https://github.com/aliyun/ossfs
1.在服务器同区域新建一个Bucket,获取access-key-id和access-key-secret
下面分别以 {bucketname},{access-key-id},{access-key-secret}指代,(注意是不带{}的)。

2.安装ossfs,以centos 7.*为例

cd /usr/local/src
wget https://github.com/aliyun/ossfs/releases/download/v1.80.0/ossfs_1.80.0_centos7.0_x86_64.rpm
sudo yum localinstall ossfs_1.80.0_centos7.0_x86_64.rpm

3.配置并挂载oss

echo {bucketname}:{access-key-id}:{access-key-secret}> /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs
mkdir /mydata
cd /mydata
mkdir ossfs
ossfs {bucketname} /mydata/ossfs -ourl=http://oss-cn-shenzhen-internal.aliyuncs.com

以上注意使用OSS内网地址,上例为深圳的,内网免费,外网地址流量可是很贵的~~
此时运行df -h,可以发现已经将oss挂载为一个分区了,有256T呢,可以放好多电影了~~

4.自动挂载
以上仅单次挂载,重启后自动挂载需如下配置:
vi命令编辑/etc/fstab ,加入以下内容
vi /etc/fstab
ossfs# {bucketname} /mydata/ossfs fuse _netdev,url=http://oss-cn-shenzhen-internal.aliyuncs.com,allow_other 0 0

5. 为目录目录权限
创建一个目录为cloud准备作nextcloud的存储空间,并授予www用户770权限
chown -R www:www /mydata/ossfs/cloud
chmod -R 770 /mydata/ossfs/cloud/

二、nextcloud安装

官网https://nextcloud.com/ 下载安装包,截止目前的版本是12.0。可以Linux yum安装也可以PHP安装,这里介绍的是PHP安装

环境要求:
PHP环境:开启pathinfo和fileinfo拓展;
数据库环境:支持SQLITE,但性能差不推荐,推荐使用 MySQL / MariaDB,其中MySQL须更改默认引擎为 InnoDB。

1.可以下载安装包安装(archive files)也可以用Web自动安装(Web installer) 一个php单页自动引导下载安装,不过鉴于国内网络环境,后者经常因下载失败安装程序失败而安装失败,推荐手动下载安装包安装。
https://download.nextcloud.com/server/installer/setup-nextcloud.php

2.上传服务器解压,

3.创建数据库及用户

4.访问文件夹会自动引导安装

注意,数据目录默认是安装文件夹下的data文件夹,不推荐在安装文件夹下存储数据,以后维护比较麻烦,可以指定其他目录,最好是系统盘之外的数据盘,这样做服务器备份/系统盘快照时只需备份较小的程序文件而不必备份较大的存储文件。我们在之前已经挂载了oss对象存储,这里可以直接指定其路径。

5.填完后稍等片刻,等待生成数据表,安装成功如下:

优化配置:
1.建议强制https
2.启用HSTS,详细如下
启用HSTS模式
在虚拟主机配置中增加一句

Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"

3.缓存
3.1 启用 PHP OPcache
3.2 内存缓存:单机使用时建议APCU比Redis性格更好,建议单机使用Apcu缓存,分布式则使用Redis缓存
APCU 缓存安装 启用:

cd /usr/local/src
wget http://pecl.php.net/get/apcu-5.1.8.tgz
tar xzf apcu-5.1.8.tgz
cd apcu-5.1.8
/www/server/php/70/bin/phpize
./configure --with-php-config=/www/server/php/70/bin/php-config
make
make test
make install

最后在php.in 加一句:

extension=/www/server/php/70/lib/php/extensions/no-debug-non-zts-20151012/apcu.so

在nextcloud配置文件config.php中加入:

'memcache.local' => '\OC\Memcache\APCu',

如果您使用Redis,则为:

'memcache.local' => '\OC\Memcache\Redis',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
),

Redis安装参考:https://qianrong.me/website/16.html

如果您希望达到更高的性能,可以启用文件事务锁定,以下为使用APcu缓存,Redis作文件事务锁定

'memcache.local' => '\OC\Memcache\APCu',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
),

尊重作者劳动,转载请注明出处:札记-Qianrong's Blog » 利用阿里云OSS安装高速私有云盘Nextcloud/Owncloud

赞 (43)

评论 3

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. Zvonimir你好,我用的是腾讯云的CVM搭配COS建的,原理是一样的。我想问一下,你这样子搭建有检测到服务器和对象存储之间的内网流量特别大吗?我也就存了几十G的东西,发现每天的内网流量居然有几个TB,暂时不知道什么原因。回复
    • Qianrong内网免费的啊,不过流量那么大的确有问题。 因为实际容量用的不多,后面我直接放在服务器磁盘了,没有使用OSS。 之前记录的文档看看适不适用。
      Q: 使用ECS挂载ossfs,如何避免因后台程序扫描文件而产生费用? 程序扫描ossfs挂载的目录,会转换成向OSS的请求,如果请求次数很多,会产生费用(1分钱/1万次)。如果是updatedb,可以通过修改/etc/updatedb.conf让它跳过。具体做法是: 1. 在`PRUNEFS = `后面加上`fuse.ossfs` 2. 在`PRUNEPATHS = `后面加上挂载的目录 1. 如何确定是哪个进程扫了我的目录? * 首先安装auditd: sudo apt-get install auditd * 启动auditd: sudo service auditd start * 设置监视挂载目录: auditctl -w /mydata/ossfs * 在auditlog中可以查看是哪些进程访问了这个目录:ausearch -i | grep /mydata/ossfs 注:grep 表示正则表达式 只监控非www用户的进程 ausearch -i | grep /mydata/ossfs.*ouid=[^w][a-z0-9]*
      回复
      • Zvonimir好的,谢谢博主,我研究研究去回复