VPS搭建DirectoryLister下载站

  1. 1. DirectoryLister简介
  2. 2. 搭建前的环境准备
    1. 2.1 安装PHP和Nginx环境并新建网站
      1. 2.1.1 安装PHP和Nginx环境
      2. 2.1.2 新建网站
    2. 2.2 申请泛域名SSL证书并开启HTTPS
      1. 2.2.1 安装 acme.sh
      2. 2.2.2 生成SSL泛域名证书
      3. 2.2.3 给网站开启HTTPS
  3. 3. 部署DirectoryLister下载站
    1. 3.1 部署DirectoryLister 3.7.9版本
      1. 3.1.1 部署DirectoryLister
      2. 3.1.2 使用方法及样式魔改
    2. 3.2 部署DirectoryLister 2.7.1版本
      1. 3.2.1 部署DirectoryLister
      2. 3.2.2 使用方法及样式魔改
  4. 4. 参考资料

1. DirectoryLister简介

它是什么:DirectoryLister是公开任何可通过网络访问的文件夹的内容以供浏览和共享的最简单方法,说白了就是一个下载站。

为什么搭建:我的Nextcloud私有云盘搭建之初就是为了给自己用,不想用它来长期分享资源。Github上有一个名为DirectoryLister的项目,可以用它作为自己的资源下载站点,分享一些公用的软件和工具。

项目地址:https://github.com/DirectoryLister/DirectoryLister

历史版本及变更日志:https://github.com/DirectoryLister/DirectoryLister/releases

效果演示:本网站的 Toolbox 即是由此搭建而成。

2. 搭建前的环境准备

以下我将采用宝塔面板部署的方式(宝塔面板安装PHP和Nginx环境并开启HTTPS),VPS系统用的是Debian 10 x86_64。

VPS的购买及配置、域名解析、宝塔面板的搭建及使用…这些基本的就不再赘述了,如果不会的话见我的另一篇博客:VPS基本部署环境的搭建与配置

2.1 安装PHP和Nginx环境并新建网站

2.1.1 安装PHP和Nginx环境

宝塔面板——软件商店,搜索PHP和Nginx进行安装(我选用的版本分别是 Nginx 1.18.0、PHP 7.4),安装方式建议采用编译安装,根据自己的实际需求来即可。

注:本文分别介绍DirectoryLister的2.7.1版和3.7.9版,推荐去配置3.7.9版,PHP的最低支持是7.2,如果版本再低了无法安装。

2.1.2 新建网站

宝塔面板——网站——添加站点——填写域名、选择PHP版本即可(不用创建数据库和FTP)

2.2 申请泛域名SSL证书并开启HTTPS

SSL证书是一种数字证书,用于加密从用户的浏览器发送到Web服务器的数据。 通过这种方式,发送的数据对于使用Wireshark等数据包嗅探器来拦截和窃听您的通信的黑客来说是安全的。

Chrome一直在推动https,所有的http协议网站被标记为不安全,如果再不对网站进行https改造的话,那么可能会对信任度造成一定的影响,所以说对一个面向用户的网站来说,开启https是非常有必要的。

下面将使用acme.sh开源项目申请免费的 Let’s Encrypt 泛域名SSL证书。

注:如果懒得折腾泛域名证书,也可在宝塔面板直接傻瓜式申请Let’s Encrypt的单域名SSL证书(宝塔面板——网站——设置——SSL——Let’s Encrypt——勾选域名,点文件验证——申请出来后设置强制HTTPS)。

2.2.1 安装 acme.sh

1
$ curl  https://get.acme.sh | sh

acme.sh

普通用户和 root 用户都可以安装使用,安装过程进行了以下几步:

  • [1] 把 acme.sh 安装到你的 root 目录下,并创建 一个 bash 的 alias, 方便你的使用。

  • [2] 自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书。

注:安装过程不会污染已有的系统任何功能和文件,所有的修改都限制在安装目录中。那个socat未安装的问题不用管,那是http验证无Web Server时才需要的。

2.2.2 生成SSL泛域名证书

acme.sh 实现了 acme 协议支持的所有验证协议,一般有两种方式验证:http 和 dns 验证。

  • http 验证:http 方式需要在你的网站根目录下放置一个文件,来验证你的域名所有权。
  • dns 验证:dns 方式,在域名上添加一条 txt 解析记录,验证域名所有权。

dns 方式的可以使用域名解析商提供的 API 自动添加 txt 记录完成验证,下面我们将采用这种方法申请Namesilo的泛域名证书。

