h5ai 0.30 快速搭建设置速查

环境要求:

需要PHP环境和web服务(Web 服务,例如 Nginx、Apache、Cherokee、Lighttpd 等)

h5ai 0.30   php需要PHP 7.0以上版本

h5ai 0.29   php需要PHP 5.5以上版本

必要删除PHP配置中disable_functions的禁用函数 scandir、putenv

可选删除PHP配置中disable_functions的禁用函数exec,passthru(如要使用基于shell命令的可选功能) 。

因为 h5ai 需要使用 opendir / readdir / scandir / fopen / file_get_contents / exec / passthru 这几个函数,以实现页面功能,所以我们要在 disable functions 里删除它们。

file_get_contents:使用此函数读取 options.json,如果不允许使用此函数,页面无法显示。

fopen:在进行文件下载时使用此函数,但在线查看文件不使用此函数。

opendir / readdir / scandir:用来获取多国语言文件,如果禁止此函数,则只能显示默认语言,而无法在线更改。

exec / passthru:扩展功能模块需要使用 shell commands,如生成 视频 / PDF 的缩略图。


1、安装h5ai 0.30

1.1、下载 h5ai 安装包

转至官网下载:https://larsjung.de/h5ai/;旧版本请访问https://release.larsjung.de/h5ai/

1.2、解压

将文件解压后放入网站根目录,注意目录结构应为:(DOC_ROOT表示网站根目录)

DOC_ROOT
├─ _h5ai
├─ your files
└─ and folders

1.3、添加默认首页 

将"/_h5ai/public/index.php"添加到默认首页列表中(不同web服务略有不同!)。这样h5ai将管理该目录内和该目录下所有目录和文件(文件不包括已设置在默认首页列表中文件)。

Apache httpd 2.2 / 2.4:在httpd.conf文件或者是位于网站根目录中的.htaccess文件中:

DirectoryIndex  index.html  index.php  /_h5ai/public/index.php

lighttpd 1.4:在lighttpd.conf文件中:

index-file.names += ("index.html", "index.php", "/_h5ai/public/index.php")

nginx 1.2:在nginx.conf的index字段中:

index  index.html  index.php  /_h5ai/public/index.php;

Cherokee 1.2:在cherokee.conf 文件中:

vserver!1!directory_index = index.html,index.php,/_h5ai/public/index.php

2、h5ai功能环境设置

访问 http://你的域名/_h5ai/public/index.php,检查h5ai是否可以访问。此页面显示有关服务器功能的一些提示。

2.1、默认网站权限设定

默认设定文件为:644;目录为755;网站所属用户和组均为www。在网站根目录下执行如下命令:

find ./ -type d -exec chmod 755 {} \; 
find ./ -type f -exec chmod 644 {} \; 
chown -R www:www ./

 

2.2、Image thumbs 开启

设置启用PHP扩展组件:GD通过 phpize 安装 PHP 的 GD 模块

2.3、Use EXIF thumbs  开启

设置启用PHP扩展组件:exif通过 phpize 安装 PHP 的 exif 模块

