PyOne介绍

PyOne是一款基于Python-Flaskonedrive文件本地化浏览系统,使用MongoDB储存文件列表,使用redis缓存数据,支持绑定多个网盘,极大的提高使用效率。

Demo地址:https://www.pyone.me
项目地址:https://github.com/abbeyokgo/PyOne
Wiki地址:https://wiki.pyone.me/

特性

  • 简单易用,只需简单设置,即可做一个onedrive文件列表分享程序
  • 后台强大

    • 防盗链设置。
    • 后台上传文件
    • 后台更新文件
    • 后台设置统计代码
    • 后台管理onedrive文件

      • 删除onedrive文件
      • 直接在后台给文件夹添加.passwordREADMEHEAD
      • 直接在后台编辑文本文件
      • 上传本地文件至onedrive(2018.10.18更新)
      • 支持创建文件夹(2018.10.19更新)
      • 支持移动文件(仅限单文件)(2018.10.19更新)
  • 支持绑定多网盘!!!(2018.11.15更新)
  • 支持搜索文件!!!(2019.01.18更新)

适用onedrive版本

1.个人版
2.onedrive商业版
3.onedrive教育版(需要学校管理员开启权限)

适用环境

  • centos7(其他环境按照下面教程可能会有问题)Ubuntu和Debian安装没问题
  • Python2.7
  • 需要安装Nginx,redis,MongoDB(通过宝塔安装)

宝塔安装插件

宝塔里找到软件管理,选择Nginx,MongoDB,Redis安装
enter description here

下载源码

默认/root目录中安装

git clone https://github.com/abbeyokgo/PyOne.git

一键安装脚本

cd PyOne
sh install.sh

运行一键安装脚本会自动安装,最后需要安装Aria2做网盘离线下载工具,需要选择安装环境,中间过程还需要设置用户名和密码。

  1. 用户名、密码用于登录YAAW管理界面;
  2. 密码还用于aria2csecret,需在PyOne后台-基本设置-Aria2信息编辑里面设置该密码。

enter description here

安装完成后会提示检查以下文件
enter description here

运行网站

使用一键安装脚本,并检查文件无误之后,运行下面的命令运行网站

supervisord -c supervisord.conf

然后看看是否可以访问:http://ip:34567

别忘记开启网盘端口:34567
Aria2端口 6080

如果不用一键脚本,单独安装,如果已经使用一件脚本安装跳过下列步骤

网站源码配置部分

提示:全文默认是在root目录下运行。

  • 下载脚本:
git clone https://github.com/abbeyokgo/PyOne.git
  • 安装依赖包:
cd PyOne
pip install -r requirements.txt
  • 准备文件:
cp self_config.py.sample self_config.py
cp supervisord.conf.sample supervisord.conf
touch .install

tips: 如果当前不是在root目录下,则需要修改self_config.py的config_dir参数和supervisord.confdirectory参数为正确的目录!!!

  • 试运行
gunicorn -k eventlet -b 0.0.0.0:34567 run:app

如果没有问题,则可以访问到:http://ip:34567 如果不行,请确保已经开放端口!

配置开机启动

  • 网站源码下有个supervisord.conf,主要内容如下:
[program:pyone]
command = gunicorn -k eventlet -b 0.0.0.0:34567 run:app
directory = /root/PyOne
autorestart = true

主要修改两个地方:

端口号:即34567那个端口号,修改为自己选的,或者不改动
源码目录:directory修改为你选的网站目录

  • 修改之后运行下面的命令(记得修改为正确的目录),设置开机启动
echo "supervisord -c /root/PyOne/supervisord.conf" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
  • 重启生效

本次不用重启生效的方法:

supervisord -c /root/PyOne/supervisord.conf

安装Aria2

Aria2用于做onedrive网盘离线下载功能。

在安装aria2的过程中,需要设置用户名和密码;

  1. 用户名、密码用于登录YAAW管理界面;
  2. 密码还用于aria2csecret,需在PyOne后台-基本设置-Aria2信息编辑里面设置该密码。
    安装代码:
git clone https://github.com/abbeyokgo/aria2_installer.git
cd aria2_installer
sh install_aria2.sh

aria2前端页面: 参考:https://github.com/abbeyokgo/aria2_installer

相关命令:

#启动
/data/aria2/aria2.sh start
#停止
/data/aria2/aria2.sh stop
#重启
/data/aria2/aria2.sh restart
#卸载
cd aria2_installer && ./uninstall.sh
#Caddy server配置文件
/data/aria2/caddy.conf
#Aria2配置文件
/data/aria2/aria2.conf
#离线下载目录
/data/aria2/download
#日志目录
/data/aria2/aria2.log
/data/aria2/caddy.log

绑定网盘

注意!!首次访问,会显示登录后台,输入初始密码:PyOne,登陆后后会自动跳转到绑定网盘页面。如果没有跳转到绑定网盘页面,可以按照:后台-文件管理-添加网盘进行下一步。

enter description here

