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 zip、Shell 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”,如下图:
点击“Copy Hash”将密码复制到粘贴板,如下图:
然后在options.json里搜索 “passhash”,大概第 10 行,将其密码粘贴改成刚刚成的就可以了。
设置完成后,访问功能自检页面就需要你刚才设置的新密码才能访问进入,避免被黑客破解利用系统漏洞!
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" 设置默认语言为简体中文
将lang由en改为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");
}}
如下图:
dnmr 和net 分别为 账号 和 密码,自己随便设置。
修改后网页效果:
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;
}
添加后效果如图:
3、重启nginx服务,浏览器访问加密目录效果如下:
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/