Step1:打开 https://www.namesilo.com/account/api-manager 去申请 NameSilo API,勾选第2个复选框,点击Generate,即可生成。

申请NameSilo API

注:务必不要勾选上Generate key for read-only access的哪个复选框,否则会导致Unable to add the DNS record. Error add txt for domain的问题。另外,生成的API只出现一次,如果没记下来只能重置。

Step2:在服务器输入以下命令,实现自动dns验证生成泛域名证书。

1
2
3
$ cd /root/.acme.sh
$ export Namesilo_Key="xxxxxxxxxxxxxxxxxxxxxxxx"
$ ./acme.sh --issue --dns dns_namesilo --dnssleep 1800 -d example.com -d *.example.com

等待1800s即可看到申请下来的SSL证书(NameSilo的验证比较慢,官方文档上写的900s有时不足以验证完)

申请下来的SSL证书

生成文件都放在/root/.acme.sh/example.com/目录下,其中:example.com.key是密钥文件,fullchain.cer是证书文件。

注:如果你的域名不是NameSilo的,上述操作有所不同,具体请参考: https://github.com/acmesh-official/acme.sh/wiki/dnsapi

2.2.3 给网站开启HTTPS

打开宝塔面板——网站——设置——SSL——其他证书,把example.com.key密钥文件、fullchain.cer证书文件复制上去,强制https。

开启HTTPS

3. 部署DirectoryLister下载站

DirectoryLister在3.x版本对项目结构和样式进行了大改,我部署过其中的2.7.1版本和3.7.9版本。其中2.7.1版本较为简易只保留了核心功能,3.7.9版本对样式和功能进行了优化,建议部署3.7.9版本。

3.1 部署DirectoryLister 3.7.9版本

3.1.1 部署DirectoryLister

Step1:下载DirectoryLister3.7.9版本的压缩包:Download Directory Lister 3.7.9(注意一定要下载这个tar.gz压缩包,而不是zip压缩包)

Step2:将压缩包上传到网站根目录并解压,并将.env.example文件重命名为.env,然后修改里面的配置。

配置说明详见:https://docs.directorylister.com/configuration/configuration-overview,以下是我所使用的配置,仅供参考。

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
# Here you can control Directory Lister configuration through environment
# varaibles. See the configuration documentation for additional information:
# https://docs.directorylister.com/configuration

APP_DEBUG=false
APP_LANGUAGE=zh-CN

# 是否解析和渲染README文件
DISPLAY_READMES=false

# 在文件列表之前显示README文件
READMES_FIRST=false

# 是否允许将目录下载为Zip
ZIP_DOWNLOADS=false

# 您的Google分析跟踪ID
GOOGLE_ANALYTICS_ID=false

# 您的Matomo分析URL
MATOMO_ANALYTICS_URL=false

# 您的Matomo分析站点ID
MATOMO_ANALYTICS_ID=false

# 文件和文件夹的排序顺序
SORT_ORDER=type

# 反转文件的顺序(应用排序后)
REVERSE_SORT=false

# 隐藏版本控制系统(即Git和Mercurial)用于存储其元数据的文件
HIDE_VCS_FILES=true

# 目录列表的标题
SITE_TITLE="ToolBox"

3.1.2 使用方法及样式魔改

访问路径:https://域名 (文件夹名即为资源的访问路径)

DirectoryLister3.7.9

文件管理:将欲展示的文件目录上传到网站根目录下即可。

样式魔改:修改/app/views/components内的twig文件即可。注意这个修改后不会立刻生效,需要先将/app/cache内的缓存文件删除,再重新请求即可看到修改结果了。

3.2 部署DirectoryLister 2.7.1版本

3.2.1 部署DirectoryLister

Step1:下载DirectoryLister2.7.1版本的压缩包:Download Directory Lister 2.7.1

Step2:将压缩包上传到网站根目录并解压,并将resources/default.config.php重命名为resources/config.php

注:解压后的文件夹内仅有resources文件夹和index.php有用,其余的可自行删除。

3.2.2 使用方法及样式魔改

访问路径:https://域名 (文件夹名即为资源的访问路径)

文件管理:将欲展示的文件目录上传到网站根目录下即可。

样式魔改:修改/resources/themes/bootstrap内的php文件即可。

4. 参考资料

[1] DirectoryLister项目地址 from Github

[2] DirectoryLister配置说明 from DirectoryLister官网

[3] DirectoryLister配置更改不生效问题 from DirectoryLister官网