olaindex魔改版 全新环境安装教程

默认分类 无标签 2020-01-9

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

魔改版特性

可同时挂载多个Onedrive网盘
图床可选择上传到不同的盘区
多网盘命令支持

原项目地址:https://github.com/WangNingkai/OLAINDEX
    CMD版:https://git.io/OLACMD
    demo:https://share.imwnk.cn/home
    wiki:(https://wangningkai.github.io/OLAINDEX/)
    Blog:https://imwnk.cn Email:imwnk@live.com
魔改项目地址:https://github.com/YukiCoco/OLAINDEX-Magic

升级

版本更新
git pull 
composer install -vvv # 无版本更新只需执行到此(同时执行最后两条权限命令)

chmod -R 755 storage # 补充,保证缓存的写入权限,否则500
chown -R www:www *

环境要求

PHP 扩展要求

PHP >= 7.1.3
PHP OpenSSL 扩展
PHP PDO 扩展
PHP Mbstring 扩展
PHP Tokenizer 扩展
PHP XML 扩展
PHP Ctype 扩展
PHP JSON 扩展
PHP BCMath 扩展
PHP Fileinfo 扩展 *

Laravel 文件系统模块要求,为保证成功安装,建议安装 PHP Fileinfo 扩展

测试系统环境

Centos7.X

安装BBR

安装在/root

wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh"
chmod +x tcp.sh
./tcp.sh
  1. 安装 BBR/BBR魔改版内核

请输入数字 [0-11]:1
略……
[注意] 重启VPS后,请重新运行脚本开启BBR/BBR魔改版
需要重启VPS后,才能开启BBR/BBR魔改版,是否现在重启 ? [Y/n] :y

  • 重启后执行命令 ./tcp.sh ,选【6. 使用暴力BBR魔改版加速(不支持部分系统)】

oneinstack 安装php环境 https://oneinstack.com/auto

或者使用宝塔面板安装环境

wget http://mirrors.linuxeye.com/oneinstack-full.tar.gz && tar xzf oneinstack-full.tar.gz && ./oneinstack/install.sh --nginx_option 1 --php_option 7 --phpcache_option 1 --reboot

./addons.sh 安装【选项4】fileinfo/imap/phalcon/mongodb PHP Extension
OLAINDEX 基于 Laravel 安装需要开启禁用的两个方法,步骤如下:

oneinstack php安装路径 /usr/local/php/etc/php.ini

1、进入php.ini文件,找到disable_function=,删除proc_open函数,即可。
2、进入php.ini文件,找到disable_function=,删除proc_get_status函数,即可。
3、进入php.ini文件,找到disable_function=,删除putenv函数,即可。
4、sudo service php-fpm restart # 重启 php 进程

3.0更新了命令行操作,另外需要开启禁用的两个方法

分别是 execshell_exec 步骤参考上面。

另外使用composer包管理器, 需要下载 composer 并且全局处理,步骤如下:

1、curl -sS https://getcomposer.org/installer | php  
2、mv composer.phar /usr/local/bin/composer 
3、composer config -g repo.packagist composer https://packagist.laravel-china.org # 更换源为国内源,国外服务器可忽略此步骤

手动安装

cd web目录
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 install -vvv # 这里确保已成功安装 composer ,如果报权限问题,建议给予用户完整权限。
chmod -R 777 storage 
chown -R www:www * # 此处 www 根据服务器具体用户组而定
php artisan od:install # 此处绑定域名需根据实际域名谨慎填写(包含http/https)

# 安装完成后,不要忘记配置 nginx ,将域名指向应用目录的 public 下,参考下面nginx配置。

Web服务器配置

将应用的运行目录指向的是 根目录下的 public 目录,如 www/OLAINDEX/public
Apache

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

Nginx

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

这里 nginx 配置仅供参考

server {
    listen 80; # 80端口 仅支持通过https://olaindex.ningkai.wang中转的域名,否则请配置ssl证书,放通443端口
    server_name example.com;
    root /example.com/public; # 这里填写你的程序目录,注意不要少了public

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

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

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME you/app/path/public/index.php; # 注意这里根据目录填写
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

安装宝塔

olaindex作者教程:https://imwnk.cn/archives/bt-olaindex

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
Bt-Panel: http://47.1.1.1:8888/73720212
username: web5agfm
password: 18e5584d
  • 安装完登录面板配置WEB环境

LNMP(推荐)安装方式:极速安装 Nginx 1.17/MySQL 5.6/Pure-Ftpd 1.0.49/PHP 7.3/phpMyAdmin 4.7

安装PHP扩展

软件商店 找到PHP7.3
点击 设置 安装扩展
这里安装 fileinfo 扩展 并附带安装 opcache 扩展 以加速php运行,也可以安装 redis 和memcached 扩展。
移除禁用函数:分别是 exec 、 shell_exec 、 proc_open 、proc_get_status 这四个函数。

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

宝塔面板默认安装了 Composer 包管理器
进入命令行Console,执行以下命令更换为国内源
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ # 更换源为国内源,国外服务器可忽略此步骤

安装配置 OLAINDEX

新建站点
这里选择新建站点,填写域名后,保持默认配置。
初始化 OLAINDEX
首先打开宝塔ssh
按照一下步骤执行:

cd web目录 # 刚才新建站点的目录 这里是 /www/wwwroot/t_ningkai_wang
git clone https://github.com/YukiCoco/OLAINDEX-Magic.git tmp 
mv tmp/.git . 
rm -rf tmp 
git reset --hard 
cp database/database.sample.sqlite database/database.sqlite  # 数据库文件
composer install -vvv # 这里确保已经安装composer成功  # 如果报权限问题,建议先执行权限命令
chmod -R 755 storage/
chown -R www:www *
php artisan od:install

到此我们安装好了OLAINDEX
配置站点信息 网站目录 勾选取消 防跨站攻击(open_basedir) 将站点的运行目录改为 public 别忘了保存
修改伪静态 选择 Laravel 5,保存
修改配置文件 注释选定内容,防止图片出现404

删除或注释以下代码
    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
选择 Let's Encrypt 申请,按要求填写申请 开启 SSL 后,选择强制 HTTPS

保存后,打开网站即可配置

错误处理

如果填写过程出现错误,可以执行命令,重置数据文件,重新安装。 php artisan od:reset 此操作会重置配置文件未初始化状态; 也可以通过页面的返回修改重置数据,并进行再一次绑定。

回调地址

非中转域名回调,必须是 https 协议,格式一般为 https://your.domain/oauth 所以配置服务器需要为域名添加 SSL,否则无法生效。

中转域名进行回调,可不使用 https 协议。需通过 https://olaindex.ningkai.wang 申请 client_id 和 client_secret,前提是在执行安装时填写了正确的绑定域名。

本地回调,默认 http://localhost:8000/oauth。

其他

后台默认地址:https://you.domain/admin
初始后台密码: 12345678;
也可通过命令行工具 php artisan od:password 生成一个新的8位数的密码
路由修改地址:routes/web.php

重置操作

php artisan od:reset 重置全部应用数据
php artisan od:logout 重置当前绑定账号数据
php artisan od:login 登陆账号
特殊文件功能
不建议创建与特殊文件同名的文件夹或文件,否则会导致文件无法查看及下载
README.md、HEAD.md 特殊文件使用
在文件夹底部添加说明:
在 onedrive 的文件夹中添加README.md文件,使用markdown语法。
在文件夹头部添加说明:
在 onedrive 的文件夹中添加HEAD.md 文件,使用markdown语法。

3.2.1 最新版本不再依托 .password 文件加密,参考后台配置,使用新方式加密

文件加密与隐藏

加密

加密需要后台填写加密的文件或文件夹路径

添加路径需去除设置的显示的初始路径,填写加密路径以 / 开始

加密的目录使用英文 , 隔开;: 后是设置加密的密码,每个组加密使用 | 隔开

假设 初始路径为 /share

格式如: /path1,/path2:password1|/path3,/path4:password2

则加密的路径对应 OneDrive

/share/path1 /share/path2 密码为 password1

/share/path3 /share/path4 密码为 password2

隐藏

隐藏需要后台填写隐藏的文件或文件夹路径

添加路径需去除设置的显示的初始路径,填写加密路径以 / 开始

每个组隐藏使用 | 隔开

假设 初始路径为 /share

格式如: /path1|/path3

则加密的路径对应 OneDrive 对应的隐藏目录为 /share/path1 和/share/path3

任务调度

推荐配置此任务调度器(可选)。后台定时刷新token和缓存,可适当加速页面的访问

* * * * * /php/bin/path/php /you/site/path/artisan schedule:run >> /dev/null 2>&1 &

这个 Cron 为每分钟执行一次 Laravel 的命令行调度器,每30分钟刷新token,每10分钟刷新缓存。

队列刷新

更改根目录 .env 文件中 PHP_PATH 变量 添加服务器中php所在目录 可通过 which php 获取

推荐使用 supervisor 管理守护任务

php artisan queue:work database --queue=olaindex --tries=3
缓存配置
默认 OLAINDEX 使用文件缓存,可以先修改为 Laravel支持的缓存类型,如 "apc", "array", "database", "file", "memcached", "redis"等,只需修改配置文件 .env。具体配置请参考 laravel 文档 缓存系统

如使用 redis作为缓存的话,还需要安装 predis 包,手动执行 composer require predis/predis

修改.env文件后需要执行 php artisan config:cache 确保配置生效

配置文件

缓存配置

CACHE_DRIVER=file # 这里是缓存类型

如配置redis 缓存需要填写以下配置

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

主题切换

目前 OLAINDEX 存在两套主题,bootswatch(默认) 和 mdui,两套主题的切换方法是,更改根目录 .env 文件中 THEME变量,default 默认为 bootswatch 主题,mdui 为 mdui 主题。

切换主题后,请执行 php artisan config:cache 确保配置生效

页面排序

支持字段 (limit|page|orderBy)
演示:https://dev.ningkai.wang/home?limit=3&page=2&orderBy=name,desc

limit={n} 限制每页n条

page={n} 第n页

orderBy={field},desc 以field 排序,desc->倒序 asc-> 正序 (field 支持 id/name/size/lastModifiedDateTime)

防盗链

目前大部分网站采用的是判断 referrer 是否是当前域名或指定白名单域名下的url。而没有 referrer 的请求都会放行。 referrer 策略普及后,单从 referrer 判断防盗链的方法会失效,所以需要考虑其他的技术手段实现防盗链机制。

Apache/Nginx 禁止某些 User Agent 抓取网站

apache
修改 .htaccess 文件

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (^$|FeedDemon|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms) [NC]
RewriteRule ^(.*)$ - [F]

nginx

#禁止Scrapy等工具的抓取
if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
     return 403;
}

禁止指定UA及UA为空的访问

if ($http_user_agent ~* "FeedDemon|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|^$" ) {
     return 403;             
}

禁止非GET|HEAD|POST方式的抓取

if ($request_method !~ ^(GET|HEAD|POST)$) {
    return 403;
}

其他

由于测试服务器性能有限,所以图片、文件的上传以及搜索的次数添加了路由请求次数限制,可以根据需求更改
路由路径 : routes/web.php

常用命令行命令

OLAINDEX Console Tool

Usage:
  command [options] [arguments]

Options:
  -h, --help            Display this help message
  -q, --quiet           Do not output any message
      --ansi            Force ANSI output
      --no-ansi         Disable ANSI output
  -n, --no-interaction  Do not ask any interactive question
  -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Available commands:

  od:cache     Cache Dir
  od:command   List Command
  od:cp        Copy Item
  od:direct    Create Direct Share Link
  od:download  Download File
  od:find      Find Items
  od:info      OneDrive Info
  od:install   Install App
  od:login     Account Login
  od:logout    Account Logout
  od:ls        List Items
  od:mkdir     Create New Folder
  od:mv        Move Item
  od:offline   Remote download links to your drive
  od:password  Reset Password
  od:refresh   Refresh Token
  od:reset     Reset App
  od:rm        Delete Item
  od:share     ShareLink For File
  od:upload    UploadFile File
  od:whereis   Find The Item's Remote Path
上一篇没有了

0条评论