0%

一个在线的文件浏览器

之前租的VPS过期了,折折腾腾,修修补补又换回搬瓦工,用上了久负盛名的CN2路线,表现比之前的digitalocean好多了,digitalocean的优势在于同时支持BBR和IPv6,搬瓦工这边BBR和IPv6只能二选一,虽然已经有在openVz上安装BBR的方法,但是效果并不是很好,今年翼讯升级了一下,比以往好用得多,于是选了有BBR的版本。
有这样一个长期开机的东西,自然不会让它吃灰,,目前的打算是让它作为一个下载中转站,aria2开服下载,h5ai作为在线文件浏览器,抽空可以从VPS上高速把文件弄回来。

安装h5ai

h5ai是一个非常美观的目录列表程序,如上图,安装h5ai之后,可以实现在线的文件浏览,安装相应的依赖之后,可以在线预览文件,包括图片、视频和压缩包,可以说是相当的方便了,装在树莓派上的话,就可以让树莓派把视频下载好,直接观看了,不用传回电脑来。

安装准备

提前安装好nginx(其实在装好PHP之后安装也是可以的)

1
2
3
4
5
6
yum install nginx -y #for CentOS

# OR

sudo apt install nginx #for Ubuntu/debian

安装PHP

h5ai依赖于PHP运行,h5ai本身的安装并不复杂,就整个过程而言,复杂的是安装PHP,CentOS 7.4 所携带的PHP版本最高到 PHP 5.4, h5ai要求的PHP为5.5+,刚好不符合要求,下面先放安装PHP的过程。

在CentOS上安装PHP

1
2
3
4
5
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum --enablerepo=remi,remi-php72 install nginx php-fpm php-common
yum --enablerepo=remi,remi-php72 install php-opcache php-pecl-apcu php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-mongodb php-pecl-redis php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml
service php-fpm start

这里使用了第三方库,自行编译有很多需要配置的地方,很容易出错,尝试了很多次,总是有点毛病,还是回头用了这个办法。

在Ubuntu/debian上安装PHP

在Ubuntu/debian上安装PHP相对来说方便得多了

1
2
sudo apt update 
sudo apt install php-fpm -y

配置nginx

向nginx的配置内的server段写入以下内容

1
2
3
4
5
6
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

并且更改index段内容为index index.html index.php /_h5ai/public/index.php;
然后

1
2
sudo nginx -t
sudo nginx -s reload

-t提示都OK的话,这个时候nginx已经能识别PHP了。

如果出现错误nginx: [error] invalid PID number "" in "/usr/local/var/run/nginx/nginx.pid",那么使用命令

1
2
sudo nginx -c /etc/nginx/nginx.conf
sudo nginx -s reload

这个时候PHP应该已经安装好并且已经启动了,到nginx的工作目录/var/www/html/或者/usr/share/nginx/html/(一般在这两个位置,),新建一个php文件,比如vim /usr/share/nginx/html/index.php,按I键进入编辑模式,添加以下内容

1
2
<?php
phpinfo();

这个时候,打开如下链接http://x.x.x.x/index.php(x.x.x.x是VPS的公网IP地址),出现如下画面表示安装成功

安装h5ai

作者的网站下载源码包到nginx的工作目录并解压

1
2
3
cd /usr/share/nginx/html #or use: cd /var/www/html/
wget https://release.larsjung.de/h5ai/h5ai-0.29.0.zip
unzip h5ai-0.29.0.zip

这个时候,访问http://x.x.x.x/_h5ai/public/index.php,出现如下画面表示h5ai安装成功

访问http://x.x.x.x/,可以看到nginx的工作目录里面的文件(PS:不能含有index.html,index.php)

安装aria2

在Debian/Ubuntu上直接执行sudo apt-get install aria2就能安装好了,版本相对来说也较新,在Cent OS上可以执行sudo yum install aria2来安装,然而,一如既往的是老掉牙的版本,虽然说一味追求新版并无实在的意义,但是某些功能旧版本是没有的啊啊啊~~
可以自己编译安装aria2

1
2
3
4
5
6
7
8
9
10
sudo apt-get install build-essential libgnutls-dev nettle-dev libgmp-dev libssh2-1-dev libc-ares-dev libxml2-dev zlib1g-dev libsqlite3-dev pkg-config -y # For Debian/Ubuntu
# OR
sudo yum groupinstall "Development Tools" -y && yum install gettext-devel gnutls-devel nettle-devel gmp-devel libssh2-devel c-ares-devel libxml2-devel zlib-devel sqlite-devel pkgconfig libgcrypt-devel libssl-devel libtool autoconf automake autotools autopoint #For Centos
wget https://github.com/aria2/aria2/releases/download/release-1.33.1/aria2-1.33.1.tar.gz
tar -zxf aria2-1.33.1.tar.gz
cd aria2-1.33.1
autoreconf -i
./configure
make
sudo make install

在执行./configure的时候报的错误基本上都是缺少依赖,少谁装谁就好。
静态编译参数./configure ARIA2_STATIC=yes编译出来的程序体积巨大,动态链接的程序只有2M+,静态编译出来之后达到75M+。

配置aria2

可以参考https://blog.icehoney.me/posts/2015-01-31-Aria2-download,新建配置文件vim aria2c.conf,添加以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#用户名
#rpc-user=user
#密码
#rpc-passwd=passwd
#上面的认证方式不建议使用,建议使用下面的token方式
#设置加密的密钥
#rpc-secret=token
#允许rpc
enable-rpc=true
#允许所有来源, web界面跨域权限需要
rpc-allow-origin-all=true
#允许外部访问,false的话只监听本地端口
rpc-listen-all=true
#RPC端口, 仅当默认端口被占用时修改
#rpc-listen-port=6800
#最大同时下载数(任务数), 路由建议值: 3
max-concurrent-downloads=5
#断点续传
continue=true
#同服务器连接数
max-connection-per-server=5
#最小文件分片大小, 下载线程数上限取决于能分出多少片, 对于小文件重要
min-split-size=10M
#单文件最大线程数, 路由建议值: 5
split=10
#下载速度限制
max-overall-download-limit=0
#单文件速度限制
max-download-limit=0
#上传速度限制
max-overall-upload-limit=0
#单文件速度限制
max-upload-limit=0
#断开速度过慢的连接
#lowest-speed-limit=0
#验证用,需要1.16.1之后的release版本
#referer=*
#文件保存路径, 默认为当前启动位置
dir=/home/acgotaku/Downloads
#文件缓存, 使用内置的文件缓存, 如果你不相信Linux内核文件缓存和磁盘内置缓存时使用, 需要1.16及以上版本
#disk-cache=0
#另一种Linux文件缓存方式, 使用前确保您使用的内核支持此选项, 需要1.15及以上版本(?)
#enable-mmap=true
#文件预分配, 能有效降低文件碎片, 提高磁盘性能. 缺点是预分配时间较长
#所需时间 none < falloc ? trunc << prealloc, falloc和trunc需要文件系统和内核支持
file-allocation=prealloc

使用命令aria2c --conf-path aria2c.conf -D让aria2c后台运行,然后去往https://github.com/ziahamza/webui-aria2下载好整个仓库,双击indel.html,然后将设置/连接设置里面的主机设置为VPS的IP地址。

整个思路就是aria2c后台运行,本地的webui可以直接向VPS发出下载命令,下载好之后,打开h5ai的的页面查看文件,然后再从VPS上下载回本地。