返回列表 发布新帖
查看: 5|回复: 0

【AI分享月】时光相册(私人相册)PHP端+uniappAPP端

205

主题

0

回帖

617

积分

高级会员

积分
617
发表于 昨天 14:46 | 查看全部 |阅读模式
# 🌟 时光相册(PhotoLife)— 自托管私人相册

> 记录生活,留住每一刻的温柔

【童年】通过百度网盘分享的文件:时光相册(自用相…
链接:https://pan.baidu.com/s/11LvXjw4PogUyua6isvrwDA?pwd=1u48
复制这段内容打开「百度网盘APP 即可获取」

注:APP内图标须自配,自己寻找倒入即可

---

## 📖 这是什么?

时光相册是一款**轻量自托管相册程序**,专为追求隐私与品质的你设计。把回忆牢牢掌握在自己手中——无论是日常随手拍下的晚霞、孩子成长的珍贵记录,还是旅行途中的风景大片,都能帮你妥善安放。

- 🔒 隐私至上:数据在自己服务器,不依赖任何第三方云
- 📱 全端覆盖:PC网页 + UniApp移动端(iOS/Android/H5)
- ☁️ 灵活存储:本地 / 阿里云OSS / 腾讯云COS / 七牛云 / 又拍云
- 🎬 视频支持:自动提取封面、时长,全屏播放
- 📅 时光轴:日历视图,按日期梳理生活轨迹

---

## ✨ 功能一览

| 模块 | 功能 |
|------|------|
| 📷 图片 | 多图上传、拍照上传、瀑布流展示、全屏查看、长按保存/删除 |
| 🎬 视频 | 视频上传、自动提取封面+时长、全屏播放、长按保存/删除 |
| 📅 浏览 | 日期分组、日历选择器、照片/视频Tab切换、下拉刷新 |
| 🔐 安全 | 访问密码保护、独立管理员系统、APP端Token认证 |
| ☁️ 存储 | 本地/OSS/COS/七牛/又拍云,OSS直传+中转回退 |
| 🖥️ Web端 | 响应式布局、批量删除、管理后台 |
| 📱 APP端 | 原生Android应用、上传进度条、视频时长显示 |

---

## 🔧 技术栈

- **后端**:PHP 7.4+ / 8.0 + MySQL,纯原生开发,无框架依赖
- **前端**:纯 JS/CSS/HTML,无 Vue/React 等框架
- **移动端**:UniApp(Vue 2),支持 iOS / Android / H5
- **视频处理**:ffmpeg 自动提取封面和时长

---

## 📦 源码说明

| 包名 | 内容 |
|------|------|
| `photolife-backend.tar.gz` | 后端源码(含PC网页前端+管理后台) |
| `photolife-uniapp.tar.gz` | UniApp移动端源码 |

---

## 🚀 搭建教程

### 一、服务器环境要求

| 组件 | 最低要求 | 推荐 |
|------|---------|------|
| 系统 | CentOS 7+ / Ubuntu 18+ | CentOS 7.9 |
| Web服务器 | Nginx 1.18+ | Nginx 1.22 |
| PHP | 7.4+ | PHP 7.4 / 8.0 |
| MySQL | 5.7+ | MySQL 5.7 |
| ffmpeg | 2.8+ | ffmpeg 4+(视频封面必须) |

### 二、宝塔面板安装

```bash
# CentOS 安装宝塔
yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec
```

安装后在宝塔面板中安装:Nginx、PHP 7.4(或8.0)、MySQL 5.7

### 三、PHP 配置(重要!)

#### 3.1 启用 exec 函数

宝塔面板 → 软件商店 → PHP → 设置 → 禁用函数,删除以下函数的禁用:
- `exec`
- `shell_exec`
- `putenv`

> 时光相册需要 `exec` 调用 ffmpeg 生成视频封面,不开启则视频无封面。

#### 3.2 安装 PHP 扩展

宝塔面板 → 软件商店 → PHP → 设置 → 安装扩展,确保已安装:
- `fileinfo`(必须)
- `openssl`(必须)
- `curl`(必须)
- `gd`(推荐)
- `mbstring`(推荐)
- `pdo_mysql`(必须)

#### 3.3 修改上传限制

宝塔面板 → 软件商店 → PHP → 设置 → 配置修改:
```
upload_max_filesize = 100M
post_max_size = 100M
max_execution_time = 300
memory_limit = 256M
```

### 四、安装 ffmpeg

```bash
# CentOS 7
yum install -y epel-release
yum install -y ffmpeg

# Ubuntu
apt install -y ffmpeg

# 验证
ffmpeg -version
```

> ⚠️ 必须安装!否则视频无封面、时长显示0.00

### 五、部署后端

#### 5.1 创建网站

1. 宝塔面板 → 网站 → 添加站点
2. 填写域名,PHP版本选 `PHP 7.4`
3. 数据库选 `MySQL`,记录数据库信息

#### 5.2 上传文件

1. 将 `photolife-backend.tar.gz` 上传到网站根目录
2. 解压:
```bash
cd /www/wwwroot/你的域名
tar xzf photolife-backend.tar.gz
```

#### 5.3 设置权限

```bash
chmod -R 755 .
chmod -R 777 uploads/
chmod -R 777 config.php # 安装前需可写
```

#### 5.4 安装向导

浏览器访问 `http://你的域名/install.php`,按提示完成:
1. 填写数据库信息
2. 设置管理员账号密码
3. 设置访问密码(APP端需要)
4. 配置存储方式(本地 或 阿里云OSS)

#### 5.5 安装后清理

```bash
rm -f /www/wwwroot/你的域名/install.php
```

### 六、Nginx 伪静态

宝塔面板 → 网站 → 设置 → 伪静态:
```nginx
location / {
try_files $uri $uri/ /index.php?$query_string;
}
```

### 七、APP端编译

#### 7.1 安装 HBuilderX

下载 [HBuilderX](https://www.dcloud.io/hbuilderx.html)

#### 7.2 导入项目

1. 解压 `photolife-uniapp.tar.gz`
2. HBuilderX → 文件 → 导入 → 选择 `photolife-app` 目录

#### 7.3 修改配置

编辑 `config.js`:
```javascript
const BASE_URL = ‘http://你的域名/api‘;
```

#### 7.4 配置 manifest.json

- App模块配置:勾选 Gallery、Camera、VideoPlayer
- App权限配置:添加存储和相机权限

#### 7.5 编译/打包

- 运行到手机:HBuilderX → 运行 → 运行到手机或模拟器
- 打包APK:HBuilderX → 发行 → 原生App-云打包 → Android

### 八、阿里云OSS配置(可选)

| 配置项 | 说明 |
|--------|------|
| AccessKeyId | 阿里云RAM用户的AccessKey ID |
| AccessKeySecret | 阿里云RAM用户的AccessKey Secret |
| Bucket | OSS存储桶名称 |
| Endpoint | OSS区域节点 |

OSS CORS 配置(直传模式需要):
- 来源:`*`
- 允许 Methods:`GET, POST, PUT, DELETE, HEAD`
- 允许 Headers:`*`

> 不配置CORS也能用,系统会自动回退到服务器中转上传。

---

## ❓ 常见问题

**Q: 图片加载不出来?**
APP端不支持HTTP图片,时光相册已使用服务器代理方式加载,确保 `media.php` 文件完整。

**Q: 视频无封面?**
服务器未安装 ffmpeg,参考第四节安装。

**Q: 长按删除提示 Unauthorized?**
确保后端 `media.php` 已部署最新版本。

**Q: 上传大文件失败?**
修改 PHP 上传限制(参考3.3节),同时检查 nginx 配置:
```nginx
client_max_body_size 100m;
```

---

## 📁 后端文件结构

```
├── api/
│ ├── media.php # 媒体接口(列表、详情、删除)
│ ├── upload.php # 上传接口(含ffmpeg封面提取)
│ ├── auth.php # 认证接口
│ ├── app.php # APP专用接口
│ ├── dates.php # 日期查询接口
│ └── serve.php # 媒体代理加载
├── includes/
│ ├── db.php # 数据库连接
│ ├── functions.php # 公共函数
│ ├── storage.php # 存储驱动(本地/OSS/COS/七牛/又拍云)
│ └── exif.php # EXIF信息解析
├── assets/ # PC前端资源
├── admin/ # 管理后台
├── uploads/ # 本地上传目录
├── config.php # 配置文件
├── index.php # 前端入口
└── install.php # 安装向导
```

## 📁 UniApp文件结构

```
photolife-app/
├── pages/
│ ├── index/index.vue # 首页(瀑布流+日历)
│ ├── viewer/viewer.vue # 全屏查看器
│ └── upload/upload.vue # 上传页
├── components/
│ ├── MediaGrid/ # 瀑布流网格组件
│ ├── Calendar/ # 日历选择器组件
│ └── UploadProgress/ # 上传进度组件
├── api/index.js # API封装
├── config.js # 全局配置
└── utils/auth.js # 认证工具
```

---

*时光相册 —— 让记忆有处可栖。*




您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2001-2026 52线报网 版权所有 All Rights Reserved. |网站地图 闽ICP备19006036号-4
关灯 在本版发帖
扫一扫添加微信客服
返回顶部
快速回复 返回顶部 返回列表