mua

利用Onedrive5T网盘搭建多功能分享网盘-PyOne
说明:PyOne最近凭着离线下载(完成并自动上传至Onedrive)和绑定多网盘的功能被越来越多的人使用。由于宝塔...
扫描右侧二维码阅读全文
17
2019/02

利用Onedrive5T网盘搭建多功能分享网盘-PyOne

说明:PyOne最近凭着离线下载(完成并自动上传至Onedrive)和绑定多网盘的功能被越来越多的人使用。由于宝塔的Mongodb很容易出错,有些小白也不会解决,而Docker也不支持OpenVZ,所以萌鼠博主写了个一键脚本,这里分享下。


前台演示:点击进入
后台截图:请输入图片描述

脚本说明

  • 由于PyOne只支持Python 2.7,而Python版本为2.7的系统只有CentOS 7、Debian 8、9,所以脚本也只支持这3个系统,并在Vultr上测试通过,且CentOS 7和Debian 9使用最佳。
  • 脚本会一键安装PyOne所需要的Mongodb、Redis、Aria2等环境,域名使用Caddy反代,自动配置SSL证书。
  • 本脚本使用的Aria2为某大佬编译的多线程版本,其特点可以将下载速度最大化优化,博主已配置完毕,如服务器性能不足,可将线程自行调整。
    方法:修改配置文件/root/.aria2/aria2.conf,线程参数split=64,请自行调整。
  • Aria2已添加了BT-Trackers服务器,并定时自动更新服务器地址。
  • 脚本使用systemctl替换了程序所使用的supervisord进程守护,所以程序的重启等命令会和官方文档上的不一样,详细的使用命令可以看文章后面。
  • 选择域名访问的,需要提前让解析生效,不然脚本会自动断开,因为后面需要签发SSL证书,ip必须为服务器ip。

安装

系统要求:CentOS 7Debian 8+,建议Debian 9,且为刚安装好的系统,尽量不要用精简版系统。

使用命令

wget -N --no-check-certificate https://www.moerats.com/usr/shell/PyOne/PyOne.sh
bash PyOne.sh

根据需求选择是否使用域名访问,然后输入域名和Aria2密匙即可。
PyOne_shell.png

安装完成后,如果打不开网站的,可以使用命令一起查看下各程序状态。

#使用域名访问的
systemctl status aria2 mongod redis-server pyone caddy
#使用IP访问的
systemctl status aria2 mongod redis-server pyone

如果有显示Active:inactive的,可以留言说下具体程序和系统。反之如果都为running,可以检查下防火墙端口,比如阿里云,谷歌云等,还需要在服务器管理面板上开放34567端口才行。

相关命令

#以下程序均已配置开机自启,所以就不说开机自启命令了。

#Redis使用命令
启动:systemctl start redis-server
重启:systemctl restart redis-server
停止:systemctl stop redis-server
状态:systemctl status redis-server

#Mongodb使用命令
启动:systemctl start mongod
重启:systemctl restart mongod
停止:systemctl stop mongod
状态:systemctl status mongod

#Aria2使用命令
启动:systemctl start aria2
重启:systemctl restart aria2
停止:systemctl stop aria2
状态:systemctl status aria2

#Caddy使用命令(使用域名的才会安装Caddy)
启动:systemctl start caddy
重启:systemctl restart caddy
停止:systemctl stop caddy
状态:systemctl status caddy

#PyOne使用命令
启动:systemctl start pyone
重启:systemctl restart pyone
停止:systemctl stop pyone
状态:systemctl status pyone

相关目录

PyOne程序目录:/root/PyOne
Caddy配置文件目录:/root/.caddy
Aria2配置文件目录:/root/.aria2

相关说明

1.关于操作说明
由于更换了原程序进程守护,所以网站右上角的重启网站按钮已失效,请在SSH客户端使用systemctl restart pyone命令重启程序。

2.关于离线下载
Aria2配置文件的下载路径为/root/Download,但该程序自带的离线下载不调用配置文件,所以使用本程序离线下载的目录为/root/PyOne/upload。

由于本程序离线下载不调用配置文件,所以Aria2多线程可能会发挥不出来,BT服务器也无效,不过会玩的,可以通过修改根目录的aria2.py文件某些参数达到目的,或者直接研究该教程:https://www.moerats.com/archives/697/,使用Aria2面板来离线下载更好,毕竟后者用的脚本比自带离线下载更稳定。

3.刷新缓存问题
如果你在后台执行缓存刷新操作,可能短时间不会生效,建议直接在SSH客户端使用python /root/PyOne/function.py UpdateFile命令刷新

命令行操作

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

错误指导

502 Bad Gateway
一般是网站没有运行导致的。在网站目录运行

supervisord -c supervisord.conf

如果运行上面的命令出现类似Error:Another program is alright listening on a port的错误,说明已经运行过这个命令,可以运行以下命令重启网站


supervisorctl -c supervisord.conf restart pyone

本文转自:https://www.moerats.com/archives/806/


Last modification:February 23rd, 2019 at 06:27 pm

Leave a Comment

3 comments

  1. imluren

    请问这个网盘上传下载走不走服务器流量

    1. mua
      @imluren

      你指的是pyone这个程序么?下载网盘的文件是不走服务器流量的,你如果是用这个程序的离线下载就需要服务器流量,如果你不想用服务器流量就可以下载onedriveAPP客户端来上传

      1. imluren
        @mua

        谢谢