Rat's

PyOne一键安装脚本 for CentOS 7/Debian 8+/Ubuntu 16+
说明:PyOne最近凭着离线下载(完成并自动上传至Onedrive)和绑定多网盘的功能被越来越多的人使用,如果你还...
扫描右侧二维码阅读全文
30
2018/11

PyOne一键安装脚本 for CentOS 7/Debian 8+/Ubuntu 16+

说明:PyOne最近凭着离线下载(完成并自动上传至Onedrive)和绑定多网盘的功能被越来越多的人使用,如果你还不知道PyOne是何物的可以查看该教程→点击查看。作者更新也勤奋,所以得支持一下,之前博主发过基于宝塔的手动安装教程和Docker安装教程,查看:手动安装Docker安装。不过由于宝塔的Mongodb很容易出错,有些小白也不会解决,而Docker也不支持OpenVZ,所以博主写了个一键脚本,这里分享下。

脚本说明

#脚本会一键安装PyOne所需要的Mongodb、Redis、Aria2等环境,域名使用Caddy反代,自动配置SSL证书。

#本脚本使用的Aria2为某大佬编译的多线程版本,其特点可以将下载速度最大化优化,博主已配置完毕,如服务器性能不足,可将线程自行调整。
方法:修改配置文件/root/.aria2/aria2.conf,线程参数split=64,请自行调整。

#Aria2已添加了BT-Trackers服务器,并定时自动更新服务器地址。

#脚本使用systemctl替换了程序所使用的supervisord进程守护,所以程序的重启等命令会和官方文档上的不一样,详细的使用命令可以看文章后面。

#选择域名访问的,需要提前让解析生效,不然脚本会自动断开,因为后面需要签发SSL证书,ip必须为服务器ip。

更新

【2020.05.21】
修复安装问题,重新支持CentOS 7系统,安装有问题可以留言。
【2020.02.14】
由于程序模块改动,手动改了下,不过只限于Debian 9、10,Ubuntu 18.04、18.10、19.04系统安装使用
【2019.9.28】
新增Debian 10,升级MongoDB版本到4.0,有问题可以留言。
【2019.6.27】
修复部分CentOS 7安装出错的问题,并新增Ubuntu系统,已在Vultr的Ubuntu 16.04、18.04、18.10、19.04上测试通过
【2019.2.23】
鉴于有人需要3.0版本,现已增加安装3.0版本选项,多个选择,并使用的3.0最后一个版本。
【2019.2.16】
修改脚本部分安装步骤,使其支持PyOne4.0
【2019.1.31】
修复部分系统安装启动pyone失败的问题
【2018.11.30】
修复PyOne刷新不出文件夹/文件的问题。

安装

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

使用命令:

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

根据需求选择是否使用域名访问,然后输入域名和Aria2密匙即可。
请输入图片描述

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

#使用域名访问的
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

相关说明

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

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

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

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

最后更多的使用方法(包括程序更新)可以查看该教程→点击查看,除了PyOne启动命令不一样以外,其它都一样,包括上传等命令。

Vultr新用户注册送100美元/16个机房按小时计费,支持支付宝,【点击查看】。
最后修改:2020 年 05 月 21 日 10 : 36 PM

发表评论

