• Home
  • About
    • dancingline photo

      dancingline

      Moon is a minimal, one column jekyll theme for your blog.

    • Learn More
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

32位CentOS6.5上用aria2和h5ai搭建离线网盘

10 Aug 2020

Reading time ~2 minutes

aaa最近需要下一些数据,但是校园网的蜜汁出口导致基本下不下来,于是用梯子的机器搭了个离线下载,下完再倒腾过来。因为这是一台32位的机器,系统还是CentOS6.5,网上的教程并不是特别适合,这里把整个过程和踩到的坑记录一下。

安装aria2

网上找的安装教程基本都是CentOS7的,6.5的教程很多源都失效了,找到了一篇博客1介绍的还能用,不过他的是64位的教程,发现源可以网页访问,上去找了找32位的路径,安装过程就是下面这样:

wget http://ftp.tu-chemnitz.de/pub/linux/dag/redhat/el6/en/i386/rpmforge/RPMS/aria2-1.16.4-1.el6.rf.i686.rpm
wget http://ftp.tu-chemnitz.de/pub/linux/dag/redhat/el6/en/i386/rpmforge/RPMS/nettle-2.2-1.el6.rf.x86_64.rpm
wget http://ftp.tu-chemnitz.de/pub/linux/dag/redhat/el6/en/i386/rpmforge/RPMS/nettle-devel-2.2-1.el6.rf.x86_64.rpm

rpm -ivh nettle-2.2-1.el6.rf.i686.rpm
rpm -ivh nettle-devel-2.2-1.el6.rf.i686.rpm
rpm -ivh aria2-1.16.4-1.el6.rf.i686.rpm

安装过程中可能会缺少依赖:

error: Failed dependencies:
	libgnutls.so.26 is needed by aria2-1.16.4-1.el6.rf.i686
	libgnutls.so.26(GNUTLS_1_4) is needed by aria2-1.16.4-1.el6.rf.i686

这时候装上去再重新rpm就行了

yum instll gnutls

配置aria2

配置主要参考了这篇博客2(里面还有一些BT下载的tracker之类的东西),首先创建相关的文件和目录

cd /etc/ && mkdir aria2 && cd aria2 && touch aria2.conf && touch aria2.session
# download就是下载目录
cd ~ && mkdir download && chmod 777 /download

然后编辑配置文件:

vi /etc/aria2/aria2.conf

把博客的2的配置文件放进去,这里下载目录要根据实际创建的进行修改

dir=/root/download

然后用配置文件启动aria2

aria2c --conf-path=/etc/aria2/aria2.conf -D

就可以使用aria2c命令下载了。

###安装AriaNg

AriaNg是一个现代化的web前端,相当于给aria2提供了一个图形化的操作界面,可以通过网址或者IP访问。这个其实不用安装,都是静态资源,从github上下下来:

aria2c https://github.com/mayswind/AriaNg/releases/download/1.1.6/AriaNg-1.1.6-AllInOne.zip

创建一个文件夹把下下来的文件移动过去,解压:

mkdir ariang
# 就是上面那个下载目录
cd /root/download
mv AriaNg-1.1.6-AllInOne.zip ~/ariang
cd ~/ariang
unzip AriaNg-1.1.6-AllInOne.zip

服务器端还是习惯用nginx,首先安装nginx

yum install nginx

创建一个针对AriaNg的配置文件:

touch ariang.conf

内容大概这样:

server {
        listen 80;
        # 域名或者服务器IP
        server_name your server name;
        location / {
            # 这个路径就是刚才解压的路径
            root /root/ariang/;
            index index.html;
        }
}

修改nginx的配置文件:

vi /etc/nginx/nginx.conf

在http的大括号里加上一句

include             /root/ariang.conf;

重启nginx

nginx -s reload

注意放通80和6800端口,现在可以通过上面配置的server name来访问AriaNg了

安装h5ai

