服务器容量不够用?硬盘一下子就被塞满了?憋担心,阿里云的oss提供了挂载功能,挂载之后就和本地文件一个尿性了,且不占用服务器空间,这不就是扩容吗?。我已经利用这个功能把本站所有图片、视频等文件移到了oss中,而网页文件(js,css,php等)则留在了本地。腾讯云似乎没有提供这种服务。
你可能会觉得,oss的流量费用特贵,对没错,真的是特贵。因为oss是为自家服务的容器服务,外网流量当然得贵一点。而用阿里云的服务器挂载的话,就只用付储存的钱就够了,储存包年9¥40Gb,不亏,特香。当然,挂载的话流量消耗的是服务器的,也会占用相应的带宽(如果是内网的话仅占用内网带宽)。
宝塔是有oss挂载插件的,但是特low,我就没用那个插件挂载成功过。
一、创建Bucket
首先,你得有一台阿里云的服务器直接挂载或中转,土豪请自便。
只要你购买了储存包,Bucket是不限数量的,随便创建。购买储存包选择地址的时候最好选择和服务器同一地址的地方。用外网流量的人注意,大陆之外流量贵死 。
创建时选择私人读写即可,没必要公共读。这里的Bucket的名称后面是要用的,不要乱取。

二、安装ossfs
阿里云是提供了详细的帮助文档的,一般人都看得懂。
我也没什么好补充的,再不会发工单让客服给你装。
以下以CentOS 7.x 版本为例:
wget http://gosspublic.alicdn.com/ossfs/ossfs_1.80.6_centos7.0_x86_64.rpm
sudo yum localinstall ossfs_1.80.6_centos7.0_x86_64.rpm
然后就ok了。
三、挂载Bucket
阿里的帮助文档也给出了挂载方法。
但其中还是有一些小错误,比如缺了参数。
普通直接挂载后,目录所有者是root且权限是640。这使网站程序无权限写操作,压根用不了。
解决方法帮助文档也给出了,我总结一下
- 能同时挂载多个Bucket多个目录,输出多个账号访问信息到
/etc/passwd-ossfs
然后挂载即可。 - 用
-o allow_other
参数将目录权限设置为777。 - 用
sudo -u user
或用uid/gid
信息即可指定用户。
下面是详细的说明和举例。
参数说明:
www
:需要更改到的用户。
your_bucket
:上面创建Bucket时提到的要用的名称,并已经输出到了/etc/passwd-ossfs
文件中。
your_mount_point
:你需要挂载到的目录,必须是存在的目录(就是要提前创建好该目录),不以/
结尾。
your_endpoint
:阿里云oss控制台中Bucket概览中给出的EndPoint,选用[ECS 的经典网络访问(内网)]即可,或者你可以用阿里云的服务器反向代理该链接创建的链接以避免费用,供外网服务器使用。

your-access-key-id
与your-access-key-secret
:阿里云账号的密钥,这个东西很重要,不要遇到什么人说帮你配置你就傻傻交出去了。获取位置如下图。

先将Bucket名、密钥等一同输出到/etc/passwd-ossfs
中
示例:
echo your_bucket:your-access-key-id:your-access-key-secret >> /etc/passwd-ossfs
/etc/passwd-ossfs
文件必须是640权限的,不然ossfs会报错credentials file /etc/passwd-ossfs should not have others permissions.
所以挂载前还要更改权限。
chmod 640 /etc/passwd-ossfs
然后进行挂载
1、sudo -u法,这个方法我这边行不通,你不妨尝试一下。
sudo -u www ossfs your_bucket your_mount_point -ourl=your_endpoint -o allow_other
2、 uid/gid信息法。
先用id www
获取uid/gid
。
id www

然后用其进行挂载
ossfs your_bucket your_mountpoint -ourl=your_endpoint -ouid=your_uid -ogid=your_gid -o allow_other
此时以图中的返回数值为示例,我的your_uid
=your_gid
=1001
如此挂载之后的目录就为www用户的777权限目录了,亲测wp媒体库可以随意使用,只是加载媒体库页面时有点慢,加载其他页面没有明显的延缓。
四、开机自动挂载
挂载的目录在重启之后会消失,需要手动重新挂载。如果想要自动挂载,需要进行手动实现。
your_command
表示第三点[挂载Bucket]中得到的用来挂载的完整命令。
Ubuntu14.04和CentOS6.5系统版本通过fstab的方式自动mount
echo "your_command" >> /etc/fstab
若是CentOS6.5,那么再来一个
chkconfig netfs on
CentOS7.0及以上的系统通过开机自动启动脚本mount
正常情况下,安装ossfs后会自带一个开机自动启动脚本
echo "your_command" >> /etc/init.d/ossfs
五、取消挂载
帮助文档中提到,若要取消挂载,输入
fusermount -u your_mountpoint
即可取消挂载,但我输了命令之后却提示-bash: fusermount: command not found
。后来发了个工单才知道这玩意要单独装。
输入
yum -y install fuse
再进行取消挂载即可。