owncloud 系统架构概述 owncloud oss_Redis


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

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

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

owncloud 系统架构概述 owncloud oss_Redis_02

一、OSS对象及OSSFS安装

阿里云对象存储OSS是一种低成本的网络存储技术,如果是用阿里云的服务器,推荐使用阿里云OSS对象存储,存储价格实惠,目前0.148元/GB/月,存储包40G/9元每年,配合阿里云同区域服务器ECS内网免费。安装ossfs工具后相当于把OSS对象存储映射为了服务器的一个网络硬盘,可直接访问,使用也很方便。
ossfs官网地址:

https://help.aliyun.com/knowledge_detail/153892.html?spm=a2c4g.11186631.2.2.2a255c3dHXFwhd

1.在服务器同区域新建一个Bucket,获取access-key-id和access-key-secret
下面分别以 {bucketname},{access-key-id},{access-key-secret}指代,(注意是不带{}的)。
2.安装ossfs,以centos 7.*为例

wget http://gosspublic.alicdn.com/ossfs/ossfs_1.80.6_centos7.0_x86_64.rpm
sudo yum localinstall your_ossfs_package

3.配置账号访问信息。
将Bucket名称以及具有此Bucket访问权限的AccessKeyId/AccessKeySecret信息存放在/etc/passwd-ossfs文件中。注意这个文件的权限必须正确设置,建议设为640。

echo my-bucket:my-access-key-id:my-access-key-secret > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs

4.将Bucket挂载到指定目录

ossfs my-bucket my-mount-point -ourl=my-oss-endpoint

挂载示例:将杭州地域名称为bucket-test的Bucket挂载到/tmp/ossfs目录下。

echo bucket-test:LTAIbZcdVCmQ****:MOk8x0y9hxQ31coh7A5e2MZEUz**** > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs
mkdir /tmp/ossfs
ossfs bucket-test /tmp/ossfs -ourl=http://oss-cn-hangzhou.aliyuncs.com

注意 如果您使用从阿里云购买的云服务器(ECS)来提供ossfs服务,您可以使用内网域名,在这个示例中您可以将OSS endpoint 改为oss-cn-hangzhou-internal.aliyuncs.com,这样可以节省流量费用。OSS的内网域名请参见访问域名和数据中心。

5.如果您不希望继续挂载此Bucket,您可以将其卸载。

fusermount -u /tmp/ossfs

二、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对象存储,这里可以直接指定其路径。

owncloud 系统架构概述 owncloud oss_php_03


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

如果您使用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,
),