最近在loc看到Abbey大佬展示的onedrive网盘工具——PyOne,美观实用,就跟着教程搭建了一下。分享、记录一下过程。
由于原教程已经十分详细,我这里也只是做一个补充。
使用此工具的前提是拥有onedrive的商业版、教育版、世纪互联版。可参考如有乐享的教程,已经十分详细:
PyOne介绍
1、onedrive列表程序,可用于更好的分享文件
2、基于Flask开发,Python是最好的语言 demo展示:http://3pp.me
安装前提
1、只支持onedrive商业版、教育版、世纪互联版,个人版理论上不支持
2、涉及的东西较多,不熟悉linux操作但是想安装的,多操作几遍
安装教程
1. 准备工作(原教程用的是宝塔来搭建环境,但是我不喜欢宝塔,所以自己动手了)
环境要求:centos7+python2.7
安装:redis、mongodb、nginx
源码下载到本地:
yum -y install git git clone https://github.com/abbeyokgo/PyOne chmod 775 -R 你的路径/PyOne
先是搭建环境:
安装Python(我用的centos7里面其实自带了python)
yum -y install python
安装redis
yum -y install redis
安装mongodb
vi /etc/yum.repos.d/mongodb-org-3.6.repo
[mongodb-org-3.6] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/3.6/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
yum -y install mongodb-org
安装nginx
yum -y install nginx vim /etc/nginx/nginx.conf //设置网站 service nginx restart
关闭selinux
vim /etc/selinux/config
设置:
SELINUX=disabled
然后重启系统让selinux彻底关闭:
reboot
重启后,记得启动各种服务:
service mongod start service redis start service nginx start
2.申请onedrive的授权信息(注册Azure directory应用)
注册AD应用,简单来说就是注册一个api,然后才能通过api获取文件列表、文件下载直链
国际版注册地址:https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps
图文教程(图片照搬Abbey大佬的:):
注册应用
添加权限
Windows Azure Active Directory – 委派权限 -Sign in and read user profile (默认值)
Office 365 SharePoint Online – 委派权限 – Read user files 和 Read and write user files (别选错)
添加秘钥
添加密钥,到期时间选“1年内”
保存后保存好密钥,下面会用到
3.配置PyOne
修改config.py的client_id值为应用程序 ID(注意!不是对象ID)
修改config.py的redirect_uri值为刚才设置的域名
修改config.py的client_secret值为密钥(前面添加的密钥)
修改config.py的config_dir值为源码所在目录下的data文件夹绝对路径(假如源码放在/root目录下,则这里修改为:/root/PyOne_Mongo/data)
修改config.py的share_path值为你要分享的onedrive文件夹,如果是分享全部的onedrive文件,则为/
修改config.py的od_type值为你的onedrive类型:
国际版:bussiness
世纪互联版:bussiness_21v
修改config.py的app_url值为你的onedrive链接,比如:https://your-my.sharepoing.cn/
最后必须带”/”,如果不知道你的onedrive个人域名,登录一下你的onedrive看一下域名就知道了
修改config.py的allow_site值设置允许调用的域名,起到防盗链的功能
4.开始安装
安装依赖环境:
进入PyOne文件夹进行安装
wget https://bootstrap.pypa.io/get-pip.py && python get-pip.py && pip install -r requirements.txt
试运行,在源码根目录下运行
gunicorn -w4 -b 0.0.0.0:34567 run:app
然后试着访问:http://ip:34567 看看能正常显示?如果不能,请打开对应的端口,还不行请看错误内容
修改nginx配置
上面虽然可以运行了,但是因为不是通过域名访问的,所以无法正常授权,接着修改nginx配置,确保可以通过域名访问。
假设你已经将域名解析到你的服务器了,只需要修改nginx配置
server { listen 80; server_name 你的域名; location / { proxy_pass http://127.0.0.1:34567; proxy_redirect off; proxy_set_header Host $host:80; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } access_log /www/wwwlogs/pyone.log; }
保存、重启之后,应该就可以通过域名访问了
授权
紧接着上一步,就能直接授权了
如果授权出错,一般重建一个AD应用就可以解决
授权成功后会提示更新数据,稍等一会就能直接通过域名访问PyOne了!
常用操作命令:
更新onedrive全部文件
python function.py UpdateFile
5.配置开机启动
网站源码下有个supervisord.conf,主要内容如下:
[program:pyone] command = gunicorn -k gevent -w4 -t 600 -b 0.0.0.0:34567 run:app directory = /root/pyone autorestart = true
主要修改两个地方:
1、端口号:即34567那个端口号,修改为自己选的,或者不改动
2、源码目录:directory修改为你选的网站目录
修改之后运行下面的命令,设置开机启动
echo "supervisord -c 源码目录/supervisord.conf" >> /etc/rc.d/rc.local chmod +x /etc/rc.d/rc.local
重启生效。
本次不用重启生效的方法:
supervisord -c 源码目录/supervisord.conf
将PyOne放到后台运行可参考之前的文章:
更多高级的操作请看: