目录索引


查看右侧,手机端点击右侧按钮

前言

OneDrive作为微软旗下的一款网盘产品,以不限速卖空间的方式夺得了网盘市场的一席之地,其所拥有的文件实时同步功能配上office全家桶更是十分便捷。其提供的许多教育订阅等有多种渠道可以白嫖1T - 25T的空间。奈何OneDrive国内访问速度不佳,今年年初更是撤掉了部署在中国香港的cdn节点,使得其速度更是雪上加霜。不过国内有OneDrive的世纪互联代运营版本,国内普遍能跑满上传下载速度,是作为个人网盘的不二之选。

Github上有许多可以搭建OneDrive为网盘的程序,如Oneindex等,但大多都不支持国内的世纪互联版本OneDrive(因为其域名等都与国际版不同),部分被魔改过支持世纪互联的也不是非常好用。于是就轮到这款OLAINDEX程序上场了,成功解决了世纪互联搭建问题。

本文将记录我的搭建过程,已经解决了大部分官方文档没有补充的问题。

介绍

简介

一款 OneDrive 目录文件索引应用,基于优雅的 PHP 框架 Laravel5.7 搭建,并通过 Microsoft Graph 接口获取数据展示,支持多类型帐号登录,多种主题显示,简单而强大。

功能

  • 基于bootswatch响应式页面布局,适配PC、平板、手机;

  • OneDrive目录查看索引,支持分页查看;

  • 支持图床功能;

  • 支持文件路径一键复制、下载;

  • 支持生成文件直链;

  • 支持代码、图片、文本文件即时预览;

  • 支持音视频播放(兼容大部分格式),视频播放采用Dplayer,音乐播放采用Aplayer

  • 支持文件夹加密;

  • 支持文件上传;

  • 支持readme/head说明文件添加/编辑/删除;

  • 支持文件搜索;

  • 支持自定义创建文件夹;

  • 支持文件/文件夹删除;

  • 后台基本管理,支持主题,预览设置等等;

  • 全新路径显示(pathinfo);

  • 添加看图相册;

  • 支持命令行操作;

  • 支持文件离线下载;

  • 支持多种缓存系统(Redis、Memcached等);

  • 配置文件化,不再依赖数据库;

  • 更多功能欢迎亲自尝试。

    注: 部分功能需后台开启。

Github地址

https://github.com/WangNingkai/OLAINDEX

演示站点

风之云盘

演示图

演示图1

加密演示

图片演示

多主题

直链导出

安装

环境要求

PHP >= 7.1.3
OpenSSL PHP
PHP PDO 扩展
PHP Mbstring 扩展
PHP Tokenizer 扩展
PHP XML 扩展
PHP Ctype 扩展
PHP JSON 扩展
PHP BCMath 扩展
PHP Fileinfo 扩展(非必需,推荐安装)

最低安装标准:nginx+php

使用宝塔面板准备部署环境

安装环境

安装宝塔面板后(过程参考宝塔官方网站),
选择LNMP环境,其中PHP版本选择7.2及以上。

PHP配置

安装PHP拓展

安装完后,点击软件商店,找到已安装的PHP,点击设置,选择安装拓展,这里安装fileinfo扩展 并附带安装opcache扩展以加速PHP运行,也可以安装redis和memcached扩展。

标注拓展为必需,其它拓展可选安装,具体安装方法参考相应官方文档

修改PHP配置

选择禁用函数,放行以下被禁用的函数,如若没有则表示已经放行(可使用Ctrl+F搜索)。

exec
shell_exec
proc_open
proc_get_status
putenv

放行后将PHP重启,等待重启完成。

修改 composer 源(国外服务器请忽略)

宝塔面板默认安装了 Composer 包管理器
进入命令行,执行以下命令更换为国内源(阿里源)

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

到此,基本的PHP环境已经部署完毕

安装并配置OLAINDEX

新建站点

网站选项中找到新建,填写域名及指定正确的PHP版本后,其它保持默认配置,稍后修改。

部署OLAINDEX

进入命令行,依次执行下列命令,一行一个。

- 转到网站根目录
cd /www/wwwroot/xxx # 刚才新建站点的目录,这里是 /www/wwwroot/xxx
- 从Github下载
git clone https://github.com/WangNingkai/OLAINDEX.git tmp 
mv tmp/.git . 
rm -rf tmp 
git reset —hard 
- 内置数据库文件
cp database/database.sample.sqlite database/database.sqlite  
- 确保安装composer成功

如果报权限问题,建议先执行权限命令

composer install -vvv
- 权限命令
chmod -R 755 storage/
chown -R www:www *
chmod 777 -R storage/* database/*
- 安装命令
php artisan od:install

执行安装命令后,键入域名(带协议头),并确认,随即弹出默认管理员账户与密码,安装完成。

安装完成

更改网站设置

站点目录

进入网站设置,找到网站目录,取消勾选防跨站攻击,设置网站运行目录为public,并保存

伪静态配置

选择伪静态选项,左上角选择Laravel 5,保存。

或者以下配置(完全等效)

location / {
    try_files $uri $uri/ /index.php?$query_string;
}
修改配置文件

选择配置文件,注释掉第36行 - 48行内容(可能行数有所差异),具体如下:

  # location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    # {
    #     expires      30d;
    #     error_log off;
    #     access_log /dev/null;
    # }

    # location ~ .*\.(js|css)?$
    # {
    #     expires      12h;
    #     error_log off;
    #     access_log /dev/null; 
    # }
配置SSL证书

*注意,OneDrive搭建网盘必须为https,即必须配置SSL证书

配置好你的SSL证书(可用宝塔面板自行申请),并开启强制https

世纪互联账号配置

因为世纪互联账号有所不同,程序给出的是国际版配置页面,故拿出来写一笔。

创建应用并授权

使用你的世纪互联账号,登录Azure 国行版,在左上角菜单中选择Azure Active Directory

指示图


Azure图1

然后选择应用注册,在右边选择新注册,填写完名称后选择任何组织目录,并正确填写重定向URL(详见OLAINDEX安装成功后绑定页面redirect_uri)。不要忘记后面有/oauth

指示图


Azure图2

注册成功后,点击API权限,添加权限,选择Microsoft Graph,然后选择委托的权限,搜索并勾选以下权限(默认就已勾选的不用管)

profile
Files.Read
Files.Read All
Files.Read.Selected
Files.ReadWrite
Files.ReadWrite.All
Files.ReadWrite.AppFolder
Files.ReadWrite.Selected
User.Read

并点击代表XXX授予管理员同意 --重要!

随后进入证书和密码选项,新增客户端密码,其密码即为Client_Secret

最后,点击概述,客户端ID即为Client_ID。进入OLAINDEX绑定页面填入对应信息即可。

没有权限怎么办?

有的账号管理员没有开启相应应用注册权限,其实不一定非要同一个账号,在Azure 国行版注册一个账号(需实名)并执行上述操作注册一个应用是等效的。

特殊文件功能

在文件夹底部添加说明

在OneDrive的文件夹中添加README.md文件,使用markdown语法。

在文件夹头部添加说明

在OneDrive的文件夹中添加HEAD.md 文件,使用markdown语法。

其他问题

可以在博客下留言,博主看到后会回复。

当然你也可以在Github页面寻找解决方案。

结语

博主在自己搭建时是经历了许多问题,都慢慢找到方法或自己解决。本文在过程中添加了一些步骤,以防止大家踩坑。这个程序还是非常不错的,很强大,主题丰富且美观。在此感谢作者与参与此程序改进的所有人。

如有问题欢迎评论询问。

2020年6月26日

最后修改:2023 年 04 月 25 日