Nextcloud存储网盘挂载OSS对象存储
bsharkl / / / 阅读量 748
Ossfs设置

1. Ossfs是什么

ossfs 能让您在 Linux 系统中,将对象存储 OSS 的存储空间( Bucket )挂载到本地文件系统中,您能够像操作本地文件一样操作 OSS 的对象( Object ),实现数据的共享。

2.主要功能

ossfs 基于 s3fs 构建,具有 s3fs 的全部功能。其中包括:
  • 支持 POSIX 文件系统的大部分功能,包括文件读写、目录、链接操作、权限、 uid/gid 、以及扩展属性( extended attributes )。

  • 使用 OSS 的 multipart 功能上传大文件。

  • 支持 MD5 校验,保证数据完整性

3.使用限制

ossfs 使用有以下限制:

  • 不支持挂载归档型 Bucket 。
  • 编辑已上传文件会导致文件被重新上传。
  • 元数据操作,例如 list directory ,因为需要远程访问 OSS 服务器,所以性能较差。
  • 重命名文件 / 文件夹可能会出错。若操作失败,可能会导致数据不一致。

  • 不适合高并发读 / 写的场景。

  • 多个客户端挂载同一个 OSS Bucket 时,数据一致性由您自行维护。例如,合理规划文件使用时间,避免出现多个客户端写同一个文件的情况。

  • 不支持 hard link 。

4.快速安装

由于低版本的 Linux 系统内核版本比较低, ossfs 进程在运行过程中容易出现掉线或者其他问题。因此建议您将操作系统升级到 CentOS 7.0 或者 Ubuntu 14.04 及以上版本。

5.下载安装包。

以下载 CentOS 7.0 (x64) 版本为例: ```shell Wget http: //g osspublic.alicdn.com /ossfs/ ossfs1. 80.6 centos7. 0 x8664.rpm <pre><code class="line-numbers">#### 6.安装ossfs。 ##### 6.1 Ubuntu系统的安装命令: ```shell sudo apt- get update sudo apt- get install gdebi-core sudo gdebi yourossfspackage
6.2 CentOS6.5及以上系统版本的安装命令:
sudo yum localinstall yourossfspackage
说明 对于使用 yum 安装 rpm 包的客户端,如果客户端节点网络环境特殊,无法直接用 yum 下载依赖包。可以在网络正常的、相同版本操作系统的节点上,使用 yum 下载依赖包并拷贝到网络特殊的节点。例如, ossfs 需要依赖 fuse 2.8.4 以上版本,可使用如下命令,下载 yum 源中最新的 fuse 到本地:
sudo yum install --downloadonly --downloaddir= ./ fuse
如果需要下载其他依赖包,则将 fuse 换成对应包的名称。 CentOS5 系统版本的安装命令:
sudo yum localinstall yourossfspackage --nogpgcheck
6.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
6.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 ,这样可以节省流量费用
6.5如果您不希望继续挂载此Bucket,您可以将其卸载。
fusermount -u /tmp/ ossfs
6.6Nextcloud挂载ossfs
几年前还百家争锋的国内网盘市场,如今只剩下百度网盘一枝独秀了。虽然还有一些稳定的国外网盘,如 OneDrive 、 DropBox 、 Google Drive 等,但国内访问并不友好。 私有云和 NAS 这种完全掌握在自己手中的云端存储方案就体现其优势了。 Nextcloud 搭建 Nextcloud 跨平台支持 Windows 、 Mac 、 Android 、 iOS 、 Linux 等平台,而且还提供了「网页版」以及 WebDAV 形式访问,因此你几乎可以在任何电脑、手机设备上都能轻松获取和访问你的文件文档

优势:私密,自己全权管理所有文件;

  • 稳定,不存在服务商关闭网盘服务的问题;
  • 高速,直链下载,不限速;
  • 功能丰富,可安装插件实现各种云端功能。

不足:需要自己维护备份;

  • 存储容量多为几十 G ,不适合做仓库盘。

