美文网首页
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