这是我第三次安装 OneDrive 程序了,前面装过 PyOne 和 CuteOne 网盘程序,总体挺顺利的,没想到这次是踩坑最多的一次。
OLAINDEX 是由@Wang Ningkai 开发的一款 OneDrive 目录索引程序,基于最新 PHP 框架 Laravel5 搭建而成, Bootswatch 响应式页面布局,适配 PC、平板、手机。
环境配置
我是使用军哥 LNMP1.6 安装的环境,下面的教程默认在此环境下进行,一般 LNMP1.4/1.5 可以通用此教程。
前期准备:
- 内存: 512M 以上,推荐 768M 以上
- 硬盘: 100M 以上可用硬盘空间
- 系统: CentOS 6.x / 7.x (Ubuntu、Debian)
- 一个域名以及一个 OneDrive 账号
环境要求:
- PHP >= 7.1.8
- OpenSSL PHP
- PHP PDO 扩展
- PHP Mbstring 扩展
- PHP Tokenizer 扩展
- PHP XML 扩展
- PHP Ctype 扩展
- PHP JSON 扩展
- PHP Fileinfo 扩展
PHP 扩展安装
以上扩展基本在安装 LNMP 环境的时候都配置好了,除了最后一个 PHP Fileinfo 扩展,大家可以在phpinfo
页面查缺补漏。
这里介绍一下 PHP Fileinfo 扩展的安装方法:
如果你是第一次安装或者准备重新安装环境,可以直接开启 Fileinfo 扩展,在执行安装之前,修改lnmp1.6
目录中的lnmp.conf
文件,将对应的选项改为开启即可。
如果是已经安装完 lnmp 环境,则可以重新编译 PHP 或者升级 PHP 到合适的版本,在执行升级前,先修改lnmp1.6
目录中的lnmp.conf
文件,在PHP_Modules_Arguments=""
参数的双引号里添加 PHP_Fileinfo 模块,若需要多个模块参数用空格隔开,然后再运行以下升级命令即可。
./upgrade.sh php
移除禁用函数
在目录/usr/local/php/etc
中编辑php.ini
配置文件,移除proc_open
、proc_get_status
、exec
、shell_exec
这几个函数。
然后执行以下命令,重启 PHP 程序。
lnmp php-fpm restart
安装 Composer
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
如果出现是否覆盖,可以选择是,覆盖原先的文件。
添加网站
运行lnmp vhost add
添加网站,按提示添加域名、目录、是否伪静态以及开启日志等内容。
伪静态设置
关于伪静态的设置,可以在添加网站的时候,直接选择伪静态规则为laravel
规则即可。
或者是自行添加以下命令到配置文件中:
location / { try_files $uri $uri/ /index.php?$query_string; }
取消防跨目录
添加网站成功后,必须要执行的一个就是取消防跨目录访问的设置。
如果没有设置好,打开网站就会出现 500 错误,这种错误页面和后面的 500 错误不同,注意区分。
在/root/lnmp1.6/tools
目录下执行以下命令:
./remove_open_basedir_restriction.sh
然后输入设置的域名,即可移除user.ini
文件,取消防跨目录访问。
修改网站目录
这里需要修改 /usr/local/nginx/conf/vhost
文件夹中对应的配置文件,将目录修改成你域名对应的public
目录。
root /home/wwwroot/你的域名/public;
重载 Nginx
lnmp nginx reload
程序安装
依次执行以下命令:
cd /home/wwwroot/你的网站目录 git clone https://github.com/WangNingkai/OLAINDEX.git tmp mv tmp/.git . rm -rf tmp git reset --hard composer install -vvv # 这里确保已成功安装 composer ,如果报权限问题,建议给予用户完整权限。 chmod -R 777 storage/* chown -R www:www * php artisan od:install # 此处绑定域名根据实际域名填写(包含 http/https)
基本上不报错,目录权限没问题,就可以进入最后一步,绑定 OneDrive 了。
绑定 OneDrive
现在可以打开域名进行最后的安装了,后台地址:https://你的域名/admin,默认用户名:admin
密码:12345678
打开后按照指示进行操作,这里提供应用信息查看地址。
添加应用机密也就是client_secret
和应用 ID 到相应位置,点击绑定即可。
这一步可能会出现很多问题,基本是目录权限和账号的问题,大家就自行搜索网络解决了,多试几下,基本都可以解决。
最后,如果升级程序,需要重新执行目录权限,不然网站 500 错误。
chmod -R 777 storage # 保证缓存的写入权限 chown -R www:www *
缓存配置
默认 OLAINDEX 使用文件缓存,可以修改为 Laravel 支持的缓存类型,如 “apc”, “array”, “database”, “file”, “memcached”, “redis”等。
如使用 Redis 作为缓存的话,还需要安装 predis 包,手动执行:
composer require predis/predis
如果你已经安装了 PhpRedis 扩展,可以将 config/database.php
中 Redis 配置的client
选项修改为phpredis
这样就不用安装 predis 包了,而且可以看到 Laravel 默认使用数据库 1 进行缓存文件,你也可以修改成自己想要的数据库。
然后修改.env
文件配置
CACHE_DRIVER=redis # 这里是缓存类型,修改成你要的类型 REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379
然后需要执行
php artisan config:cache
连接 redis 查看运行效果:
任务调度
推荐添加此任务调度器,后台定时刷新 token 和缓存,可适当加速页面的访问。
crontab -e
然后添加如下定时任务,路径根据自己目录进行更改。
* * * * * /usr/local/php/bin/php /home/wwwroot/pan.tiance.me/artisan schedule:run >> /dev/null 2>&1
每次修改.env
文件或配置时,需要运行以下命令确保配置更改生效。
php artisan config:cache
提示Could not open input file: artisan
说明目录不对,需要切换到程序所在目录。
踩坑的地方
毕竟和网上宝塔面板的教程有所不同,所以踩坑是难免的,基本上比较难的地方就是添加网站这部分了,其余的和网上其他教程没有太大差异。
网页 500 错误
这个 500 错误一个是前面防跨目录没有设置好,另一个就是下面的目录权限问题了。
前后折腾了挺久,有时网站会报 500 错误,找了半天原因,最后发现运行chown -R www:www *
可以解决,如果还存在问题,可以尝试运行php artisan config:clear
清除缓存。
绑定失效
出现了很多次的点击绑定,结果页面上应用机密和应用 ID 是空的,我前后申请了五六次都是这样,网上说是目录权限的问题,其实我自己也忘记怎么解决了。
首页 403 错误
一切流程都走完的时候,结果出现了下面的图片,心中哇凉哇凉的。
最吐血的就是 403 报错了,程序安装完了,但是首页弹出 URL 403 错误,最后找了半天,别人说等一会就会自动好了。
然后我等了 5 分钟、10 分钟、20 分钟半个小时过去了,还是一样,我都以为是不是又跪了。
最后过了一个多小时,再次打开首页,成功了。
总结
折腾的道路上总是布满荆棘,但只要多多尝试,终究都会成功的。