第一步:获取应用机密(client_secret)和应用ID(client_id)

  1. 然后点击上方按钮获取应用机密client_secret,填写到应用机密client_secret
  2. 在刚才获取应用机密client_secret的页面,点击知道了,返回到快速启动,会出现错误,查看网址栏,找到appID这一个参数,这个参数就是应用IDclient_id(目前修复了,可直接获取),将appID复制到上方应用IDclient_id
  3. 填写完上方两个参数,继续下一步
    enter description here

enter description here

enter description here

第二步:获取验证码并结束绑定

  1. 点击绑定账号,并跳转到绑定页面
  2. 选择需要绑定的账号,进入下一步
  3. 接收认证许可,获取一个code,将这个code填写到code栏后,点击结束绑定

enter description here

enter description here

enter description here

绑定成功

如果没有出现错误,则会进入以下页面。
enter description here

绑定域名

宝塔5.9绑定域名

  1. 先确保域名已经解析到你的服务器ip
  2. 打开宝塔-网站-添加站点
  3. 设置反代:宝塔-网站-点击域名-反向代理,设置值http://127.0.0.1:34567然后勾选启用反向代理
  4. 添加nginx配置:宝塔-网站-点击域名-配置文件。找到以下内容,添加以下三行
location / 
    {
        ...

        proxy_buffering off;
        proxy_cache off;
        proxy_set_header X-Forwarded-Proto $scheme;

        ...
    }

如图
enter description here

enter description here

宝塔6.x以上反向代理略有不同

  1. 添加反向代理:网站-点击域名-反向代理-添加反向代理
  2. 修改反向代理配置:添加完反向代理之后,点击配置文件,添加内容:
 location / 
       {
           ...

           proxy_buffering off;
           proxy_cache off;
           proxy_set_header X-Forwarded-Proto $scheme;

           ...
       }

如图
enter description here

enter description here

enter description here

做完以上操作,应该就可以访问你的域名了!
enter description here

绑定更多网盘

绑定好第一个网盘之后,登录后台(/admin)-文件管理,即可看到网站顶部还有添加网盘的链接,点进去即可继续绑定更多网盘。

注意!!为确保可以正确绑定网盘,请开一个隐私窗口或者清除cookies后再绑定新网盘!

PyOne更新

由于PyOne会经常进行更新(修复bug、优化性能、增加功能)等,当PyOne源码更新之后,可以按照以下步骤进行更新操作:

  • PyOne旧版本升级到3.0:请重装!!!
  • PyOne3.0内小版本更新:

切换目录

cd PyOne

拉最新代码

git pull origin master
  1. 如果你更改过除了self_config.py以外的文件,可能无法更新

可使用强制更新代码

git fetch --all
git reset --hard origin/master
git pull

运行更新脚本

sh update.sh

PyOne命令行操作

重启网站

这里说的重启网站,是在你配置了开机启动后的网站重启。

如果你还是使用gunicorn -k eventlet -b 0:34567 run:app这类手动运行的网站,则只需要ctrl+C停止网站后再运行。

重启命令(确保目录正确):

supervisorctl -c /root/PyOne/supervisord.conf restart pyone

上传文件

单文件上传

命令(确保目录正确):

python /root/PyOne/function.py Upload 服务器文件绝对路径 onedrive路径 盘符

说明:

  • 服务器文件绝对路径:服务器下存在的一个文件绝对路径。比如:/home/test.mp4
  • onedrive路径:即onedrive下的路径。这里分两种情况:

    • 上传后不用重命名,比如我直接上传到测试目录下,onedrive路径为:/测试/。目录最后面必须带/
    • 上传后重命名,比如我上传到测试目录下,并重命名为new.mp4onedrive路径为:/测试/new.mp4最后面不能带/
      看出区别了吗?带/和不带/的区别!
  • 盘符:默认为A。如果需要上传到其他网盘,或者你修改过盘符,则修改这个盘符参数。

示例:

  • 上传服务器的/home/test.mp4到盘符Aonedrive测试目录下:
 /root/PyOne/function.py Upload /home/test.mp4 /测试/ A
  • 上传服务器的/home/test.mp4到盘符Aonedrive测试目录下,并重命名为new.mp4
python /root/PyOne/function.py Upload /home/test.mp4 /测试/new.mp4 A
批量上传文件

上传服务器某个目录下的所有文件onedrive

命令(确保目录正确):

python /root/PyOne/function.py UploadDir 服务器目录绝对路径 onedrive路径 盘符

说明:

  • 服务器目录绝对路径:服务器下存在的目录绝对路径。比如:/home/test
  • onedrive路径:即onedrive下的路径。比如:/test/
  • 盘符:默认为A。如果需要上传到其他网盘,或者你修改过盘符,则修改这个盘符参数。
  • 示例:
  • 上传服务器的/home下的所有文件到盘符Aonedrive测试目录下:
 /root/PyOne/function.py UploadDir /home/test /测试/ A

##### 更新缓存

全量更新(默认)

即全量更新文件目录。推荐在文件目录结构发生变化的情况下才进行本操作。

命令(确保目录正确):

python /root/PyOne/function.py UpdateFile
增量更新

即只有当文件夹大小发生变化时才进行更新操作。推荐在文件目录结构没有发生变化的情况下进行操作。

命令(确保目录正确):

python /root/PyOne/function.py UpdateFile new