美文网首页
PyOne一键安装脚本 for CentOS 7/Debian

PyOne一键安装脚本 for CentOS 7/Debian

作者: 一只特例独行de猪 | 来源:发表于2020-03-14 10:05 被阅读0次

    参考:https://www.moerats.com/archives/806/

    wget -N --no-check-certificate https://www.moerats.com/usr/shell/PyOne/PyOne.sh
    bash PyOne.sh
    
    PyOne程序目录:/root/PyOne
    Caddy配置文件目录:/root/.caddy
    Aria2配置文件目录:/root/.aria2
    #以下程序均已配置开机自启,所以就不说开机自启命令了。
    
    #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
    

    #!/bin/bash
    export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    
    # ====================================================
    # Description:PyOne 一键脚本 for Debian 8+ 、CentOS 7、Ubuntu 16+
    # Author:MOERATS
    # Site:moerats.com
    # ====================================================
    
    #fonts color
    Red="\033[31m" 
    Font="\033[0m"
    Blue="\033[36m"
    
    [[ $(id -u) -ne 0 ]] && echo -e "${Red}请使用root运行该脚本,安装退出!${Font}" && exit 1;
    
    source /etc/os-release
    
    #check system
    system(){
        if [[ "${ID}" == "debian" && ${VERSION_ID} -ge 8 ]];then
            echo -e "${CBlue}当前系统为 Debian ${VERSION_ID},符合安装要求!${Font} "
        elif [[ "${ID}" == "ubuntu" && `echo "${VERSION_ID}" | cut -d '.' -f1` -ge 18 ]];then
            echo -e "${CBlue}当前系统为 Ubuntu ${VERSION_ID},符合安装要求!${Font} "
        else
            echo -e "${Red}目前仅支持Debian 9、10,Ubuntu 18.04、18.10、19.04系统,安装退出${Font} "
            exit 1
        fi
        bit=`uname -m`
        if [[ ${bit} = "x86_64" ]]; then
            bit="64"
        else
            bit="32"
        fi
    }
    
    #enter info
    enter(){
        if [[ "${num}" = "2" ]]; then
        stty erase '^H' && read -p "请输入你的PyOne域名信息(如:pyone.moerats.com):" py_domain
        fi
        stty erase '^H' && read -p "请输入你的Aria2密钥:" pass
    }
    
    #install repo
    repo(){
        if [[ "${ID}" = "centos" && ${VERSION_ID} -ge 7  ]]; then
            rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
            wget -N --no-check-certificate https://www.moerats.com/usr/shell/PyOne/mongodb.repo -P '/etc/yum.repos.d/'
        else
            apt update -y
            apt install curl gnupg2 -y
            if [[ "${ID}" = "debian" && "${VERSION_ID}" = "8" ]]; then
            apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
            echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/4.0 main" | tee /etc/apt/sources.list.d/mongodb-org-4.0.list
            elif [[ "${ID}" = "debian" && "${VERSION_ID}" = "9" ]]; then
            curl https://www.mongodb.org/static/pgp/server-4.0.asc | apt-key add -
            echo "deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" | tee /etc/apt/sources.list.d/mongodb-org-4.0.list
            elif [[ "${ID}" = "debian" && "${VERSION_ID}" = "10" ]]; then
            curl https://www.mongodb.org/static/pgp/server-4.2.asc | apt-key add -
            echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main" | tee /etc/apt/sources.list.d/mongodb-org-4.2.list
            elif [[ "${ID}" == "ubuntu" && `echo "${VERSION_ID}" | cut -d '.' -f1` -eq "16" ]]; then
            apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
            echo "deb https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-4.0.list    
            else
            apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
            echo "deb https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-4.0.list
            fi
        fi
    }
    
    #install depend(Redis、Mongodb)
    depend(){
        if [[ "${ID}" = "centos" ]]; then
            yum -y install mongodb-org make git gcc crontabs lsof unzip python-devel
            wget http://download.redis.io/releases/redis-5.0.2.tar.gz
            tar zxvf redis-5.0.2.tar.gz && rm -rf redis-5.0.2.tar.gz
            cd redis-5.0.2
            make
            cp src/redis-server src/redis-cli /usr/local/bin
            cd ..
            rm -rf redis-5.0.2
            sysctl -w vm.overcommit_memory=1
            echo 512 > /proc/sys/net/core/somaxconn
            echo never > /sys/kernel/mm/transparent_hugepage/enabled
            echo "net.core.somaxconn= 1024" >> /etc/sysctl.conf
            sysctl -p
            systemctl start crond
            systemctl enable crond
        else
            apt update -y
            apt install -y mongodb-org redis-server make git cron build-essential python-dev lsof unzip python-setuptools python-wheel
        fi
    }
    
    #install aria2
    aria2(){
    echo -e "${Blue}开始安装Aria2...${Font}"
    wget -N --no-check-certificate https://www.moerats.com/usr/shell/PyOne/aria2-1.34.0-linux-${bit}.tar.gz
    tar zxvf aria2-1.34.0-linux-${bit}.tar.gz
    rm -rf aria2-1.34.0-linux-${bit}.tar.gz
    cd aria2-1.34.0-linux-${bit}
    make install
    if command -v aria2c; then
    echo -e "${Blue}Aria2安装成功!${Font}"
    else
    echo -e "${Red}Aria2安装失败!${Font}"
    exit 1
    fi
    cd ..
    rm -rf aria2-1.34.0-linux-${bit}
    mkdir "/root/.aria2" && mkdir /root/Download
    wget -N --no-check-certificate https://www.moerats.com/usr/shell/Aria2/dht.dat -P '/root/.aria2/'
    wget -N --no-check-certificate https://www.moerats.com/usr/shell/PyOne/aria2.conf -P '/root/.aria2/'
    wget -N --no-check-certificate https://www.moerats.com/usr/shell/PyOne/trackers-list-aria2.sh -P '/root/.aria2/'
    touch /root/.aria2/aria2.session
    chmod +x /root/.aria2/trackers-list-aria2.sh
    chmod 777 /root/.aria2/aria2.session
    sed -i "s/rpc-secret=/rpc-secret=${pass}/g" /root/.aria2/aria2.conf
    echo -e "${Blue}开始设置trackers-list自动更新!${Font}"
    echo "0 3 */7 * * /root/.aria2/trackers-list-aria2.sh
    */5 * * * * systemctl restart aria2" > /root/bt.cron
    crontab bt.cron
    rm -rf bt.cron
    }
    
    #install pyone
    pyone(){
    echo -e "${Blue}正在安装pip!${Font}"
        if [[ "${ID}" = "centos" ]]; then
            yum install -y python-pip
            if ! command -v pip; then
            wget https://bootstrap.pypa.io/get-pip.py
            python get-pip.py
            fi
        else
            apt -y install python-pip
        fi
    cd /root
    if [[ "${choice}" = "2" ]]; then
    git clone https://github.com/abbeyokgo/PyOne.git
    cd PyOne
    cp self_config.py.sample self_config.py
    sed -i 's#from werkzeug.contrib.fixers import ProxyFix#from werkzeug.middleware.proxy_fix import ProxyFix#g' app/__init__.py
    else
    wget wget -N --no-check-certificate https://www.moerats.com/usr/shell/PyOne/PyOne-3.0.zip
    unzip PyOne-3.0.zip && rm -rf PyOne-3.0.zip
    cd PyOne
    chmod 777 upload
    cp config.py.sample config.py
    sed -i 's#from werkzeug.contrib.fixers import ProxyFix#from werkzeug.middleware.proxy_fix import ProxyFix#g' run.py
    fi
    pip2 install -r requirements.txt
    }
    
    #install caddy
    caddy(){
    echo -e "${Blue}正在安装Caddy!${Font}"
    curl https://getcaddy.com | bash -s personal
    if command -v caddy; then
    echo -e "${Blue}Caddy安装成功!${Font}"
    else
    echo -e "${Red}Caddy安装失败!${Font}"
    exit 1
    fi
    mkdir /root/.caddy
    wget -N --no-check-certificate https://www.moerats.com/usr/shell/PyOne/caddy.conf -P '/root/.caddy/'
    sed -i "s/moerats.com/${py_domain}/g" /root/.caddy/caddy.conf
    }
    
    #check domain
    domain(){
        EXEC="$(command -v bc)"
        if [[ -z ${EXEC} ]]; then
        if [[ "${ID}" = "centos" ]]; then
            yum -y install bc
        else
            apt install bc -y
        fi
        fi
        domain_ip=`ping ${py_domain} -c 1 | sed '1{s/[^(]*(//;s/).*//;q}'`
        local_ip=`curl http://whatismyip.akamai.com`
        echo -e "域名dns解析IP:${domain_ip}"
        echo -e "本机IP: ${local_ip}"
        sleep 2
        if [[ $(echo ${local_ip}|tr '.' '+'|bc) -eq $(echo ${domain_ip}|tr '.' '+'|bc) ]];then
            echo -e "${Blue}域名dns解析IP与本机IP匹配${Font}"
            sleep 2
        else
            echo -e "${Red}域名dns解析还未生效,请稍后再试!${Font}"
            exit 1
        fi
    }
    
    #open firewall
    firewall(){
        if [[ "${ID}" = "centos" ]]; then
            firewall-cmd --zone=public --add-port=6800/tcp --permanent
            firewall-cmd --zone=public --add-port=34567/tcp --permanent
            firewall-cmd --zone=public --add-port=80/tcp --permanent
            firewall-cmd --zone=public --add-port=443/tcp --permanent
            firewall-cmd --reload
        fi
    }
    
    #set start up
    start(){
            echo -e "${Blue}正在为相关应用设置开机自启!${Font}"
            wget -N --no-check-certificate https://www.moerats.com/usr/shell/PyOne/aria2.service -P '/etc/systemd/system/'
            if [[ "${num}" = "2" ]]; then
            wget -N --no-check-certificate https://www.moerats.com/usr/shell/PyOne/caddy.service -P '/etc/systemd/system/'
            systemctl start caddy
            systemctl enable caddy
            fi
            wget -N --no-check-certificate https://www.moerats.com/usr/shell/PyOne/pyone.service -P '/etc/systemd/system/'
        if [[ "${ID}" = "centos" ]]; then
            wget -N --no-check-certificate https://www.moerats.com/usr/shell/PyOne/redis-server.service -P '/etc/systemd/system/'
        fi
            sed -i "s#gunicorn#$(command -v gunicorn)#g" /etc/systemd/system/pyone.service
            systemctl start redis-server aria2 mongod pyone 
            systemctl enable redis-server aria2 mongod pyone
    }
    
    #Select version
    pyoneversion(){
    echo -e "———————————————————————————————————————"
    echo -e "${Blue}请选择PyOne版本,输入1或2即可!${Font}"
    echo -e "${Blue}1、安装PyOne 3.0${Font}"
    echo -e "${Blue}2、安装PyOne 4.0${Font}"
    echo -e "———————————————————————————————————————"
    while :; do echo
        read -p "请输入数字 [1-2]:" choice
        if [[ ! $choice =~ ^[1-2]$ ]]; then
            echo -e "${Red}输入错误,请重新输入正确的数字!${Font}"
        else
            break   
        fi
    done
    }
    
    #Complete info
    info(){
        if [[ -z "${py_domain}" ]]; then
            local_ip=`curl http://whatismyip.akamai.com`
            echo -e "———————————————————————————————————————"
            echo -e "${Blue}PyOne安装完成!${Font}"
            echo -e "${Blue}PyOne访问地址:http://${local_ip}:34567${Font}"
            echo -e "${Blue}Aria2密匙:${pass}${Font}"
            echo -e "${Blue}PyOne后台密码:PyOne${Font}"
            echo -e "———————————————————————————————————————"
        else
            echo -e "———————————————————————————————————————"
            echo -e "${Blue}PyOne安装完成!${Font}"
            echo -e "${Blue}PyOne访问地址:https://${py_domain}${Font}"
            echo -e "${Blue}Aria2密匙:${pass}${Font}"
            echo -e "${Blue}PyOne后台密码:PyOne${Font}"
            echo -e "———————————————————————————————————————"
        fi
    }
    
    #start menu
    main(){
    # system
    clear
    echo -e "———————————————————————————————————————"
    echo -e "${Blue}PyOne一键脚本 for Debian 8+ 、CentOS 7、Ubuntu 16+${Font}"
    echo -e "${Blue}1、使用IP访问${Font}"
    echo -e "${Blue}2、使用域名访问(请提前解析好域名并生效)${Font}"
    echo -e "———————————————————————————————————————"
    read -p "请输入数字 [1-2]:" num
    case "$num" in
        1)
        use_ip
        ;;
        2)
        use_domain
        ;;
        *)
        clear
        echo -e "${Blue}请输入正确数字 [1-2]${Font}"
        sleep 2s
        main
        ;;
        esac
    }
    
    use_ip(){
    enter
    pyoneversion
    repo
    depend
    aria2
    pyone
    firewall
    start
    info
    }
    
    use_domain(){
    enter
    pyoneversion
    domain
    repo
    depend
    aria2
    pyone
    caddy
    firewall
    start
    info
    }
    main
    
    

    相关文章

      网友评论

          本文标题:PyOne一键安装脚本 for CentOS 7/Debian

          本文链接:https://www.haomeiwen.com/subject/pkrmshtx.html