前言
最近发现每月为iCloud
氪金6¥
的50GB
方案已经捉襟见肘了,结合实际需求觉得没必要升级每月21¥
的方案(使用范围局限,空间方案不灵活,最主要的是没钱),于是决定把归档类的图像、音频等数据存到其他位置。
研考之前恰好留意到NextCloud
这一泰斗级解决方案并经过上个月在虚拟机中的安装体验,决定将其与OSS
结合起来并应用到公网以满足“多设备文件同步”、“归档存储旧照片”、“Notability
笔记文件备份”等诸多需求(之前在,懂的都懂)。iOS
上单一个传大文件传到电脑的需求就整的我够呛
关于Nextcloud
的简介如下:
Nextcloud
是德国Nextcloud
公司的一套开源的自托管文件同步和共享的通信应用平台。而NextCloud
的创始人是ownCloud
联合创始人Frank Karlitschek
,16年他离开了原公司,成立了NextCloud
。
过程
1.安装LNMP
/LAMP
环境
安装宝塔面板(非必须)
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh
2.挂载阿里云OSS
为什么要在
nextcloud
安装之前挂载OSS
?
- 如果在
nextcloud
安装完成后再移动数据库非常麻烦- 用过
nextcloud
的人可能会说nextcloud
有一个内置应用可以添加外部存储,叫External storage support
,可以在拥有服务器存储的条件下,直接添加一个外部存储空间。但是,这也是我踩的一个坑。当你的云盘有多个用户的时候,用这个添加的外部存储,所有人上传的文件其他人都能看到,相当于你将阿里云OSS
变成了一个256T
的共享文件夹,也不能对用户设置配额(除非你自己一个人用)。- 提前挂载阿里云
OSS
,再nextcloud
安装时就能直接选择OSS
作为数据盘,非常方便。
在阿里云 OSS
管理控制台页面,点击创建 Bucket:
最好选择与服务器相同地域的Bucket
,这样服务器到OSS
的数据传输只需要使用内网,内网流量完全免费,而外网流量需要收费,0:00-8:00
为0.25元/GB
,8:00-24:00
为0.5元/GB
具体选项可以参考下图:
3.创建AccessKey
云账号 AccessKey 是您访问阿里云 API 的密钥,具有账户的完全权限,请您务必妥善保管!不要以任何方式公开 AccessKey 到外部渠道(例如 Github),避免被他人利用造成 安全威胁。强烈建议您遵循 阿里云安全最佳实践,使用 RAM 用户(而不是云账号)的 AccessKey 进行 API 调用。
一定要妥善保存自己的AccessKey
!
4.OSS
挂载到服务器
获取Bucket 域名:
点击刚刚创建的 Bucket,按下图所示
在宝塔控制面板新建网站,在网站根目录创建cloud/ossfs
下载对应的安装包并上传到/www/wwwroot/
:
Linux发行版 | 下载 |
---|---|
Ubuntu 18.04 (x64) | ossfs_1.80.6_ubuntu18.04_amd64.de |
Ubuntu 16.04 (x64) | ossfs_1.80.6_ubuntu16.04_amd64.deb |
Ubuntu 14.04 (x64) | ossfs_1.80.6_ubuntu14.04_amd64.deb |
CentOS 7.0 (x64) | ossfs_1.80.6_centos7.0_x86_64.rpm |
CentOS 6.5 (x64) | ossfs_1.80.6_centos6.5_x86_64.rpm |
以上列表中提供了常用系统的安装包,若你的系统版本不在列表中,请通过源码编译。源码地址请参见GitHub ossfs。
安装ossfs
:
使用 SSH 远程连接服务器,依次输入以下命令:
对于 Ubuntu
系统,安装命令是:
sudo apt-get update
sudo apt-get install gdebi-core
cd /www/wwwroot/
sudo gdebi your_ossfs_package
对于 CentOS6.5
或更高版本,安装命令是:
sudo yum localinstall your_ossfs_package
对于 CentOS 5
,安装命令是:
sudo yum localinstall your_ossfs_package --nogpgcheck
将自己的AccessKey
保存到服务器
echo my-bucket:my-access-key-id:my-access-key-secret > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs
- my-bucket:创建的bucket的名称
5.挂载OSS
我将 oss
挂载到了网站根目录下创建的 cloud/ossfs
,当然你也可以挂载到其他盘中。
接下来是关键步骤:
使用 ssh 连接到服务器,输入如下指令
id www
我这里的www
用户id为1001,所以接下来我的命令如下。
ossfs bucket名 /www/wwwroot/xxx.xxx.top/cloud/ossfs -o url=oss-cn-hangzhou-internal.aliyuncs.com -o nonempty -ouid=1001 -ogid=1001 -oumask=007 -o allow_other
6.查看是否挂载成功
方法一:
df -lh
方法二(宝塔):
7.安装Nextcloud
在官网下载 Nextcloud
安装包,上传到网站根目录,解压,通过浏览器输入你的网站域名进入安装。
在安装页面的数据目录位置填入 OSS
的挂载位置
若提示您的数据目录可被其他用户读取 请更改权限为 0770 以避免其他用户查看目录
请在 example/config/config.php
中添加以下代码(不用担心下一步会解决访问权限问题)
'check_data_directory_permissions' => false
8.文件安全
安装完成后还需要通过网站配置文件设置禁止访问目录(本条仅限于将OSS
挂载到根目录的用户)
在宝塔页面点击网站,点击设置,在配置文件中添加如下代码。
data是多余的(我的nextcloud
存储位置不为data
,所以其实我可以删掉这个。)
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|cloud)/ {
deny all;
}
代码中的 “build|tests|config|lib|3rdparty|templates|data
” 就是禁止访问的目录,data
是 nextcloud
默认的存储数据的位置,如果你直接将 OSS
作为 nextcloud
存储数据的位置,在上方将 data 更换为根目录(非下一级目录)中挂载 OSS
的位置,如果你最开始跟我的步骤一致,直接复制粘贴上方代码即可,无需更改。
9.上传限制
Nginx
和PHP
默认情况下对上传文件相关限制较为严格,若想上传大文件,可参考我上一篇关于Nextcloud
的记录。
10.设置OSS
开机自动挂载
在
/etc/init.d/
目录下建立文件ossfs
,把以下内容拷贝到这个新文件中。并将其中的your_xxx
内容改成您自己的信息。#! /bin/bash # # ossfs Automount Aliyun OSS Bucket in the specified direcotry. # # chkconfig: 2345 90 10 # description: Activates/Deactivates ossfs configured to start at boot time. ossfs your_bucket your_mountpoint -ourl=your_url -oallow_other
- 执行命令:
chmod a+x /etc/init.d/ossfs
chkconfig ossfs on // CentOS和低版本的Ubuntu
若第二条命令提示“chkconfig: command not found
”,则需要使用sysv-rc-conf
:
sudo apt-get update
sudo apt-get install sysv-rc-conf
sudo sysv-rc-conf ossfs on
若提示Unable to locate package sysv-rc-conf
,则说明软件源中没有sysv-rc-conf
:
打开sources.list
文件:
sudo vi /etc/apt/sources.list
在sources.list
文件最后一行中添加如下一行文本:
deb http://archive.ubuntu.com/ubuntu/ trusty main universe restricted multiverse
更新apt-get
并重新安装sysv-rc-conf
:
sudo apt-get install sysv-rc-conf
可查看服务情况:
sudo sysv-rc-conf
添加到启动项:
sudo sysv-rc-conf ossfs on
- 重启服务器测试
oss
是否开机挂载,使用以下命令查看是否挂载成功,若成功则会显示类似如图所示的结果
df -lh
总结
- 为了这个,我把阿里云
Windows
系统轻量应用服务器给重置了(实在是挥泪斩马谡) - 对于
Linux
“挂载”有了更进一步的认识 - 后续研究一下
Ossfs
如何配置以同时挂载多个Bucket
到ECS
参考资料:
https://help.aliyun.com/document_detail/32196.html
https://www.aliyun.com/price/product?spm=a2c4g.11186623.0.0.75be7952LViDJs#/oss/detail/ossbag
https://www.vpsug.com/17846.html
https://www.cnblogs.com/jason-zhao/p/14537571.html
https://github.com/aliyun/ossfs
https://news.gandi.net/zh-hans/2020/06/backing-up-files-with-nextcloud/
https://blog.csdn.net/weixin_42222347/article/details/95977250
https://blog.nicky1605.com/linux-mount-oss.html
https://developer.aliyun.com/ask/213453
http://help.websoft9.com/cloudbox-practice/nextcloud/solution/mount-oss.html
https://help.aliyun.com/document_detail/51374.html?spm=5176.8465980.0.0.4e7014509BnefG
https://help.aliyun.com/document_detail/150638.html
https://blog.csdn.net/willingtolove/article/details/107494719
https://www.cnblogs.com/wumz/p/10236694.html
https://blog.csdn.net/willingtolove/article/details/107496063
版权属于:soarli
本文链接:https://blog.soarli.top/archives/620.html
转载时须注明出处及本声明。