416 条评论

  1. jin

    所有的脚本用域名都打不开,ip就可以,这是什么问题呀

    1. Rat's
      @jin

      看是不是签发证书被限制了?这个脚本的话,你试试手动使用命令启动caddy,caddy --conf=/root/.caddy/caddy.conf -agree,就有日志了。

  2. Wei

    已按教程安装成功,有点不太明白的就是文章开头说: 本脚本使用的Aria2为某大佬编译的多线程版本,其特点可以将下载速度最大化优化.
    然后结尾的说明又说:离线下载不调用配置文件,所以Aria2多线程可能会发挥不出来.
    听懵了。

    1. Rat's
      @Wei

      因为程序本身的Aria2是不调用配置文件的,貌似只调用了Aria2二进制文件,而配置文件是可以设置线程数达到效果的,系统会自动运行Aria2,期间是调用了配置文件,可以通过外部的Web使用

      1. Wei
        @Rat's

        听大佬一解释,更懵了。
        那按本教程安装完后,不更改任何配置,使用pyone的离线下载,到底有没有用多线程以及自动更新bt-tracker?

  3. Hao

    大佬,您能帮我看看,我自己改了下上传脚本,但是并没有上传。aria2日志里只显示执行脚本了。文件没有上传。

    !/bin/bash

    GID="$1";
    FileNum="$2";
    File="$3";
    MinSize="2" #限制最低上传大小,默认2k
    MaxSize="1572864000" #限制最高文件大小(单位k),默认150G
    RemoteDIR="/LixianDir/"; #rclone挂载的本地文件夹,最后面保留/
    DiskFlag="A"
    LocalDIR="/data/wwwroot/down.567765.xyz/download/"; #Aria2下载目录,最后面保留/

    if [[ "$FileNum" -eq '1' ]]; then
    Option=" Upload";
    else
    Option=" UploadDir";
    fi

    if [[ -z $(echo "$FileNum" |grep -o '[0-9]*' |head -n1) ]]; then FileNum='0'; fiif [[ "$FileNum" -le '0' ]]; then exit 0; fiif [[ "$#" != '3' ]]; then exit 0; fi

    function LoadFile(){
    IFS_BAK=$IFS
    IFS=$'n'
    if [[ ! -d "$LocalDIR" ]]; then return; fi
    if [[ -e "$File" ]]; then

    FileLoad="${File/#$LocalDIR}" while true do if [[ "$FileLoad" == '/' ]]; then return; fi echo "$FileLoad" |grep -q '/'; if [[ "$?" == "0" ]]; then FileLoad=$(dirname "$FileLoad"); else break; fi; done; if [[ "$FileLoad" == "$LocalDIR" ]]; then return; fi #EXEC1="$(command -v python)" EXEC1="python" EXEC2="/root/PyOne/function.py" if [[ -z "$EXEC1" ]] && [[ -z "$EXEC2" ]]; then return; fi cd "$LocalDIR"; if [[ -e "$FileLoad" ]]; then ItemSize=$(du -s "$FileLoad" |cut -f1 |grep -o '[0-9]*' |head -n1) if [[ -z "$ItemSize" ]]; then return; fi if [[ "$ItemSize" -le "$MinSize" ]]; then echo -ne "\033[33m$FileLoad \033[0mtoo small to spik.\n"; return; fi if [[ "$ItemSize" -ge "$MaxSize" ]]; then echo -ne "\033[33m$FileLoad \033[0mtoo large to spik.\n"; return; fi eval "${EXEC1} ${EXEC2}${Option}" \'"$LocalDIR${FileLoad}"\' "${RemoteDIR}" "${DiskFlag}"; #${EXEC1} ${EXEC2}${Option} $LocalDIR${FileLoad} ${RemoteDIR} ${DiskFlag} ; if [[ $? == '0' ]]; then rm -rf "$FileLoad"; fi fi

    fi
    IFS=$IFS_BAK
    }
    LoadFile;

    1. Hao
      @Hao

      大佬要不这个还是不显示了吧,太乱了,我能给你用邮件描述一下吗

      1. Rat's
        @Hao

        有点花,你是想把那个上传命令替换成pyone自带的?

        1. Hao
          @Rat's

          不好意思啊博主,我其实已经在里面把EXEC1指定python,EXEC2指定/root/PyOne/function.py,option指定Upload或者UploadDir,但是并不能上传,本地文件也在。很奇怪,我想在sh里调用似乎并没有实现,但是当我手动运行aria2下载完成执行的脚本,并按照aria2日志传递三个参数,是可以成功上传的,似乎是aria2执行脚本这一步有点问题。按照日志aria2确实执行了脚本但是没有下文了。请问我是否应该把aria2日志级别调整到debug呢,我现在是info级别

          1. Rat's
            @Hao

            我好像很久前试过,发现上传脚本自动触发的时候调用不了python命令,所以没下文了。

            1. Hao
              @Rat's

              这个算是aria2不完善的地方吗?我打算去github提问一下。

              1. Rat's
                @Hao

                这个就不清楚了

  4. vga

    要疯了 为什么用这个搭建好了之后也是 视频加载失败呢

    1. Rat's
      @vga

      有一种你这个号api被封了,用不了的感觉

  5. 过来看看

    Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-Ihh8SL/SQLAlchemy/

    安装的过程中出现这个东西

    1. Rat's
      @过来看看

      安装失败,什么系统?还有你换系统安装下应该就可以好。

  6. 过来看看

    ● mongod.service - High-performance, schema-free document-oriented database
    Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled)
    Active: failed (Result: exit-code) since Fri 2019-07-19 17:51:58 CST; 9min ago

    Docs: https://docs.mongodb.org/manual

    Jul 19 17:51:58 sanhe-1 systemd[1]: Starting High-performance, schema-free document-oriented database...
    Jul 19 17:51:58 sanhe-1 mongod[15769]: about to fork child process, waiting until server is ready fo...ons.
    Jul 19 17:51:58 sanhe-1 mongod[15769]: forked process: 15772
    Jul 19 17:51:58 sanhe-1 systemd[1]: mongod.service: control process exited, code=exited status=48
    Jul 19 17:51:58 sanhe-1 systemd[1]: Failed to start High-performance, schema-free document-oriented...base.
    Jul 19 17:51:58 sanhe-1 systemd[1]: Unit mongod.service entered failed state.
    Jul 19 17:51:58 sanhe-1 systemd[1]: mongod.service failed.

    ● redis-server.service - Redis
    Loaded: loaded (/etc/systemd/system/redis-server.service; enabled; vendor preset: disabled)
    Active: failed (Result: start-limit) since Fri 2019-07-19 17:52:00 CST; 8min ago
    Process: 15802 ExecStart=/usr/local/bin/redis-server (code=exited, status=1/FAILURE)
    Main PID: 15802 (code=exited, status=1/FAILURE)

    亲爱的博主,这个是怎么了 ?

  7. kai

    一键脚本的Aria2怎么重启

    1. Rat's
      @kai

      看文章的相关命令。

      1. kai
        @Rat's

        = = 不好意思老哥,没注意

  8. wooyun

    请问一下我用pyone4.0自带的离线下载,下载到一半,手动在后台网页删除任务,但是vps里面还是占用了空间,我手动删除了upload文件夹,然后新建一个,下载失败的文件还是会在里面生成。怎样手动删除掉aria2的任务?

  9. tsttest

    ubuntu 19.04 也可以,只要把pip换成pip2就可以了

    1. Rat's
      @tsttest

      好的,稍微改了下,脚本已新增Ubuntu 16+的系统版本。

  10. 蜗牛

    脚本的201行 pip install -r requirements.txt 应该改为pip2 install -r requirements.txt吧,不然是用pip3

    1. Rat's
      @蜗牛

      这个倒不是很需要,脚本没安装pip3。