自建网盘方案选择

推荐的比较多的有三个:
  • Nextcloud
  • ownCloud
  • Seafile
适合个人和企业使用,基础版免费。都是成熟方案,主体功能上大同小异,且都支持在线查看 / 播放文件、插件扩展等功能。
1.安装nextcloud安装yum扩展源
yum install -y epel-release
2. 安装Remi源(包含最新的PHP和mysql)
yum install http://rpms.remirepo.net/enterprise/remi-release-6.rpm
3.安装yum-utils
yum install -y yum-utils
4. 指定安装php版本
yum-config-manager --enable remi-php72
5. 安装php7.2
yum -y install php-fpm php-cli php-gd php-mcrypt php-mysql php-pear php-xml php-mbstring php-pdo php-json php-pecl-apcu php-pecl-apcu-devel
6. 检查安装是否成功
     [root@oms cert]# php -v
     PHP 7.2.19 (cli) (built: May 29 2019 11:20:29) ( NTS )
     Copyright (c) 1997-2018 The PHP Group
     Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
     with Zend OPcache v7.2.19, Copyright (c) 1999-2018, by Zend Technologies
7. 编辑php-fpm
vim /etc/php-fpm.d/www.conf
修改内容如下:
user = nginx ## 将用户和组都改为 nginx 的用户
group = nginx
env[HOSTNAME] = $HOSTNAME ## 去掉下面几行注释
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
5.8. 设置权限
在 /var/lib 目录下为 session 路径创建一个新的文件夹,并将用户名和组设为 nginx
mkdir -p /var/lib/php/session
chown nginx:nginx -R /var/lib/php/session/
5.9. 启动Nginx和php-fpm服务,并添加开机启动
systemctl start php-fpm
systemctl start nginx
systemctl enable php-fpm
systemctl enable nginx
5.10. 连接mysql创建数据库和数据库账户
MariaDB [(none)]> create database nextcloud;
MariaDB [(none)]> create user nextcloud@localhost identified by '123456';
MariaDB [(none)]> grant all privileges on nextcloud.* to nextcloud@localhost
MariaDB [(none)]> flush privileges;
5.11. ssl证书可选择云运营商
5.12.下载并安装Nextcloud
nextcloud 官方下载网址: https://download.nextcloud.com/server/releases/ 下载
wget https://download.nextcloud.com/server/releases/nextcloud-16.0.1.tar.bz2
解压
tar jxvf nextcloud-16.0.1.tar.bz2
mv nextcloud /data/
5.13. 为Nextcloud创建data目录,将Nextcloud的用户和组修改为nginx
mkdir -p nextcloud/data/
chown nginx:nginx -R nextcloud/
5.14. 配置Nginx虚拟主机
nginx 主配置文件可以参考如下:
user nginx nginx;

worker_processes 2;

errorlog /usr/local/nginx/logs/nginxerror.log crit;

pid /usr/local/nginx/logs/nginx.pid;

workerrlimitnofile 51200;

events

{

use epoll;

worker_connections 6000;

}

http