2.4、Movie thumbs 开启 (使用FFmpeg或者libav二选一即可

FFmpeg不同系统做分别说明:

debian 8+:

编辑软件源文件:vim /etc/apt/sources.list

添加四个软件源:

deb http://www.deb-multimedia.org jessie main non-free 
deb ftp://ftp.deb-multimedia.org jessie main non-free 
deb http://www.deb-multimedia.org stable main non-free 
deb ftp://ftp.deb-multimedia.org stable main non-free

 

更新软件源:apt-get -y update

安装 ffmpeg:apt-get -y install ffmpeg

Ubuntu 16.04+:

直接通过命令安装:apt-get -y install ffmpeg

CentOS7+:

注意:请转至 http://www.ffmpeg.org/releases/ 查看最新的 FFmpeg 版本并下载编译安装。

编译安装:

wget http://www.ffmpeg.org/releases/ffmpeg-*.*.tar.gz
tar -zxvf ffmpeg-*.*.tar.gz
cd ffmpeg-*.*
./configure
make
make install

安装完成后,需要删除PHP配置中disable_functions的禁用函数 exec,passthru

libav:

http://libav.org/download/    下载源码编译即可。

安装完成后,需要删除PHP配置中disable_functions的禁用函数 exec,passthru

2.5、PDF thumbs 开启

安装Imagemagick即可满足。需要进入SSH终端
Ubuntu/Debian系统:apt-get install ImageMagick -y

CentOS系统:yum install ImageMagick -y

安装完成后,需要删除PHP配置中disable_functions的禁用函数 exec,passthru

2.6、Shell tar、Shell zipShell du 开启

需要删除PHP配置中disable_functions的禁用函数 exec,passthru,才能正常使用!

3、自定义安装位置

可以将h5ai安装到Web服务器文档根目录的任何子目录中。当显示面包屑时,此目录将被视为根目录。

例如,将文件夹_h5ai复制到DOC_ROOT/some/folder/_h5ai:

DOC_ROOT

 └─ some

     └─ folder

         ├─ _h5ai

         ├─ your files

         └─ and folders

访问http://你的域名/some/folder/_h5ai/public/index.php看看一切是否正常显示。在此示例中,您需要添加/some/folder/_h5ai/public/index.php到默认文件列表中(如上面的步骤1.3、添加默认首页所示)。


4、h5ai更多配置设定:

配置修改主要在配置文件_h5ai/private/conf/options.json中。如果在options.json文件中没有你需要的设置,请在_h5ai/private/conf的目录下查看配置文件。

_h5ai/private/conf/options.json可以设定以下内容:

4.1、功能自检页面的密码设置(即修改http(s)://你的域名/_h5ai/public/index.php默认密码

首先生成自定义 sha512 密码。打开 http://md5hashing.net/hashing/sha512,在左侧输入你想设置的密码,点击“hash it”,如下图:

img_5e7238c619ff0.png

点击“Copy Hash”将密码复制到粘贴板,如下图:

img_5e7238f606521.png

然后在options.json里搜索 “passhash”,大概第 10 行,将其密码粘贴改成刚刚成的就可以了。

img_5e7239637b357.png

设置完成后,访问功能自检页面就需要你刚才设置的新密码才能访问进入,避免被黑客破解利用系统漏洞!

4.2 "resources"  Google字体加载设置,需要修改

根据实际需求调整,如果网页加载时发现字体加载慢影响网站整体响应速度,可以进行更换成其他Google字体镜像加速站点。

如国内加载字体慢,可将fonts.googleapis.com替换为fonts.loli.net即刻,参考文章:https://sb.sb/blog/css-cdn/

       推荐使用本地加载方式:

首先你需要创建一个fronts文件夹用于存放字体文件,然后就是下载官方默认的这个链接

https://fonts.googleapis.com/css?family=Ubuntu:300,400,700%7CUbuntu+Mono:400,700

浏览器访问是个css文件,右键另存为css.css到fronts文件夹中,打开css文件下载里面提到的所有字体文件存到/_h5ai/public/ext/fronts中

接着修改h5ai/private/conf/options.json文件中resources字段的内容如下

"styles": [
            "https://fonts.googleapis.com/css?family=Ubuntu:300,400,700%7CUbuntu+Mono:400,700"
        ]
替换成如下内容:
"styles": [
            "/_h5ai/public/ext/fronts/css.css?family=Ubuntu:300,400,700%7CUbuntu+Mono:400,700"
        ]

同时需要将/_h5ai/public/ext/fronts/css.css文件中的引用字体地址改成相对路径 ./,如下图所示:

 

4.3、"view" 文件列表的设置

disableSidebar:是否显示左侧边栏(功能栏)需要开启

hidden:此参数可以指定文件夹列表里隐藏哪些文件,可以使用正则来匹配文件名称。

举例如下:
^\\.:隐藏名称以 . 开头的文件,如 .htaccess,.gitignor 等等。
^_h5ai:隐藏名称以 _h5ai 开头的文件或文件夹,如 _h5ai,_h5ai.header.html 等等。
^__:隐藏名称以__开头的文件或文件夹,如 __tmp,__aaa__ 等等。
\\.sh$:隐藏名称以.sh结尾的文件或文件夹,如 bash.sh,scripts.sh 等等。
^robots.txt:隐藏名称以 robots.txt 开头的文件或文件夹,如 robots.txt, robots.txt.bak 等等。

hideFolders:是否在文件列表中只显示文件而隐藏文件夹。

theme:默认的文件类型图标,_h5ai/public/images/theme 里的每个文件夹都是一种图标,默认带了 2 套,另一套图标名为 comity。

        default 图标

        comity 图标

unmanaged:如果某个文件夹里包含数组里的文件,则将拒绝显示此文件夹里的所有内容。

4.4、"autorefresh" 自动刷新设置,默认不用调整

 "enabled": true,  #true表示开启该功能,false表示关闭不启用

 "interval": 5000   #刷新间隔时间单位为毫秒,5000表示5秒刷新一次,最小值只能设置为1000

4.5、"crumb"  显示可点击的面包屑,默认不用调整

"enabled": true,  #true表示开启该功能,false表示关闭不启用

4.6 、"custom"  允许自定义页眉和页脚文件,默认不用调整

这里说说如何自定义页眉和页脚文件!

格式要求很简单:首先在需要自定义目录内创建两个名为" _h5ai.header.html"和" _h5ai.footer.html"文件,其次将自定义的内容需要放到<div></div>标签内,如下举例:

_h5ai.header.html文件内容举例如下:(仅供参考)

<div id="content-header" class="">
<h1 style="text-align: center">
    This is a header message
</h1>
<p style="text-align: center">
    The header is read from file <code>_h5ai.header.html</code>. The content of
    this file will be enclosed by <code>div</code> tags.
</p>
</div>

_h5ai.footer.html文件内容举例如下:(仅供参考)

<div id="content-footer" class=""><p style="text-align: center">
    The footer is read from file <code>_h5ai.footer.html</code>. The content of
    this file will be enclosed by <code>div</code> tags.
</p>
<p style="text-align: center">
    <strong>Note:</strong> all files and directories of name <code>_h5ai*</code>
    are hidden from the index by default.
</p>
</div>

如果你文件的扩展名是md它的内容将被解释为markdown,而不是使用html。

4.7、 "download"  启用打包下载

将enabled 由 false 改为 true。更多细节设置请查看options.json配置文件说明。

4.8、"filter"  允许搜索字符串过滤当前文件夹中显示的文件和文件夹。

将enabled 由 false 改为 true。更多细节设置请查看options.json配置文件说明。

4.9、"foldersize"  计算文件夹的大小

请根据实际需求调整,如果目录下文件太多强烈建议关闭,每次点击都需要计算文件夹大小,会很耗时,影响访问体验!

关闭计算文件夹的大小:将enabled 由 true 改为false 。更多细节设置请查看options.json配置文件说明。

4.10 "google-analytics-ua" 添加Google Universial Analytics异步跟踪代码

功能默认关闭。如需要开启请查看options.json配置文件说明。

4.11、"info" 设置文件信息及二维码

将enabled 由 false 改为 true。更多细节设置请查看options.json配置文件说明。

4.12、"l10n" 设置默认语言为简体中文

langen改为zh-cn
enabled false 改为 true

4.13、"piwik-analytics" 添加Piwik跟踪器javascript代码

功能默认关闭。如需要开启请查看options.json配置文件说明。

4.14、点击预览设置

"preview-aud" 点击播放音频预览;

"preview-img" 点击显示图像预览;

"preview-txt" 显示文本文件预览点击;

"preview-vid" 点击进行视频预览

这些功能默认开启如需要开启请查看options.json配置文件说明。

4.15、"search" 允许输入字符串搜索当前文件夹下的文件和文件夹

将enabled 由 false 改为 true。更多细节设置请查看options.json配置文件说明。

4.16、"select"  设置显示选中条目

将enabled 由 false 改为 true。更多细节设置请查看options.json配置文件说明。

4.17、"sort"  设置默认排序顺序,默认不用调整

4.18、"thumbnails"  设置显示文件的缩略图,默认不用调整

4.19、"title"  设置用当前的面包屑替换窗口标题,默认不用调整

4.20、"tree" 设置显示树形文件夹结构,默认不用调整


5、为共享文件页面设置密码

一般h5ai安装后都是不需要用户名和密码就可以直接查看目录的,这样很不好,所以我们需要手动添加些代码,使其需要输入用户名和密码才能查看。

        方案一:

进入h5ai目录找到_h5ai/public/index.php并编辑

1、在头部<?php 的下一行,增加

auth();

2、在底部增加

function auth (){
        $valid_passwords = array ("账号" => "密码");
        $valid_users = array_keys($valid_passwords);
        $user = $_SERVER['PHP_AUTH_USER'];
        $pass = $_SERVER['PHP_AUTH_PW'];
        $validated = (in_array($user, $valid_users)) && ($pass == $valid_passwords[$user]);
        if (!$validated) {
          header('WWW-Authenticate: Basic realm="My Realm"');
          header('HTTP/1.0 401 Unauthorized');          
          die ("Not authorized");
        }
}

注:账号和密码可以随便填。

方案二:

打开_h5ai/public/index.php

在文件头部添加

mima();

在两句define后面添加

function mima(){
        $user=array('dnmr','net');
        if(!($user[0]===$_SERVER['PHP_AUTH_USER'] && $user[1]===$_SERVER['PHP_AUTH_PW'])){
          header('WWW-Authenticate: Basic realm="MY Mark"');
          header('HTTP/1.0 401 Unauthorized');
          die("please login");
        }}

如下图:

img_5e723c44d7cc8.png

dnmr 和net 分别为 账号 和 密码,自己随便设置。

修改后网页效果:

img_5e723c36bbc3e.png

6、H5ai 部分目录加密设置

对于h5ai的目录加密来说,我个人的需求仅仅是部分目录加密,比如存放个人资料或者某类种子的时候,才需要加密,其余目录依旧是属于公共开放目录。

1.在nginx的安装目录下生成一个用户登录的账号和密码文件htpasswd

#生成你的账号密码信息,请替换命令中的用户名和密码。

printf “youruser:$(openssl passwd -crypt yourpassword)\n” >> /usr/local/nginx/conf/htpasswd

2.编辑虚拟主机配置文件,其实在安装h5ai的时候就已经配置过一次了,路径不变依旧是:

#虚拟主机配置文件路径

/usr/local/nginx/conf/vhost/your_domain.conf

在截图位置处添加一下代码。其中将红色部分xzymoe替换为你需要加密的目录即可。

location ~ ^/xzymoe/.*
{
auth_basic "please login!";
auth_basic_user_file htpasswd;
autoindex on;
}

添加后效果如图:

1537626047897349.png

        3、重启nginx服务,浏览器访问加密目录效果如下:

1537626261423346.png

7、添加视频插件(DPlayer)

请访问项目源:https://github.com/Pearlulu/h5ai_dplayer

原文博客:https://www.moerats.com/archives/555/

参考添加方法:https://waterbear.pw/1973.html

8、PHP安全设置(原则按需设置

网上关于 php.ini 的安全设置里,一般为这几项:

allow_url_include:Off(不允许包含远程资源文件

allow_url_fopen:Off(不允许打开远程文件

open_basedir:/var/www/(网站根目录,根据你网站目录位置情况进行更改

disable_functions: (这里仅供安全角度进行参考,h5ai所需必要禁用函数已在文章开头环境配置中进行了说明!

# 禁止命令执行函数(仅供安全角度进行参考,不能作为h5ai的设置参考)
disable_functions = system,passthru,exec,shell_exec,popen,pcntl_exec,proc_open
# 禁止文件操作函数(仅供安全角度进行参考,不能作为h5ai的设置参考)
disable_functions=chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen,unlink,delete,copy,mkdir,rmdir,rename,file,file_get_contents,fputs,fwrite,chgrp,chmod,chown

expose_php:Off(不显示PHP版本信息

display_errors:Off(出错脚本错误时不显示错误信息

log_errors:On(出错脚本错误时记录日志

error_log:/usr/local/apache2/logs/php_error.log(日志文件路径


参考文章来源:

https://blog.csdn.net/Haven200/article/details/102555347/

https://www.liuhaiying.cn/33958.html

https://larsjung.de/h5ai/

版权声明:
作者:WaterBear
链接:https://l-t.top/1328.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录