h5ai是一个目录列表程序,比较适合用来做网盘,主要就是用来在线查看文件内容,提供打包下载等功能,也可以在线播放视频。这个项目虽然能在GitHub上找到,但release并不在上面,而是放在了一个h5ai网站上,很好的宣传方式,虽然官方的文档写得真的是十分简洁。

在部署这个项目得时候,采用的是nginx通过fastcgi与php-fpm通信来调用php脚本的方式。

首先还是下载下来

aria2c https://release.larsjung.de/h5ai/h5ai-0.29.2.zip

一系列操作

mkdir ~/ariang/h5ai
mv ~/download/h5ai-0.29.2.zip ~/ariang/h5ai
unzip ~/ariang/h5ai
mkdir ~/ariang/h5ai/test
# 创建软链接,把download链接到test目录下
ln -s ~/download ~/ariang/h5ai/test

现在的目录结构大约是这样

DOC_ROOT
 └─ ariang
     ├─ h5ai
     |   ├─ _h5ai
     |   └─ test
     |        └─ download
     └─ index.html
安装php

h5ai和AriaNg不一样,这是一个php的项目,所以首先需要安装php,h5ai需求php5.5+,当然如果已经安装了就可以跳过这一步,这篇博客3给出了一些相关的方法。

查询已经安装的php

rpm -qa|grep php

删除已经安装的php

rpm -e name #name就是上面查询出来的结果,可能会有很多组件

更新源(本来的源里版本比较老):

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm

查看版本列表

yum list php*

然后安装(这里安装的是php7,5.3以后的版本就不需要单独折腾php-fpm了)

yum install php70w.i386 php70w-cli.i386 php70w-fpm.i386 php70w-common.i386 php70w-gd.i386
nginx的相关配置

依然是创建一个关于h5ai的配置文件:

cd ~
touch h5ai.conf

内容修改成这样(部分参考了4):