{

include mime.types;

default_type application/octet-stream;

servernameshashbucketsize 3526;

servernameshashmaxsize 4096;

logformat combinedrealip '$remoteaddr $httpxforwardedfor [$time_local]'

' $host "$request_uri" $status'

' "$httpreferer" "$httpuser_agent"';

sendfile on;

tcp_nopush on;

keepalive_timeout 30;

clientheadertimeout 3m;

clientbodytimeout 3m;

send_timeout 3m;

connectionpoolsize 256;

clientheaderbuffer_size 1k;

largeclientheader_buffers 8 4k;

requestpoolsize 4k;

output_buffers 4 32k;

postpone_output 1460;

clientmaxbody_size 10m;

clientbodybuffer_size 256k;

clientbodytemppath /usr/local/nginx/clientbody_temp;

proxytemppath /usr/local/nginx/proxy_temp;

fastcgitemppath /usr/local/nginx/fastcgi_temp;

fastcgiintercepterrors on;

tcp_nodelay on;

gzip on;

gzipminlength 1k;

gzip_buffers 4 8k;

gzipcomplevel 5;

gziphttpversion 1.1;

gzip_types text/plain application/x-javascript text/css text/htm

application/xml;

include vhost/*.conf;

}
创建并添加nextcloud的配置文件
vim nginx/conf/vhost/nextcloud.conf
内容如下:
upstream php-handler {

server 127.0.0.1:9000;

}

server {

listen 80;

listen 443 ssl;

server_name localhost;

ssl_certificate /usr/local/nginx/cert/nextcloud.pem; ## 证书文件路径,后缀自建为 crt ,此处为 freessl 申请的证书

sslcertificatekey /usr/local/nginx/cert/nextcloud.key;

add_header Strict-Transport-Security "max-age=15768000;

includeSubDomains; preload;";

add_header X-Content-Type-Options nosniff;

add_header X-Frame-Options "SAMEORIGIN";

add_header X-XSS-Protection "1; mode=block";

add_header X-Robots-Tag none;

add_header X-Download-Options noopen;

add_header X-Permitted-Cross-Domain-Policies none;

root /data/nextcloud/;

if ( $scheme != "https" ) {

return 301 https://$host$request_uri;

}

location = /robots.txt {

allow all;

lognotfound off;

access_log off;

}

location = /.well-known/carddav {

location = /.well-known/caldav {

return 301 $scheme://$host/remote.php/dav;

}

clientmaxbody_size 512M;

fastcgi_buffers 64 4K;

gzip off;

error_page 403 /core/templates/403.php;

error_page 404 /core/templates/404.php;

location / {

rewrite ^ /index.php$uri;

}

location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {

deny all;

}

location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {

deny all;

}

include fastcgi_params;

fastcgisplitpath_info ^(.+\.php)(/.*)$;

fastcgiparam SCRIPTFILENAME $documentroot$fastcgiscript_name;

fastcgiparam PATHINFO $fastcgipathinfo;

fastcgi_param HTTPS on;

fastcgi_param modHeadersAvailable true;

fastcgiparam frontcontroller_active true;

fastcgi_pass php-handler;

fastcgiintercepterrors on;

fastcgirequestbuffering off;

fastcgi_buffers 8 128k;

fastcgibuffersize 128k;

fastcgibusybuffers_size 256k;

fastcgitempfilewritesize 256k;

fastcgiconnecttimeout 300s;

fastcgisendtimeout 300s;

fastcgireadtimeout 300s;

}

location ~ ^/(?:updater|ocs-provider)(?:$|/) {

try_files $uri/ =404;

index index.php;

}

location ~* \.(?:css|js)$ {

tryfiles $uri /index.php$uri$isargs$args;

add_header Cache-Control "public, max-age=7200";

add_header Strict-Transport-Security "max-age=15768000;includeSubDomains; preload;";

add_header X-Content-Type-Options nosniff;

add_header X-Frame-Options "SAMEORIGIN";

add_header X-XSS-Protection "1; mode=block";

add_header X-Robots-Tag none;

add_header X-Download-Options noopen;

add_header X-Permitted-Cross-Domain-Policies none;

access_log off;

}

location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {

tryfiles $uri /index.php$uri$isargs$args;

access_log off;

}

}
5.15. 检测配置是否正确并重新加载配置
nginx -t && nginx -s reload
5.16. 游览器登录,根据提示安装nextcloud即可
  • 输入浏览器的链接
  • 添加用户名/密码
  • 选择数据库
5.17.添加外部存储插件
5.18.在应用中,找到应用软件包,选择插件,启动
5.19.选择设置:
5.20.在左边找到外部存储选项
5.21.添加外部存储的目录
5.22.创建成功后,选择文件,则看到外部oss目录的添加名
支付宝捐赠
请使用支付宝扫一扫进行捐赠
微信捐赠
请使用微信扫一扫进行赞赏
有 0 篇文章