Linux小内存VPS挂载网盘搭建文件下载服务器

架构设计 2017-01-09

因为某些原因,目前国内的很多网盘大多关闭了,为了能有一个私人用的文件服务器,提供稳定的文件下载服务,我利用了很早前折腾用的小内存VPS(只有可怜的64MB)结合网盘,搭建了一个私人用的下载服务器,记录下搭建步骤。

配置Nginx提供文件服务前端

这里的Nginx安装配置只针对小内存VPS(我的是64MB),配置不一定适用于高负载生产环境。

安装Nginx

由于我的VPS安装了CentOS 6最小化版本,所以根据官网说明,创建/etc/yum.repos.d/nginx.repo文件,填入:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1

然后执行

yum install nginx

根据提示安装完成,接着设置Nginx开机自动启动:

chkconfig nginx on

然后首次直接手工启动Nginx服务即可:

service nginx start

优化Nginx配置

对于小内存VPS,需要对部分参数做一些优化,提高下载并发数,编辑/etc/nginx/nginx.conf,修改Nginx进程数

worker_processes  1;

接着使用epoll,适用于Linux 内核2.6以上

events { 
   use epoll;
   worker_connections  128;
}

然后在http中修改连接超时时间,以及设置sendfile提高文件传输性能

keepalive_timeout  5;
sendfile     on;
tcp_nopush   on;
tcp_nodelay  on;

由于我只做下载服务器用,所以不用开启Gzip,降低内存占用

为下载服务开启http的80端口

iptables -I INPUT -p tcp --dport 80 -j ACCEPT
service iptables save
service iptables restart

配置davfs2挂载支持WebDAV的网盘服务

这里主要是为了使用box网盘提供的webdav接口,将网盘挂载成为Linux系统的一个分区,挂载完成后访问box中的文件就如同操作本地文件一样,接着将Nginx本地目录指向挂载网盘的目录,直接将网盘的空间利用成为本地文件,提供服务器文件下载的存储空间。

支持Webdav的网盘,目前我只了解到两家,国外的box以及国内的坚果云,如果你了解到其他服务商也提供webdav接口,欢迎评论留言提醒。

安装davfs2

yum install davfs2

安装完成后就已经可以通过以下命令手工挂载了:

mkdir /mnt/box
mount -t davfs https://dav.box.com/dav /mnt/box

不过为了服务器重启后自动挂载,还需要将账户信息写入配置文件中

配置davfs2

启用用户锁,编辑/etc/davfs2/davfs2.conf,修改

use_locks 0

接着编辑/etc/davfs2/secrets,写入webdav的地址,邮箱和密码(这里的邮箱密码,指的是支持webdav网盘的账号和密码)

https://dav.box.com/dav 邮箱 密码

设置开机启动

开机启动可以在/etc/fstab中设置,这里用另一种方法实现同样的功能,编辑/etc/rc.local,加入

mount -t davfs https://dav.box.com/dav /mnt/box

保存后即可。

配置Hubic FUSE挂载Hubic网盘服务

这里主要是使用Hubic这个网盘服务,目前这个网盘可以正常访问,因此作为文件存储比较适合。

下载并编译Hubic FUSE

首先安装编译所需依赖包:

yum install gcc make fuse-devel curl-devel libxml2-devel openssl-devel json-c-devel file-devel

然后在这里下载源码并编译:

wget https://github.com/TurboGit/hubicfuse/archive/v3.0.0.tar.gz
tar xvzf v3.0.0.tar.gz
cd hubicfuse3.0.0
./configure
make
make install

这样就已经安装完成了。

配置Hubic FUSE

接下来你需要进入hubic后台申请开发者应用密钥信息,点击这里进入,新增一个应用,回调地址填http://localhost/,然后记录下Client ID和Secret Client。

接着运行./hubic_token,根据提示填入刚刚获得的信息,完成后会显示如下信息:

client_id=xxx
client_secret=xxx
refresh_token=xxx

将上面的信息复制后,粘贴到/root/.hubicfuse文件中

挂载及设置自启动

这时已经可以挂载hubic网盘了:

mkdir /mnt/hubic
hubicfuse /mnt/hubic -o noauto_cache,sync_read,allow_other

如果需要开机自启动,同样编辑/etc/rc.local,加入

hubicfuse /mnt/hubic -o noauto_cache,sync_read,allow_other

如果要弹出挂载盘,使用命令(需要安装fuse包):

fusermount -u /mnt/hubic

这样,hubic网盘的挂载也已经完成了。

设置下载服务器网站路径

最后只要将Nginx的网站路径直接设置为/mnt/box或者/mnt/hubic,就可以使用网盘的空间提供下载服务了。

这里要注意一点,如果你使用CentOS7,默认开启SELINUX的状态下,可能会无法直接通过Nginx访问挂载的网盘中的文件,这时需要额外做下面的操作让SELINUX允许Nginx访问FUSE文件系统的文件,首先检查一下参数开启情况:

getsebool -a | grep httpd

如果看到httpd_use_fusefs off,那么用下面的命令开启:

setsebool httpd_use_fusefs on -P

之后就可以顺利访问了。如果这样无效的话,请参考这里这里

为了服务更加稳定,建议在下载服务器前增加CDN,减轻服务器负担。


本文由 surenkid 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

3 条评论

  1. 匿名
    匿名

    你的博客不错的,支持了

    1. surenkid
      surenkid

      谢谢:) 希望多交流

      1. 匿名
        匿名

        我会经常看看的

添加新评论