DirectoryLister 文件目录安装配置使用方法

Eric 教程 25 次浏览 评论已关闭

DirectoryLister 是一个简洁文件目录程序,适合平时分享一些小文件使用。

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

DirectoryLister 安装配置方法

1. 安装 Nginx、PHP 组件,具体可参考之前文章

2. 创建网站目录,下载解压程序文件,配置目录权限。

# 创建网站目录并下载解压程序文件
mkdir -p /var/www/directorylister && cd /var/www/directorylister
wget https://github.com/DirectoryLister/DirectoryLister/releases/download/3.12.0/DirectoryLister-3.12.0.tar.gz
tar -zxvf DirectoryLister-3.12.0.tar.gz && rm -f DirectoryLister-3.12.0.tar.gz LICENSE directory-lister.svg

# 设置 SELinux 读写安全上下文
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/directorylister(/.*)?"
restorecon -R -v /var/www/directorylister

# 将目录所有者改为 nginx 用户/组
chown -R nginx:nginx /var/www/directorylister

3. 设置好域名解析,然后申请 SSL 证书。

# 先创建简单网站配置文件
cat > /etc/nginx/conf.d/directorylister.conf << "EOF"
server {
    listen      80;
    listen      [::]:80;
    server_name file.example.com;
    root        /var/www/directorylister;
    include     /etc/nginx/snippets/letsencrypt-acme-challenge.conf;
}
EOF

# 刷新 Nginx 服务使配置生效
nginx -s reload

# 安装 ACME 客户端(装完后断开重连 SSH)
curl https://get.acme.sh | sh

# 设置默认申请 Let’s Encrypt 证书(或者设置使用 ZeroSSL 证书)
acme.sh --set-default-ca --server letsencrypt

# 申请 SSL 证书
acme.sh --issue -d file.example.com -w /var/www/letsencrypt

# 安装 SSL 证书
acme.sh --install-cert -d file.example.com \
--key-file       /etc/pki/tls/private/file.example.com.key \
--fullchain-file /etc/pki/tls/certs/file.example.com.cer \
--reloadcmd      "systemctl force-reload nginx"

# 生成 DH 会话密钥
openssl dhparam -out /etc/pki/tls/certs/dhparam.pem 2048

4. 修改之前创建的 /etc/nginx/conf.d/directorylister.conf 网站配置文件。

server {
    listen      80;
    listen      [::]:80;
    server_name file.example.com;
    return 301  https://file.example.com$request_uri;
}

server {
    listen      443 ssl http2;
    listen      [::]:443 ssl http2;
    server_name file.example.com;
    root        /var/www/directorylister;
    index       index.html index.htm index.php;

    ssl_certificate           /etc/pki/tls/certs/file.example.com.cer;
    ssl_certificate_key       /etc/pki/tls/private/file.example.com.key;
    ssl_dhparam               /etc/pki/tls/certs/dhparam.pem;

    ssl_buffer_size           4k;
    ssl_session_timeout       10m;
    ssl_session_cache         shared:SSL:10m;
    ssl_protocols             TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers               ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;
    ssl_stapling              on;
    ssl_stapling_verify       on;
    ssl_trusted_certificate   /etc/pki/tls/certs/file.example.com.cer;

    include /etc/nginx/snippets/enable-gzip-compression.conf;

    access_log /var/log/nginx/file.example.com.access.log;
    error_log  /var/log/nginx/file.example.com.error.log warn;

    include /etc/nginx/snippets/letsencrypt-acme-challenge.conf;

    location ~ /\. {
        deny all;
    }

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location = /robots.txt {
        log_not_found off;
        access_log    off;
    }

    location ~* ^/(?:favicon|apple-touch-icon) {
        log_not_found off;
        access_log    off;
    }

    location ~* \.(?:css(\.map)?|js(\.map)?|jpe?g|png|gif|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv)$ {
        expires       7d;
        log_not_found off;
        access_log    off;
    }

    location ~* \.(?:svgz?|ttf|ttc|otf|eot|woff2?)$ {
        add_header Access-Control-Allow-Origin "*";
        expires       7d;
        log_not_found off;
        access_log    off;
    }

    include /etc/nginx/default.d/php.conf;
}

然后刷新 Nginx 服务,使配置生效。

nginx -s reload

5. 至此,访问域名就可以使用了,文件上传到网站根目录下。

6. 可选自定义配置(可用参数请查看此链接)。

# 创建配置文件
mv /var/www/directorylister/.env.example /var/www/directorylister/.env

# 更改语言为简中
sed -i 's|^APP_LANGUAGE=.*|APP_LANGUAGE=zh-CN|' /var/www/directorylister/.env

# 将描述内容移到文件目录上方
sed -i 's|^READMES_FIRST=.*|READMES_FIRST=true|' /var/www/directorylister/.env

# 关闭目录下载选项
sed -i 's|^ZIP_DOWNLOADS=.*|ZIP_DOWNLOADS=false|' /var/www/directorylister/.env

# 设置 Google Analytics 网站统计 ID
sed -i 's|^GOOGLE_ANALYTICS_ID=.*|GOOGLE_ANALYTICS_ID=UA-123456789-0|' /var/www/directorylister/.env

# 关闭计算文件哈希值
echo "MAX_HASH_SIZE=0" >> /var/www/directorylister/.env

# 设置网站 meta 描述内容
echo "META_DESCRIPTION=用一段话描述网站主题内容" >> /var/www/directorylister/.env

# 设置网站名称
echo "SITE_TITLE=测试站点" >> /var/www/directorylister/.env

7. 以下是一些主题文件修改,记得 rm -rf /var/www/directorylister/app/cache/* 删除缓存内容才能看到修改效果。

# 引入资源模板文件(修改 Favicon 图标路径、引入自定义资源等)
/var/www/directorylister/app/views/layouts/app.twig

# 主题样式文件(去除 Google 字体等)
/var/www/directorylister/app/assets/app.css

# 页眉模板文件(修改 Logo 图标等)
/var/www/directorylister/app/views/components/header.twig

# 页脚模板文件(修改版权信息等)
/var/www/directorylister/app/views/components/footer.twig

# 用关键字搜索模板文件位置
find /var/www/directorylister/app -type f -name '*.twig' | xargs grep -l "xxxxxxx"

8. 如果要隐藏文件,在根目录下创建 .hidden 配置文件指定(DirectoryLister 默认隐藏了程序文件和 . 开头文件和目录)。

例如下面设置隐藏 favicon.icorobots.txt 文件(设置语法请参考此链接)。

cat > /var/www/directorylister/.hidden << "EOF"
robots.txt
favicon.ico
EOF