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
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

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

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
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
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

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

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

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