Loading... 在安装宝塔面板之前,需要先刷入 Armbian,然后再安装宝塔面板。 ## 教程 将宝塔面板7.3安装脚本上传到 root 目录,然后运行以下命令 ```html root@aml:~# bash install.sh ``` 然后会输出一句话 ```html Do you want to install Bt-Panel to the /www directory now?(y/n): ``` 输入 y 同意安装 然后脚本会开始安装宝塔面板,时间较长,大概要一个小时,中间可能会有停顿,等待即可。安装完成后,会输出用户名和密码。 打开浏览器,输入面板地址进入面板(输出的面板地址中的IP是外网IP,需要将其替换成玩客云内网IP) 登录之后同意许可协议即可。 宝塔面板安装脚本 ```html #!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH LANG=en_US.UTF-8 setup_path="/www" if [ "$1" ];then IDC_CODE=$1 fi Red_Error(){ echo '================================================='; printf '\033[1;31;40m%b\033[0m\n' "$1"; exit 0; } isPy26=$(python -V 2>&1|grep '2.6.') if [ "${isPy26}" ];then Red_Error "抱歉, 7.x不支持Centos6.x,请安装Centos7或安装宝塔5.9"; fi Lock_Clear(){ if [ -f "/etc/bt_crack.pl" ];then chattr -R -ia /www chattr -ia /etc/init.d/bt \cp -rpa /www/backup/panel/vhost/* /www/server/panel/vhost/ mv /www/server/panel/BTPanel/__init__.bak /www/server/panel/BTPanel/__init__.py rm -f /etc/bt_crack.pl fi } Install_Check(){ while [ "$yes" != 'yes' ] && [ "$yes" != 'n' ] do echo -e "----------------------------------------------------" echo -e "已有Web环境,安装宝塔可能影响现有站点" echo -e "Web service is alreday installed,Can't install panel" echo -e "----------------------------------------------------" read -p "输入yes强制安装/Enter yes to force installation (yes/n): " yes; done if [ "$yes" == 'n' ];then exit; fi } System_Check(){ for serviceS in nginx httpd mysqld do if [ -f "/etc/init.d/${serviceS}" ]; then if [ "${serviceS}" = "httpd" ]; then serviceCheck=$(cat /etc/init.d/${serviceS}|grep /www/server/apache) elif [ "${serviceS}" = "mysqld" ]; then serviceCheck=$(cat /etc/init.d/${serviceS}|grep /www/server/mysql) else serviceCheck=$(cat /etc/init.d/${serviceS}|grep /www/server/${serviceS}) fi [ -z "${serviceCheck}" ] && Install_Check fi done } Get_Pack_Manager(){ if [ -f "/usr/bin/yum" ] && [ -d "/etc/yum.repos.d" ]; then PM="yum" elif [ -f "/usr/bin/apt-get" ] && [ -f "/usr/bin/dpkg" ]; then PM="apt-get" fi } Auto_Swap() { swap=$(free |grep Swap|awk '{print $2}') if [ "${swap}" -gt 1 ];then echo "Swap total sizse: $swap"; return; fi if [ ! -d /www ];then mkdir /www fi swapFile="/www/swap" dd if=/dev/zero of=$swapFile bs=1M count=1025 mkswap -f $swapFile swapon $swapFile echo "$swapFile swap swap defaults 0 0" >> /etc/fstab swap=`free |grep Swap|awk '{print $2}'` if [ $swap -gt 1 ];then echo "Swap total sizse: $swap"; return; fi sed -i "/\/www\/swap/d" /etc/fstab rm -f $swapFile } Service_Add(){ if [ "${PM}" == "yum" ] || [ "${PM}" == "dnf" ]; then chkconfig --add bt chkconfig --level 2345 bt on elif [ "${PM}" == "apt-get" ]; then update-rc.d bt defaults fi } get_node_url(){ if [ ! -f /bin/curl ];then if [ "${PM}" = "yum" ]; then yum install curl -y elif [ "${PM}" = "apt-get" ]; then apt-get install curl -y fi fi echo '---------------------------------------------'; echo "Selected download node..."; nodes=(http://dg2.bt.cn http://183.235.223.101:3389 http://dg1.bt.cn http://125.88.182.172:5880 http://103.224.251.67 http://119.188.210.21:5880 http://download.bt.cn http://45.32.116.160 http://128.1.164.196); i=1; for node in ${nodes[@]}; do start=`date +%s.%N` result=`curl -sS --connect-timeout 3 -m 60 $node/check.txt` if [ $result = 'True' ];then end=`date +%s.%N` start_s=`echo $start | cut -d '.' -f 1` start_ns=`echo $start | cut -d '.' -f 2` end_s=`echo $end | cut -d '.' -f 1` end_ns=`echo $end | cut -d '.' -f 2` time_micro=$(( (10#$end_s-10#$start_s)*1000000 + (10#$end_ns/1000 - 10#$start_ns/1000) )) time_ms=$(($time_micro/1000)) values[$i]=$time_ms; urls[$time_ms]=$node i=$(($i+1)) if [ $time_ms -lt 100 ];then break; fi fi done j=5000 for n in ${values[@]}; do if [ $j -gt $n ];then j=$n fi if [ $j -lt 100 ];then break; fi done if [ $j = 5000 ];then NODE_URL='http://download.bt.cn'; else NODE_URL=${urls[$j]} fi download_Url=$NODE_URL echo "Download node: $download_Url"; echo '---------------------------------------------'; } Remove_Package(){ local PackageNmae=$1 if [ "${PM}" == "yum" ];then isPackage=$(rpm -q ${PackageNmae}|grep "not installed") if [ -z "${isPackage}" ];then yum remove ${PackageNmae} -y fi elif [ "${PM}" == "apt-get" ];then isPackage=$(dpkg -l|grep ${PackageNmae}) if [ "${PackageNmae}" ];then apt-get remove ${PackageNmae} -y fi fi } Install_RPM_Pack(){ yumPath=/etc/yum.conf Centos8Check=$(cat /etc/redhat-release | grep ' 8.' | grep -iE 'centos|Red Hat') isExc=$(cat $yumPath|grep httpd) if [ "$isExc" = "" ];then echo "exclude=httpd nginx php mysql mairadb python-psutil python2-psutil" >> $yumPath fi yumBaseUrl=$(cat /etc/yum.repos.d/CentOS-Base.repo|grep baseurl=http|cut -d '=' -f 2|cut -d '$' -f 1|head -n 1) if [ "${yumBaseUrl}" ];then checkYumRepo=$(curl --connect-timeout 5 --head -s -o /dev/null -w "%{http_code} %{time_total}" ${yumBaseUrl}) yumStatus=$(echo ${checkYumRepo}|awk '{print $1}') time_total=$(echo ${checkYumRepo}|awk '{print $2}'|cut -d '.' -f 1) fi if [ "${yumStatus}" != "200" ] || [ "${time_total}" -ge "2" ];then wget -O yumRepo_select.sh http://download.bt.cn/install/5/yumRepo_select.sh bash yumRepo_select.sh ${download_Url} fi #尝试同步时间(从bt.cn) echo 'Synchronizing system time...' getBtTime=$(curl -sS --connect-timeout 3 -m 60 http://www.bt.cn/api/index/get_time) if [ "${getBtTime}" ];then date -s "$(date -d @$getBtTime +"%Y-%m-%d %H:%M:%S")" fi if [ -z "${Centos8Check}" ]; then yum install ntp -y rm -rf /etc/localtime ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #尝试同步国际时间(从ntp服务器) ntpdate 0.asia.pool.ntp.org setenforce 0 fi startTime=`date +%s` sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config #yum remove -y python-requests python3-requests python-greenlet python3-greenlet yumPacks="wget python-devel python-imaging tar zip unzip openssl openssl-devel gcc libxml2 libxml2-devel libxslt* zlib zlib-devel libjpeg-devel libpng-devel libwebp libwebp-devel freetype freetype-devel lsof pcre pcre-devel vixie-cron crontabs icu libicu-devel c-ares" yum install -y ${yumPacks} for yumPack in ${yumPacks} do rpmPack=$(rpm -q ${yumPack}) packCheck=$(echo ${rpmPack}|grep not) if [ "${packCheck}" ]; then yum install ${yumPack} -y fi done if [ -f "/usr/bin/dnf" ]; then dnf install -y redhat-rpm-config fi yum install epel-release -y if [ -z "${Centos8Check}" ];then yum install python-devel -y else yum install python3 python3-devel -y ln -sf /usr/bin/python3 /usr/bin/python fi } Install_Deb_Pack(){ ln -sf bash /bin/sh apt-get update -y apt-get install ruby -y apt-get install lsb-release -y #apt-get install ntp ntpdate -y #/etc/init.d/ntp stop #update-rc.d ntp remove #cat >>~/.profile<<EOF #TZ='Asia/Shanghai'; export TZ #EOF #rm -rf /etc/localtime #cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #echo 'Synchronizing system time...' #ntpdate 0.asia.pool.ntp.org #apt-get upgrade -y for pace in wget curl python python-dev python-imaging zip unzip openssl libssl-dev gcc libxml2 libxml2-dev libxslt zlib1g zlib1g-dev libjpeg-dev libpng-dev lsof libpcre3 libpcre3-dev cron; do apt-get -y install $pace --force-yes; done apt-get -y install python-dev tmp=$(python -V 2>&1|awk '{print $2}') pVersion=${tmp:0:3} if [ "${pVersion}" == '2.7' ];then apt-get -y install python2.7-dev fi if [ ! -d '/etc/letsencrypt' ];then mkdir -p /etc/letsencryp mkdir -p /var/spool/cron if [ ! -f '/var/spool/cron/crontabs/root' ];then echo '' > /var/spool/cron/crontabs/root chmod 600 /var/spool/cron/crontabs/root fi fi } Install_Bt(){ panelPort="8888" if [ -f ${setup_path}/server/panel/data/port.pl ];then panelPort=$(cat ${setup_path}/server/panel/data/port.pl) fi mkdir -p ${setup_path}/server/panel/logs mkdir -p ${setup_path}/server/panel/vhost/apache mkdir -p ${setup_path}/server/panel/vhost/nginx mkdir -p ${setup_path}/server/panel/vhost/rewrite mkdir -p ${setup_path}/server/panel/install mkdir -p /www/server mkdir -p /www/wwwroot mkdir -p /www/wwwlogs mkdir -p /www/backup/database mkdir -p /www/backup/site if [ ! -f "/usr/bin/unzip" ]; then if [ "${PM}" = "yum" ]; then yum install unzip -y elif [ "${PM}" = "apt-get" ]; then apt-get install unzip -y fi fi if [ -f "/etc/init.d/bt" ]; then /etc/init.d/bt stop sleep 1 fi wget -O panel.zip ${download_Url}/install/src/panel6.zip -T 10 wget -O /etc/init.d/bt ${download_Url}/install/src/bt6.init -T 10 wget -O /www/server/panel/install/public.sh ${download_Url}/install/public.sh -T 10 if [ -f "${setup_path}/server/panel/data/default.db" ];then if [ -d "/${setup_path}/server/panel/old_data" ];then rm -rf ${setup_path}/server/panel/old_data fi mkdir -p ${setup_path}/server/panel/old_data mv -f ${setup_path}/server/panel/data/default.db ${setup_path}/server/panel/old_data/default.db mv -f ${setup_path}/server/panel/data/system.db ${setup_path}/server/panel/old_data/system.db mv -f ${setup_path}/server/panel/data/port.pl ${setup_path}/server/panel/old_data/port.pl mv -f ${setup_path}/server/panel/data/admin_path.pl ${setup_path}/server/panel/old_data/admin_path.pl fi unzip -o panel.zip -d ${setup_path}/server/ > /dev/null if [ -d "${setup_path}/server/panel/old_data" ];then mv -f ${setup_path}/server/panel/old_data/default.db ${setup_path}/server/panel/data/default.db mv -f ${setup_path}/server/panel/old_data/system.db ${setup_path}/server/panel/data/system.db mv -f ${setup_path}/server/panel/old_data/port.pl ${setup_path}/server/panel/data/port.pl mv -f ${setup_path}/server/panel/old_data/admin_path.pl ${setup_path}/server/panel/data/admin_path.pl if [ -d "/${setup_path}/server/panel/old_data" ];then rm -rf ${setup_path}/server/panel/old_data fi fi rm -f panel.zip if [ ! -f ${setup_path}/server/panel/tools.py ];then Red_Error "ERROR: Failed to download, please try install again!" fi rm -f ${setup_path}/server/panel/class/*.pyc rm -f ${setup_path}/server/panel/*.pyc chmod +x /etc/init.d/bt chmod -R 600 ${setup_path}/server/panel chmod -R +x ${setup_path}/server/panel/script ln -sf /etc/init.d/bt /usr/bin/bt echo "${panelPort}" > ${setup_path}/server/panel/data/port.pl } Install_Pip(){ curl -Ss --connect-timeout 3 -m 60 http://download.bt.cn/install/pip_select.sh|bash isPip=$(pip -V|grep python) if [ -z "${isPip}" ];then wget -O get-pip.py ${download_Url}/src/get-pip.py python get-pip.py rm -f get-pip.py isPip=$(pip -V|grep python) if [ -z "${isPip}" ];then if [ "${PM}" = "yum" ]; then if [ -z "${Centos8Check}" ];then yum install python-pip -y pip install --upgrade pip else yum install python3-pip -y pip3 install --upgrade pip fi elif [ "${PM}" = "apt-get" ]; then apt-get install python-pip -y pip install --upgrade pip fi fi fi pipVersion=$(pip -V|awk '{print $2}'|cut -d '.' -f 1) if [ "${pipVersion}" -lt "9" ];then pip install --upgrade pip fi } Install_Pillow() { isSetup=$(python -m PIL 2>&1|grep package) if [ "$isSetup" = "" ];then isFedora = `cat /etc/redhat-release |grep Fedora` if [ "${isFedora}" ];then pip install Pillow return; fi wget -O Pillow-3.2.0.zip $download_Url/install/src/Pillow-3.2.0.zip -T 10 unzip Pillow-3.2.0.zip rm -f Pillow-3.2.0.zip cd Pillow-3.2.0 python setup.py install cd .. rm -rf Pillow-3.2.0 fi isSetup=$(python -m PIL 2>&1|grep package) if [ -z "${isSetup}" ];then Red_Error "Pillow installation failed." fi } Install_psutil() { isSetup=`python -m psutil 2>&1|grep package` if [ "$isSetup" = "" ];then wget -O psutil-5.2.2.tar.gz $download_Url/install/src/psutil-5.2.2.tar.gz -T 10 tar xvf psutil-5.2.2.tar.gz rm -f psutil-5.2.2.tar.gz cd psutil-5.2.2 python setup.py install cd .. rm -rf psutil-5.2.2 fi isSetup=$(python -m psutil 2>&1|grep package) if [ "${isSetup}" = "" ];then Red_Error "Psutil installation failed." fi } Install_chardet() { isSetup=$(python -m chardet 2>&1|grep package) if [ "${isSetup}" = "" ];then wget -O chardet-2.3.0.tar.gz $download_Url/install/src/chardet-2.3.0.tar.gz -T 10 tar xvf chardet-2.3.0.tar.gz rm -f chardet-2.3.0.tar.gz cd chardet-2.3.0 python setup.py install cd .. rm -rf chardet-2.3.0 fi isSetup=$(python -m chardet 2>&1|grep package) if [ -z "${isSetup}" ];then Red_Error "chardet installation failed." fi } Install_Python_Lib(){ isPsutil=$(python -m psutil 2>&1|grep package) if [ "${isPsutil}" ];then PSUTIL_VERSION=`python -c 'import psutil;print psutil.__version__;' |grep '5.'` if [ -z "${PSUTIL_VERSION}" ];then pip uninstall psutil -y fi fi if [ "${PM}" = "yum" ]; then yum install libffi-devel -y elif [ "${PM}" = "apt-get" ]; then apt install libffi-dev -y fi pip install setuptools==41.2 TencentCloudCheck=$(cat /etc/hosts|grep -oE VM_[0-9]+_[0-9]+) if [ "${TencentCloudCheck}" ];then pip install -I requests fi python_gevent=$(rpm -qa|grep gevent) if [ "$python_gevent" != "" ];then yum remove python-gevent -y yum remove python-greenlet -y pip install greenlet -I pip install gevent -I fi pip install SQLAlchemy==1.3.3 pip install -r ${setup_path}/server/panel/requirements.txt pip install werkzeug==0.16.1 pip install setuptools==41.2 pip install greenlet pip install gevent pip install psutil chardet virtualenv Flask Flask-Session Flask-SocketIO flask-sqlalchemy Pillow gevent-websocket paramiko pip install qiniu oss2 upyun cos-python-sdk-v5 Install_Pillow Install_psutil Install_chardet } Set_Bt_Panel(){ password=$(cat /dev/urandom | head -n 16 | md5sum | head -c 8) sleep 1 admin_auth="/www/server/panel/data/admin_path.pl" if [ ! -f ${admin_auth} ];then auth_path=$(cat /dev/urandom | head -n 16 | md5sum | head -c 8) echo "/${auth_path}" > ${admin_auth} fi auth_path=$(cat ${admin_auth}) cd ${setup_path}/server/panel/ /etc/init.d/bt start python -m py_compile tools.py python tools.py username username=$(python tools.py panel ${password}) cd ~ echo "${password}" > ${setup_path}/server/panel/default.pl chmod 600 ${setup_path}/server/panel/default.pl /etc/init.d/bt restart sleep 3 isStart=$(ps aux |grep 'BT-Panel'|grep -v grep|awk '{print $2}') if [ -z "${isStart}" ];then Red_Error "ERROR: The BT-Panel service startup failed." fi } Set_Firewall(){ sshPort=$(cat /etc/ssh/sshd_config | grep 'Port '|awk '{print $2}') if [ "${PM}" = "apt-get" ]; then apt-get install -y ufw if [ -f "/usr/sbin/ufw" ];then ufw allow 888,20,21,22,80,${panelPort},${sshPort}/tcp ufw allow 39000:40000/tcp ufw_status=`ufw status` echo y|ufw enable ufw default deny ufw reload fi else if [ -f "/etc/init.d/iptables" ];then iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport ${panelPort} -j ACCEPT iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport ${sshPort} -j ACCEPT iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 39000:40000 -j ACCEPT #iptables -I INPUT -p tcp -m state --state NEW -m udp --dport 39000:40000 -j ACCEPT iptables -A INPUT -p icmp --icmp-type any -j ACCEPT iptables -A INPUT -s localhost -d localhost -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -P INPUT DROP service iptables save sed -i "s#IPTABLES_MODULES=\"\"#IPTABLES_MODULES=\"ip_conntrack_netbios_ns ip_conntrack_ftp ip_nat_ftp\"#" /etc/sysconfig/iptables-config iptables_status=$(service iptables status | grep 'not running') if [ "${iptables_status}" == '' ];then service iptables restart fi else AliyunCheck=$(cat /etc/redhat-release|grep "Aliyun Linux") [ "${AliyunCheck}" ] && return yum install firewalld -y [ "${Centos8Check}" ] && yum reinstall python3-six -y systemctl enable firewalld systemctl start firewalld firewall-cmd --set-default-zone=public > /dev/null 2>&1 firewall-cmd --permanent --zone=public --add-port=20/tcp > /dev/null 2>&1 firewall-cmd --permanent --zone=public --add-port=21/tcp > /dev/null 2>&1 firewall-cmd --permanent --zone=public --add-port=22/tcp > /dev/null 2>&1 firewall-cmd --permanent --zone=public --add-port=80/tcp > /dev/null 2>&1 firewall-cmd --permanent --zone=public --add-port=${panelPort}/tcp > /dev/null 2>&1 firewall-cmd --permanent --zone=public --add-port=${sshPort}/tcp > /dev/null 2>&1 firewall-cmd --permanent --zone=public --add-port=39000-40000/tcp > /dev/null 2>&1 #firewall-cmd --permanent --zone=public --add-port=39000-40000/udp > /dev/null 2>&1 firewall-cmd --reload fi fi } Get_Ip_Address(){ getIpAddress="" getIpAddress=$(curl -sS --connect-timeout 10 -m 60 https://www.bt.cn/Api/getIpAddress) if [ -z "${getIpAddress}" ] || [ "${getIpAddress}" = "0.0.0.0" ]; then isHosts=$(cat /etc/hosts|grep 'www.bt.cn') if [ -z "${isHosts}" ];then echo "" >> /etc/hosts echo "103.224.251.67 www.bt.cn" >> /etc/hosts getIpAddress=$(curl -sS --connect-timeout 10 -m 60 https://www.bt.cn/Api/getIpAddress) if [ -z "${getIpAddress}" ];then sed -i "/bt.cn/d" /etc/hosts fi fi fi ipv4Check=$(python -c "import re; print(re.match('^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$','${getIpAddress}'))") if [ "${ipv4Check}" == "None" ];then ipv6Address=$(echo ${getIpAddress}|tr -d "[]") ipv6Check=$(python -c "import re; print(re.match('^([0-9a-fA-F]{0,4}:){1,7}[0-9a-fA-F]{0,4}$','${ipv6Address}'))") if [ "${ipv6Check}" == "None" ]; then getIpAddress="SERVER_IP" else echo "True" > ${setup_path}/server/panel/data/ipv6.pl sleep 1 /etc/init.d/bt restart fi fi if [ "${getIpAddress}" != "SERVER_IP" ];then echo "${getIpAddress}" > ${setup_path}/server/panel/data/iplist.txt fi } Setup_Count(){ curl -sS --connect-timeout 10 -m 60 https://www.bt.cn/Api/SetupCount?type=Linux\&o=$1 > /dev/null 2>&1 if [ "$1" != "" ];then echo $1 > /www/server/panel/data/o.pl cd /www/server/panel python tools.py o fi echo /www > /var/bt_setupPath.conf } Install_Main(){ Lock_Clear System_Check Get_Pack_Manager get_node_url MEM_TOTAL=$(free -g|grep Mem|awk '{print $2}') if [ "${MEM_TOTAL}" -le "1" ];then Auto_Swap fi startTime=`date +%s` if [ "${PM}" = "yum" ]; then Install_RPM_Pack elif [ "${PM}" = "apt-get" ]; then Install_Deb_Pack fi Install_Bt Install_Pip Install_Python_Lib Set_Bt_Panel Service_Add Set_Firewall Get_Ip_Address Setup_Count ${IDC_CODE} } echo " +---------------------------------------------------------------------- | Bt-WebPanel 7.0 FOR CentOS/Ubuntu/Debian +---------------------------------------------------------------------- | Copyright © 2015-2099 BT-SOFT(http://www.bt.cn) All rights reserved. +---------------------------------------------------------------------- | The WebPanel URL will be http://SERVER_IP:8888 when installed. +---------------------------------------------------------------------- " while [ "$go" != 'y' ] && [ "$go" != 'n' ] do read -p "Do you want to install Bt-Panel to the $setup_path directory now?(y/n): " go; done if [ "$go" == 'n' ];then exit; fi Install_Main echo -e "==================================================================" echo -e "\033[32mCongratulations! Installed successfully!\033[0m" echo -e "==================================================================" echo "Bt-Panel: http://${getIpAddress}:${panelPort}$auth_path" echo -e "username: $username" echo -e "password: $password" echo -e "\033[33mWarning:\033[0m" echo -e "\033[33mIf you cannot access the panel, \033[0m" echo -e "\033[33mrelease the following port (8888|888|80|443|20|21) in the security group\033[0m" echo -e "==================================================================" endTime=`date +%s` ((outTime=($endTime-$startTime)/60)) echo -e "Time consumed:\033[32m $outTime \033[0mMinute!" rm -f new_install.sh ``` 新建 .txt 文件,将脚本内容粘贴进去,然后把这个文件重命名为 install.sh 即可 或者移步百度网盘下载:https://pan.baidu.com/s/1fWTdG7myfllwoF64A5Iahw 提取码:wpyh [alt type="info"]相关内容来源于网络,本站进行二次整合[/alt] 最后修改:2024 年 01 月 19 日 © 允许规范转载 赞 1 如果觉得我的文章对你有用,请随意赞赏