单网页图库应用Single File PHP Gallery

什么是 Single File PHP Gallery ?

Single File PHP Gallery 是一个基于单个 PHP 文件的网页图库。您只需将该脚本复制到任何包含图像的目录,即可创建图库。子目录将作为子图库。图像和目录的缩略图会自动生成。使用 Single File PHP Gallery 无需任何配置或编程技能。

软件特点:

  • 单文件实现 :整个图库功能仅包含一个 PHP 文件,用户只需将此文件放入任何包含图像的目录,即可自动生成图库。
  • 简单易用:无需复杂的配置或编程技能,用户只需将脚本复制到所需目录即可。
  • 自动生成缩略图:支持自动生成图像和目录的缩略图,方便用户浏览。
  • 全面支持多种图像格式 :支持 JPGPNGGIFWebP 等多种格式,并可显示 EXIFIPTC 信息。
  • 功能丰富
    • 图像分类管理:支持创建子目录和标签。
    • 图片轮播和幻灯片选项。
    • 支持 GPS 信息链接和地图显示。
    • 集成 PayPal 用于图像出售。
    • 支持密码保护。
    • 提供水印功能。
  • 开源许可证:对于个人非商业用途,使用是免费的;商业用途需要捐赠。

官方提供了在线演示:https://sye.dk/sfpg/demo

构建镜像

如果你不想自己构建,可以跳过,直接阅读下一章节

理论上在群晖的 Web Station 上可以直接运行,因为软件运行的要求很简单:

  • 一个能够运行 PHP 7.0 或更高版本的网络服务器;
  • PHP GD 库;
  • PHP 对服务器的写入权限;

但为了更具备通用性,老苏还是把它折腾成了镜像,这个镜像实际上只是 PHP 的运行环境,程序文件可以在主机目录上,映射到容器中,这样可以方便我们后续更新程序文件

下面是 Dockerfile 文件

bash 复制代码
# 使用 PHP 官方镜像作为基础镜像
FROM php:7.4-apache

# 安装必要的开发库
RUN apt-get update && apt-get install -y \
    libfreetype6-dev \
    libjpeg62-turbo-dev \
    libpng-dev \
    libgif-dev \
    libwebp-dev \
    libtiff-dev \
    libheif-dev \
    && docker-php-ext-configure gd \
       --with-freetype \
       --with-jpeg \
       --with-webp \
    && docker-php-ext-install gd

# 设置适当的权限
RUN chown -R www-data:www-data /var/www/html && \
    chmod -R 755 /var/www/html

# 启用 Apache mod_rewrite
RUN a2enmod rewrite

# 暴露端口 80
EXPOSE 80

构建镜像和容器运行的基本命令如下👇

bash 复制代码
# 保存 Dockerfile 文件

# 构建镜像
docker build -t wbsu2003/sye:v1 .

# 新建子目录
mkdir -p gallery

# 修改目录权限
chmod a+rw gallery

# 将 https://sye.dk/sfpg/Single_File_PHP_Gallery_4.12.0.zip 解压后放入 gallery 目录
# 将图片放入 gallery 目录

# 运行容器
docker run -d \
    --name sfpg \
    -p 8080:80 \
    -v $(pwd)/gallery:/var/www/html \
    wbsu2003/sye:v1

注意

因为是基于 apache 编译的,如果群晖内核版本太低,会遇到下面的错误,这个 AH00141 已经遇到多次了,老苏除了换机器,也没找到其他的办法;

log 复制代码
Function not implemented: AH00141: Could not initialize random number generator

准备

docker 文件夹中,创建一个新文件夹 sye,并在其中建一个子文件夹 gallery

https://sye.dk/sfpg/Single_File_PHP_Gallery_4.12.0.zip 下载后,解压放入 gallery 目录

将图片目录放入,可以放多个图片目录,也可以有子文件夹等等

需要修改 gallery 目录的权限。权限 --> 新增 --> 用户中选取 Everyone --> 勾选 读取写入

如果用命令行的话,只要在上一级目录中执行下面的命令即可

bash 复制代码
# 修改目录权限
chmod a+rw gallery

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 wbsu2003/sye ,下拉仔细找,版本选择 latest

文件夹 装载路径 说明
docker/sye/gallery /var/www/html 存放程序文件和图片目录

端口

本地端口不冲突就行,不确定的话可以用命令查一下

bash 复制代码
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口
5036 80

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

bash 复制代码
# 新建文件夹 sye 和 子目录
mkdir -p /volume2/docker/sye/gallery

# 进入 sye 目录
cd /volume2/docker/sye

# 修改目录权限
chmod a+rw gallery

# 将 https://sye.dk/sfpg/Single_File_PHP_Gallery_4.12.0.zip 解压后放入 gallery 目录
# 将图片资料放入 gallery 目录

# 运行容器
docker run -d \
    --restart unless-stopped \
    --name sfpg \
    -p 5036:80 \
    -v $(pwd)/gallery:/var/www/html \
    wbsu2003/sye

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

yaml 复制代码
version: '3'

services:
  sfpg:
    image: wbsu2003/sye
    container_name: sfpg
    restart: unless-stopped
    ports:
      - 5036:80
    volumes:
      - ./gallery:/var/www/html

然后执行下面的命令

bash 复制代码
# 新建文件夹 sye 和 子目录
mkdir -p /volume2/docker/sye/gallery

# 进入 sye 目录
cd /volume2/docker/sye

# 修改目录权限
chmod a+rw gallery

# 将 docker-compose.yml 放入当前目录

# 将 https://sye.dk/sfpg/Single_File_PHP_Gallery_4.12.0.zip 解压后放入 gallery 目录
# 将图片资料放入 gallery 目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:5036 就能看到主界面

其中 @eaDir 是群晖的系统目录,如果你不想显示,可以修改 index.php 文件

在文件中搜索 exclude,添加要过滤的目录 @eadir

  • 增加后的整行代码:option('DIR_EXCLUDE', ['_sfpg_data', '_sfpg_zip', '_sfpg_icons', '@eadir']);
  • 注意,目录必须用小写字母;

保存后,刷新页面就可以了

进入目录

进入照片,可以查看 info 信息

功能简单,但易用,支持原有的目录结构,和老苏之前介绍的 PiGallery2 有的一拼

文章传送门:目录优先的图片库网站PiGallery2

参考文档

Single File PHP Gallery 4.12.0

地址:https://sye.dk/sfpg/
Single File PHP Gallery

地址:https://sye.dk/sfpg/demo/

相关推荐
李菠菜2 小时前
CentOS系统指定版本Docker与Docker-Compose在线安装教程
docker·容器·centos
包达叔2 小时前
dockercompose文件仓库
docker
李菠菜6 小时前
Kubernetes上通过Helm部署高可用Redis集群
docker·容器·kubernetes
李菠菜7 小时前
修改KubeSphere外网访问端口
docker·容器·kubernetes
福大大架构师每日一题7 小时前
docker v28.1.1 正式发布!修复关键Bug,网络与安全性再升级
网络·docker·bug
一个小坑货7 小时前
Docker 部署 PostgreSQL 数据库
数据库·docker·postgresql
残轩8 小时前
Win10 家庭版 Docker 环境搭建详解(基于 WSL2)
前端·后端·docker
David爱编程8 小时前
90%工程师都踩过的坑:K8s三种探针最佳组合方案全解析
docker·云原生·kubernetes
davysiao9 小时前
基于 CentOS 的 Docker Swarm 集群管理实战指南
linux·docker·centos
Archie_IT9 小时前
Puter部署指南:基于Docker的多功能个人云平台掌控自己的数据
运维·docker·容器