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及以上版本。
1.下载安装包。
以下载CentOS 7.0 (x64)版本为例:
Wget http://gosspublic.alicdn.com/ossfs/ossfs_1.80.6_centos7.0_x86_64.rpm |
2.安装ossfs。
2.1 Ubuntu系统的安装命令:
|
2.2 CentOS6.5及以上系统版本的安装命令:
sudo yum localinstall your_ossfs_package |
说明 对于使用yum安装rpm包的客户端,如果客户端节点网络环境特殊,无法直接用yum下载依赖包。可以在网络正常的、相同版本操作系统的节点上,使用yum下载依赖包并拷贝到网络特殊的节点。例如,ossfs需要依赖fuse 2.8.4以上版本,可使用如下命令,下载yum源中最新的fuse到本地:
sudo yum install --downloadonly --downloaddir=./ fuse |
如果需要下载其他依赖包,则将fuse换成对应包的名称。
CentOS5系统版本的安装命令:
sudo yum localinstall your_ossfs_package --nogpgcheck |
2.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 |
2.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,这样可以节省流量费用
2.5如果您不希望继续挂载此Bucket,您可以将其卸载。
fusermount -u /tmp/ossfs |
5.Nextcloud挂载ossfs
几年前还百家争锋的国内网盘市场,如今只剩下百度网盘一枝独秀了。虽然还有一些稳定的国外网盘,如 OneDrive、DropBox、Google Drive 等,但国内访问并不友好。
私有云和 NAS 这种完全掌握在自己手中的云端存储方案就体现其优势了。本文就介绍下如何在 VPS 上快速使用 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 |
8. 设置权限
在/var/lib目录下为session路径创建一个新的文件夹,并将用户名和组设为nginx
mkdir -p /var/lib/php/session chown nginx:nginx -R /var/lib/php/session/ |
9. 启动Nginx和php-fpm服务,并添加开机启动
systemctl start php-fpm systemctl start nginx systemctl enable php-fpm systemctl enable nginx |
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; |
11. ssl证书可选择云运营商
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/ |
13. 为Nextcloud创建data目录,将Nextcloud的用户和组修改为nginx
mkdir -p nextcloud/data/ chown nginx:nginx -R nextcloud/ |
14. 配置Nginx虚拟主机
nginx主配置文件可以参考如下:
user nginx nginx; worker_processes 2; error_log /usr/local/nginx/logs/nginx_error.log crit; pid /usr/local/nginx/logs/nginx.pid; worker_rlimit_nofile 51200;
events { use epoll; worker_connections 6000; }
http { include mime.types; default_type application/octet-stream; server_names_hash_bucket_size 3526; server_names_hash_max_size 4096; log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]' ' $host "$request_uri" $status' ' "$http_referer" "$http_user_agent"'; sendfile on; tcp_nopush on; keepalive_timeout 30; client_header_timeout 3m; client_body_timeout 3m; send_timeout 3m; connection_pool_size 256; client_header_buffer_size 1k; large_client_header_buffers 8 4k; request_pool_size 4k; output_buffers 4 32k; postpone_output 1460; client_max_body_size 10m; client_body_buffer_size 256k; client_body_temp_path /usr/local/nginx/client_body_temp; proxy_temp_path /usr/local/nginx/proxy_temp; fastcgi_temp_path /usr/local/nginx/fastcgi_temp; fastcgi_intercept_errors on; tcp_nodelay on; gzip on; gzip_min_length 1k; gzip_buffers 4 8k; gzip_comp_level 5; gzip_http_version 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申请的证书 ssl_certificate_key /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; log_not_found off; access_log off; }
location = /.well-known/carddav { location = /.well-known/caldav { return 301 $scheme://$host/remote.php/dav; } client_max_body_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; fastcgi_split_path_info ^(.+\.php)(/.*)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param HTTPS on; fastcgi_param modHeadersAvailable true; fastcgi_param front_controller_active true; fastcgi_pass php-handler; fastcgi_intercept_errors on; fastcgi_request_buffering off; fastcgi_buffers 8 128k; fastcgi_buffer_size 128k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_connect_timeout 300s; fastcgi_send_timeout 300s; fastcgi_read_timeout 300s; } location ~ ^/(?:updater|ocs-provider)(?:$|/) { try_files $uri/ =404; index index.php; } location ~* \.(?:css|js)$ { try_files $uri /index.php$uri$is_args$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)$ { try_files $uri /index.php$uri$is_args$args; access_log off; } } |
15. 检测配置是否正确并重新加载配置
nginx -t && nginx -s reload |
16. 游览器登录,根据提示安装nextcloud即可
- 输入浏览器的链接
- 添加用户名/密码
- 选择数据库
17.添加外部存储插件
18.在应用中,找到应用软件包,选择插件,启动
19.选择设置:
20.在左边找到外部存储选项
21.添加外部存储的目录
22.创建成功后,选择文件,则看到外部oss目录的添加名