PyOne介绍
PyOne
是一款基于Python-Flask
的onedrive
文件本地化浏览系统,使用MongoDB
储存文件列表,使用redis
缓存数据,支持绑定多个网盘,极大的提高使用效率。
Demo地址:https://www.pyone.me
项目地址:https://github.com/abbeyokgo/PyOne
Wiki地址:https://wiki.pyone.me/
特性
- 简单易用,只需简单设置,即可做一个
onedrive
文件列表分享程序 后台强大
- 防盗链设置。
- 后台上传文件
- 后台更新文件
- 后台设置统计代码
后台管理
onedrive
文件- 删除
onedrive
文件 - 直接在后台给文件夹添加
.password
和README
和HEAD
- 直接在后台编辑文本文件
- 上传本地文件至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
安装
下载源码
默认/root
目录中安装
git clone https://github.com/abbeyokgo/PyOne.git
一键安装脚本
cd PyOne
sh install.sh
运行一键安装脚本会自动安装,最后需要安装Aria2
做网盘离线下载工具,需要选择安装环境,中间过程还需要设置用户名和密码。
- 用户名、密码用于登录
YAAW
管理界面; - 密码还用于
aria2c
的secret
,需在PyOne
后台-基本设置-Aria2
信息编辑里面设置该密码。
安装完成后会提示检查以下文件
运行网站
使用一键安装脚本,并检查文件无误之后,运行下面的命令运行网站
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.conf
的directory
参数为正确的目录!!!
- 试运行
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
的过程中,需要设置用户名和密码;
- 用户名、密码用于登录
YAAW
管理界面; - 密码还用于
aria2c
的secret
,需在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
,登陆后后会自动跳转到绑定网盘页面。如果没有跳转到绑定网盘页面,可以按照:后台-文件管理-添加网盘
进行下一步。
第一步:获取应用机密(client_secret)和应用ID(client_id)
- 然后点击上方按钮获取应用机密
client_secret
,填写到应用机密client_secret
栏 - 在刚才获取应用机密
client_secret
的页面,点击知道了,返回到快速启动,会出现错误,查看网址栏,找到appID
这一个参数,这个参数就是应用IDclient_id
(目前修复了,可直接获取),将appID
复制到上方应用IDclient_id
栏 - 填写完上方两个参数,继续下一步
第二步:获取验证码并结束绑定
- 点击绑定账号,并跳转到绑定页面
- 选择需要绑定的账号,进入下一步
- 接收认证许可,获取一个
code
,将这个code
填写到code
栏后,点击结束绑定
绑定成功
如果没有出现错误,则会进入以下页面。
绑定域名
宝塔5.9绑定域名
- 先确保域名已经解析到你的服务器
ip
- 打开
宝塔-网站-添加站点
- 设置反代:
宝塔-网站-点击域名-反向代理
,设置值http://127.0.0.1:34567
然后勾选启用反向代理 - 添加
nginx
配置:宝塔-网站-点击域名-配置文件
。找到以下内容,添加以下三行
location /
{
...
proxy_buffering off;
proxy_cache off;
proxy_set_header X-Forwarded-Proto $scheme;
...
}
如图
宝塔6.x以上反向代理略有不同
- 添加反向代理:
网站-点击域名-反向代理-添加反向代理
- 修改
反向代理配置
:添加完反向代理之后,点击配置文件
,添加内容:
location /
{
...
proxy_buffering off;
proxy_cache off;
proxy_set_header X-Forwarded-Proto $scheme;
...
}
如图
做完以上操作,应该就可以访问你的域名
了!
绑定更多网盘
绑定好第一个网盘之后,登录后台(/admin)-文件管理
,即可看到网站顶部还有添加网盘
的链接,点进去即可继续绑定更多网盘。
注意!!为确保可以正确绑定网盘,请开一个隐私窗口或者清除
cookies
后再绑定新网盘!
PyOne更新
由于PyOne
会经常进行更新(修复bug、优化性能、增加功能)等,当PyOne
源码更新之后,可以按照以下步骤进行更新操作:
PyOne
旧版本升级到3.0:请重装!!!PyOne3.0
内小版本更新:
切换目录
cd PyOne
拉最新代码
git pull origin master
- 如果你更改过除了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.mp4
,onedrive
路径为:/测试/new.mp4
。最后面不能带/
。
看出区别了吗?带/和不带/的区别!
- 上传后不用重命名,比如我直接上传到测试目录下,
- 盘符:默认为
A
。如果需要上传到其他网盘,或者你修改过盘符,则修改这个盘符参数。
示例:
- 上传服务器的
/home/test.mp4
到盘符A
的onedrive
的测试
目录下:
/root/PyOne/function.py Upload /home/test.mp4 /测试/ A
- 上传服务器的
/home/test.mp4
到盘符A
的onedrive
的测试
目录下,并重命名为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
下的所有文件到盘符A
的onedrive
的测试
目录下:
/root/PyOne/function.py UploadDir /home/test /测试/ A
##### 更新缓存
全量更新(默认)
即全量更新文件目录。推荐在文件目录结构发生变化
的情况下才进行本操作。
命令(确保目录正确):
python /root/PyOne/function.py UpdateFile
增量更新
即只有当文件夹大小发生变化时才进行更新操作。推荐在文件目录结构没有发生变化
的情况下进行操作。
命令(确保目录正确):
python /root/PyOne/function.py UpdateFile new