说明:之前博主介绍过一个OneDrive
网盘的目录索引程序OneIndex
,而且发了不少安装和使用教程了,介绍查看:OneIndex,今天再介绍个类似的工具PyOne
,基于Flask
开发的,由于是模仿的OneIndex
,自然功能就差不多,就是界面好看很多,后台也可以直接上传编辑文件,目前作者新增多网盘和离线下载,该功能刚出来,BUG
肯定是有的,可以向作者反映修复下,这里说一下安装教程。
截图
更新
【2019.2.16】
PyOne代码组织大变更!更新版本号为4.0!
【2018.11.19】
新增离线下载功能,依赖Aria2。
【2018.11.15】
PyOne喜迎3.0版本,支持绑定多个onedrive网盘,再也不怕5T小姐姐不够看了。
特性
#简单易用
只需简单设置,即可做一个onedrive文件列表分享程序。
#功能丰富
可设置文件夹密码。只需在文件夹添加.password文件,内容为密码内容,即可在该文件夹设置密码
可设置README。
#后台强大
防盗链设置。
后台上传文件。
后台更新文件。
后台设置统计代码
后台管理onedrive文件。
直接删除onedrive文件
直接在后台给文件夹添加.password和README和HEAD
直接在后台编辑文本文件。
上传本地文件至onedrive
支持创建文件夹
支持移动文件(仅限单文件)
#支持绑定多网盘
#支持离线下载
安装
Github地址:https://github.com/abbeyokgo/PyOne
使用文档:https://wiki.pyone.me/
账号支持:只支持onedrive
商业版、教育版、个人版
环境要求:Python2.7
、Redis
、Mongodb
、Nginx
1、安装宝塔
#Centos系统
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh
#Ubuntu系统
wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh && sudo bash install.sh
#Debian系统
wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh && bash install.sh
安装完成后,进入面板,点击左侧软件管理,然后安装Nginx
、Redis
、MongoDb
。注意Debian
安装MongoDb
之前还需要使用命令apt install sudo
,不然可能存在MongoDb
启动不了的情况。
2、拉取源码
使用命令:
git clone https://github.com/abbeyokgo/PyOne.git
3、开始依赖
cd /root/PyOne
pip install -r requirements.txt
4、开始运行
#复制配置文件
cp self_config.py.sample self_config.py
cp supervisord.conf.sample supervisord.conf
如果当前不是在root
目录下(本文是默认root
目录下),则需要修改self_config.py
的config_dir
参数和supervisord.conf
的directory
参数为正确的目录!
#运行
gunicorn -w4 -b 0.0.0.0:34567 run:app
然后试着访问:http://ip:34567
看看能正常显示,如果不能,请在宝塔的安全里开启端口。
5、安装Aria2
git clone https://github.com/abbeyokgo/aria2_installer.git
cd aria2_installer
sh install_aria2.sh
域名设置
点击左侧网站,添加站点,然后再点击添加好了的域名名称,这时候就进入了站点配置,点击反向代理,目标URL
填入http://127.0.0.1:34567
,再启用反向代理即可。
然后再点击配置文件,进行如下修改:
#加上中间三句
location /
{
...
proxy_buffering off;
proxy_cache off;
proxy_set_header X-Forwarded-Proto $scheme;
...
}
最后就可以进入域名打开授权页面了。
授权成功即可,首次访问,会显示登录后台,输入初始密码:PyOne
后会自动跳转到绑定网盘页面。如果没有跳转到绑定网盘页面,可以按照:后台-文件管理-添加网盘进行下一步。
开机启动
网站源码下有个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
绑定多网盘
绑定好第一个网盘之后,登录后台(/admin
)-文件管理,即可看到网站顶部还有两个“添加网盘”的链接,点进去即可继续绑定更多网盘。
注意:为确保可以正确绑定网盘,请开一个隐私窗口或者清除cookies后再绑定新网盘!
目前默认是只能绑定3
个网盘,如果你需要绑定更多的网盘,可以编辑self_config.py
文件。
#修改od_users字典参数。参考已有内容,添加更多的位置,比如:D、E、F等
od_users={
"A":{
"client_id":"",
"client_secret":"",
"share_path":"/",
"other_name":"网盘1区",
"order":1
},
"B":{
"client_id":"",
"client_secret":"",
"share_path":"/",
"other_name":"网盘2区",
"order":2
},
"C":{
"client_id":"",
"client_secret":"",
"share_path":"/",
"other_name":"网盘3区",
"order":3
}
}
解绑网盘
如果绑定了网盘想要进行解绑,或者绑定网盘出错,但是网站已经显示了这个盘符的情况下,需要解绑网盘。
可按照以下步骤操作:
1、编辑self_config.py文件。
2、找到od_users字典参数。
3、参数od_users下找到对应的盘符。
4、将对应盘符的client_id参数和client_secret参数置为空值。
离线下载
1、离线下载依赖aria2;请确保已经安装了aria2并在后台配置了正确信息!
2、离线下载支持:http(s)直链、磁力链接。
3、添加任务时,一行一个下载链接。
4、在哪个目录下点击离线下载按钮,最终就会上传到哪个目录下。
命令行操作
1、单文件上传
#请确保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的测试目录下:
python /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
2、上传文件夹所有文件
#请确保PyOne源码路径正确
python /root/PyOne/function.py UploadDir 服务器目录绝对路径 onedrive路径 盘符
参数说明:
#服务器目录绝对路径:服务器下存在的目录绝对路径。比如:/home/test
#onedrive路径:即onedrive下的路径。比如:/test/
#盘符:默认为A。如果需要上传到其他网盘,或者你修改过盘符,则修改这个盘符参数。
示例:
#上传服务器的/home下的所有文件到盘符A的onedrive的测试目录下:
python /root/PyOne/function.py UploadDir /home/test /测试/ A
3、更新缓存
全量更新(默认),即全量更新文件目录。推荐在文件目录结构发生变化的情况下才进行本操作。
#请确保PyOne源码路径正确
python /root/PyOne/function.py UpdateFile
增量更新,即只有当文件夹大小发生变化时才进行更新操作。推荐在文件目录结构没有发生变化的情况下进行操作。
#请确保PyOne源码路径正确
python /root/PyOne/function.py UpdateFile new
更新源码
#PyOne旧版本升级到3.0,请重装!
#PyOne3.0内小版本更新
拉最新代码:git pull
重新安装依赖,看是否有新增的依赖包:pip install -r requirements.txt
重启网站:supervisorctl -c supervisord.conf restart pyone
最好更新一下文件缓存:python function.py UpdateFile
错误指导
1、502 Bad Gateway
一般是网站没有运行导致的。在网站目录运行
supervisord -c supervisord.conf
如果运行上面的命令出现类似Error:Another program is alright listening on a port
的错误,说明已经运行过这个命令,可以运行以下命令重启网站
supervisorctl -c supervisord.conf restart pyone
2、500 Internal Server Error
一般是因为服务器内部出现问题,可检查Redis
、MongoDB
是否安装?是否运行?
如果上诉没问题,可清空Redis
缓存:
redis-cli #进入redis命令行
> FLUSHALL
如清空Redis
缓存还有问题,可手动运行网站查看错误
supervisorctl -c supervisord.conf stop pyone && gunicorn -k eventlet -b 0:34567 run:app
然后再访问页面,查看ssh
的错误提示。
便捷教程
总结
目前来说该程序很不错,特别是加了多网盘和离线下载,作者更新也频繁,但BUG
还是不少的,特别是离线下载。如果想完美的使用Aria2
离线下载并自动上传的,建议看下博主的该教程→点击查看。
root@ip-:~/PyOne# supervisorctl -c /root/PyOne/supervisord.conf restart pyone
unix:///tmp/supervisor.sock no such file
大大,这种情况怎么办,不能直接重启网站 ,必须重启vps之后,重新开启网站才正常诶
新建一个文件看看,使用命令:
touch /tmp/supervisor.sock
chmod 777 /tmp/supervisor.sock
最近后台更改密码和网站名称,改了密码和名称都没变化,不知道什么情况,后台改密码偶尔Internal Server Error,不报错也修改无效
源码目录下的config.py里查看都显示的更改后的密码和网站名称,前端还是原来的默认密码和网站名字
检查下MongoDb运行状态,有时候修改密码什么的需要几分钟才能生效。要是问题依旧的话,可以用我写的一键脚本安装,地址:https://www.moerats.com/archives/806/。
感谢大佬回复,刚才的问题,重启vps之后解决了,但是经常性刷新出现500错误,执行supervisorctl -c supervisord.conf stop pyone && gunicorn -k eventlet -b 0:34567 run:app命令报错Error: could not find config file supervisord.conf,清空Redis缓存也无法解决500错误问题,之前正常,就这两天出现的,500之后刷新又正常显示页面了
500错误一般与Mongo有关,你在面板上重启下Mongo,后面这个启动命令,需要找对配置文件路径,可以去/root/PyOne文件夹运行你那个命令。
bt面板升级了,设置反向代理时会显示 无法链接url
大神能给一下解决方案吗?
最新宝塔没用过,不知道具体情况,所以暂时的方案只能建议你去配置文件里设置反向代理。
有没有那部分的网站 代码
上面只写了 添加的三行诶
是不是直接在配置文件里面上传完整的代码就可以了
没得,这个最新宝塔反代貌似是个BUG。等他们修复吧。或者修改宝塔源码,去掉检测。
有个问题,图片不能访问吗?5t盘图片刷新不了,个人的15g盘图片目录为空。另外由于不会操作,把pyone文件管理那里的离线文件给删了,但是服务器依旧在下载,请问下载在upload文件夹的文件还是会自动上传到onedrive吗》?
好像回错了,是另外一个脚本
这个问题貌似程序作者在修复,有时候注意多清空下缓存。
有没有那部分的网站 代码
上面只写了 添加的三行诶
还有很多视频上传了打开什么都没有,就像打开文件夹一样
刚刚邮箱填错了
批量上传这样提示
我的命令是python /root/PyOne/function.py UploadDir /data/aria2/download /正经资源/ A
check filename
eval(func+str(tuple(args)))check repeat file
Traceback (most recent call last):
File "/root/PyOne/function.py", line 1515, in <module>
File "<string>", line 1, in <module>
parent_id=parent['id']File "/root/PyOne/function.py", line 884, in UploadDir
TypeError: 'NoneType' object has no attribute '__getitem__'
刷新缓存看看。
批量上传这样提示
eval(func+str(tuple(args)))check filename
check repeat file
Traceback (most recent call last):
File "/root/PyOne/function.py", line 1515, in <module>
File "<string>", line 1, in <module>
parent_id=parent['id']File "/root/PyOne/function.py", line 884, in UploadDir
TypeError: 'NoneType' object has no attribute '__getitem__'
刷新缓存看看。
宝塔安装完Redis、Mongodb后用xshell就连接不上了。 debian的
看过会能不能上,安装这个还是建议CentOS 7系统。
现在6800端口没运行起来,不知道为什么?
用我这个教程安装Aria2试试吧,https://www.moerats.com/archives/800/。
按照博主的静态aria2安装好,
[root@host ~]# which aria2c
/usr/bin/aria2c
[root@host ~]# pgrep -l aria2c
2592 aria2c
已运行,但是PyOne离线下载时,任务启动了,但是下载失败,下载出错
YAAW里出现错误Error: Unauthorized
不知道怎么搞了。。。不晓得哪里出错了,请指教,谢谢
这程序是不调用yaaw的,大概是脚本的缘故,你直接去后离线下载填上密匙就行了,不用管yaaw。
已经放弃这种方法了,用ariang和oneindex配合的,能离线但是不能传到onedrive
姿势有问题。
注意巨硬的秘钥不能有+,不然不会成功
有个问题想问下
1、现在离线用不了,进aria2 6080,提示Error: Internal server error
2、echo "supervisord -c /root/PyOne/supervisord.conf" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local 命令是在根目录下运行吗?
谢谢!
运行这行echo "supervisord -c /root/PyOne/supervisord.conf" >> /etc/rc.d/rc.local
说没有文件或者目录,是要新建一个吗?
谢谢!
命令随便在哪个目录运行都行。