server {
        listen 80;
        # 这里是自己的域名或者服务器IP
        server_name your server name;
        index index.php /_h5ai/public/index.php;
        # 配置根目录,这里要注意希望展示的目录一定要位于根目录下面
        root /root/ariang/h5ai;
        # 禁止访问private目录
        location /_h5ai/private {
            return 403;
        }
        # 网上抄的
        location ~ [^/]\.php(/|$) {
            fastcgi_split_path_info ^(.+?\.php)(/.*)$;
            if (!-f $document_root$fastcgi_script_name) {
                return 404;
            }
            # 下面是两种与php-fpm通信的方式,第一种是TCP的方式,php-fpm监听本地的9000端口
            fastcgi_pass 127.0.0.1:9000;
            # 这是套接字的方式,这种方式更优,但是我不知道怎么创建这个套接字
            # fastcgi_pass unix:/run/php/php7.0-fpm.sock;
            fastcgi_index index.php;
            # 引入fastcgi的配置
            include fastcgi.conf;
    }

继续修改nginx的配置文件

vi /etc/nginx/nginx.conf

同样在http的大括号里面加进一句

include             /root/h5ai.conf;

然后重启nginx

nginx -s reload

访问http://server_name/_h5ai/public/index.php,可能不能正常访问后台,而是显示file not found,这时候就用得上下一节有关php-fpm的配置了。

php-fpm配置

访问h5ai后台失败的情况下,查看nginx的错误日志:

tail /var/log/nginx/err.log

可以看到下面的信息:

FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream

首先检查h5ai.conf这个配置文件是否有问题,比如:

  • root和index配置错误
  • fastcgi配置错误(SCRIPT_FILENAME这一项配置,参见5)

按理说上面的那个配置文件不应该有问题,基本上就是php-fpm的配置出了问题。

先杀掉php-fpm的进程

killall php-fpm

修改配置文件

vi /etc/php-fpm.conf

找到错误日志这一行,取消注释,改成这样

error_log = /var/log/php-fpm/error.log

继续修改

vi /etc/php-fpm.d/www.conf

下面这些行需要修改

# 执行程序的用户和用户组
user = www
group = www
# 监听情况
listen = 127.0.0.1:9000
# 监听的用户、用户组和模式,用户需要与nginx.conf配置文件里的user一致
listen.owner = root
listen.group = root
listen.mode = 0660
# 下面这句就是要注掉
;php_value[soap.wsdl_cache_dir]  = /var/lib/php/wsdlcache

尝试运行php-fpm

/usr/sbin/php-fpm

应该会报错,因为www这个用户并不存在,所以创建用户和组

groupadd www
useradd -g www www

再次运行就可以了

这个时候如果还是file not found可以参考这篇博客6说的查看是不是在php.ini里面禁用了scandir等函数,php.ini的路径为/etc/php.ini;另外一个非常可能的原因就是用户的文件权限,新建的www用户可能没有web目录的权限,可以加上权限

chmod 755 /root/ariang/
# 后来发现根目录也需要权限
chmod 755 /root/

这样应该就可以访问后台了,后台的页面就是下面这样

初始是没有密码的,直接点login就行了,如果点了以后没有跳转,可能是php没有开session,修改php的配置文件php.ini

vi /etc/php.ini

修改这一行

session.save_path = "/var/lib/php/session"

路径可以自己设置,如果路径中的目录不存在的话要创建

cd /var/lib
mkdir php
cd php
mkdir session

同时要修改权限

chmod 777 session

如果有必要,重启一下php-fpm就可以进入后台了

h5ai配置

在后台里可以查看各种插件的状态,可以根据需求安装,这里主要给上三个:

首先是ffmpeg,这里参考了这篇文章7,首先安装一些依赖项

yum install -y automake autoconf libtool gcc gcc-c++

安装第三方源

rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

安装ffmpeg

yum install ffmpeg ffmpeg-devel

然后是安装zip,主要是为了打包下载

yum install zip

还有pdf预览

yum -y install ImageMagick

另外,h5ai的配置文件是/root/ariang/h5ai/_h5ai/private/conf/options.json,具体的配置可以参考4或者别的教程。这里主要说一下关于密码的问题,配置文件里passhash这一项是sha512哈希出来的密码,默认的这串字符是空密码的,修改密码直接找一个网站把想设置的密码hash出来以后替换这个字符串就行,之后就可以通过新设置的密码进入后台了。

nginx加密访问

如果不想让随便什么人访问服务,可以通过nginx设置用户名和密码,这里参考了这篇文章8,首先创建用户密码文件:

printf "user:$(openssl passwd -crypt your_passwd)\n" >> /etc/nginx/.htpasswd

这里的user和your_passwd代表用户名和密码,然后修改h5ai.conf

vi ~/h5ai.conf

把下面这一段加入server的大括号里面

location ~ {
     auth_basic "please login";
     auth_basic_user_file /etc/nginx/.htpasswd;
     autoindex on;
 } 

或者把这里边的三句放进想要加密的location里面,重启nginx,再访问就需要验证用户名和密码了。同样也可以对AriaNg设置密码。

Reference

  1. CentOS 6.5安装aria2 https://www.cnblogs.com/realpht/p/11213145.html ↩

  2. aria2的安装与配置 https://www.cnblogs.com/awakenedy/p/10985061.html ↩ ↩2

  3. CentOS6.5安装指定的PHP版本(php5.5)https://blog.csdn.net/leejianjun/article/details/52200909 ↩

  4. Ubuntu 18.04手动安装h5ai https://www.timelate.com/archives/install-h5ai-on-ubuntu.html ↩ ↩2

  5. php运行 Primary script unknown错误 https://blog.csdn.net/t_1007/article/details/79097266 ↩

  6. 宝塔Nginx环境搭建H5ai程序及注意事项 https://www.quchao.net/BT-H5ai.html ↩

  7. CentOS下yum方式安装ffmpeg步骤 https://www.jianshu.com/p/ce035d19f5aa ↩

  8. 使用 nginx 为 h5ai 启用目录加密访问 https://www.timelate.com/archives/nginx-h5ai-passwd.html ↩



ariah5ainginxphp Share Tweet +1