#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH echo " +---------------------------------------------------------------------- | Bt-WebPanel 3.0 FOR CentOS beta +---------------------------------------------------------------------- | Copyright (c) 2015-2017 YakPanel(https://www.yakpanel.com) All rights reserved. +---------------------------------------------------------------------- | Python2.6/2.7 successful the http://SERVER_IP:8888 is WebPanel +---------------------------------------------------------------------- " download_Url='https://www.yakpanel.com' setup_patn=/www while [ "$go" != 'y' ] && [ "$go" != 'n' ] do read -p "Now do you want to install Yak-Panel to the $setup_patn directory?(y/n): " go; done if [ "$go" == 'n' ];then exit; fi yum -y install ntp \cp -a -r /usr/share/zoneinfo/Asia/Shanghai /etc/localtime echo 'Synchronizing system time..' ntpdate 0.asia.pool.ntp.org hwclock -w startTime=`date +%s` rm -f /var/run/yum.pid paces="wget python-devel python-imaging zip unzip openssl openssl-devel gcc libxml2 libxml2-dev libxslt* zlib zlib-devel libjpeg-devel libpng-devel libwebp libwebp-devel freetype freetype-devel lsof pcre pcre-devel vixie-cron crontabs" yum -y install $paces if [ ! -f '/usr/bin/mysql_config' ];then yum install mysql-devel -y fi tmp=`python -V 2>&1|awk '{print $2}'` pVersion=${tmp:0:3} if [ ! -f "/usr/lib/python${pVersion}/site-packages/setuptools-33.1.1-py${pVersion}.egg" ];then wget $download_Url/install/src/setuptools-33.1.1.zip -T 10 unzip setuptools-33.1.1.zip rm -f setuptools-33.1.1.zip cd setuptools-33.1.1 python setup.py install cd .. rm -rf setuptools-33.1.1 fi if [ ! -f "/usr/lib64/python${pVersion}/site-packages/Pillow-3.2.0-py${pVersion}-linux-x86_64.egg" ] && [ ! -f "/usr/lib/python${pVersion}/site-packages/Pillow-3.2.0-py${pVersion}-linux-x86_64.egg" ];then wget $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 if [ ! -d "/usr/lib/python${pVersion}/site-packages/psutil-5.1.3-py${pVersion}-linux-x86_64.egg" ] && [ ! -d "/usr/lib64/python${pVersion}/site-packages/psutil-5.1.3-py${pVersion}-linux-x86_64.egg" ];then wget $download_Url/install/src/psutil-5.1.3.tar.gz -T 10 tar xvf psutil-5.1.3.tar.gz rm -f psutil-5.1.3.tar.gz cd psutil-5.1.3 python setup.py install cd .. rm -rf psutil-5.1.3 fi if [ ! -f "/usr/lib64/python${pVersion}/site-packages/MySQL_python-1.2.5-py${pVersion}-linux-x86_64.egg" ] && [ ! -f "/usr/lib/python${pVersion}/site-packages/MySQL_python-1.2.5-py${pVersion}-linux-x86_64.egg" ];then wget $download_Url/install/src/MySQL-python-1.2.5.zip -T 10 unzip MySQL-python-1.2.5.zip rm -f MySQL-python-1.2.5.zip cd MySQL-python-1.2.5 python setup.py install cd .. rm -rf MySQL-python-1.2.5 fi if [ ! -f "/usr/lib/python${pVersion}/site-packages/chardet-2.3.0-py${pVersion}.egg" ];then wget $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 if [ ! -f "/usr/lib/python${pVersion}/site-packages/web.py-0.38-py${pVersion}.egg-info" ];then wget $download_Url/install/src/web.py-0.38.tar.gz -T 10 tar xvf web.py-0.38.tar.gz rm -f web.py-0.38.tar.gz cd web.py-0.38 python setup.py install cd .. rm -rf web.py-0.38 fi mkdir -p $setup_patn/server/panel/logs wget https://dl.eff.org/certbot-auto --no-check-certificate -O $setup_patn/server/panel/certbot-auto chmod +x $setup_patn/server/panel/certbot-auto isCron=`cat /var/spool/cron/root|grep certbot.log` if [ "${isCron}" == "" ];then echo "30 2 * * * $setup_patn/server/panel/certbot-auto renew >> $setup_patn/server/panel/logs/certbot.log" >> /var/spool/cron/root chown 600 /var/spool/cron/root fi if [ -f '/etc/init.d/bt' ];then service bt stop fi mkdir -p /www/server mkdir -p /www/wwwroot mkdir -p /www/wwwlogs mkdir -p /www/backup/database mkdir -p /www/backup/site wget -O panel.zip $download_Url/install/src/panel.zip -T 10 wget -O /etc/init.d/bt $download_Url/install/src/bt.init -T 10 if [ -f "$setup_patn/server/panel/data/default.db" ];then if [ -d "/$setup_patn/server/panel/old_data" ];then rm -rf /$setup_patn/server/panel/old_data fi mv $setup_patn/server/panel/data /$setup_patn/server/panel/old_data fi unzip -o panel.zip -d $setup_patn/server/ > /dev/null if [ -d "$setup_patn/server/panel/old_data" ];then if [ -d "/$setup_patn/server/panel/data" ];then rm -rf /$setup_patn/server/panel/data fi mv /$setup_patn/server/panel/old_data $setup_patn/server/panel/data fi rm -f panel.zip rm -f $setup_patn/server/panel/class/*.pyc rm -f $setup_patn/server/panel/*.pyc python -m compileall $setup_patn/server/panel rm -f $setup_patn/server/panel/class/*.py rm -f $setup_patn/server/panel/*.py chmod +x /etc/init.d/bt chkconfig --add bt chkconfig --level 2345 bt on echo '8888' > $setup_patn/server/panel/data/port.pl chmod -R 600 $setup_patn/server/panel chmod +x $setup_patn/server/panel/certbot-auto chmod -R +x $setup_patn/server/panel/script service bt start password=`cat /dev/urandom | head -n 16 | md5sum | head -c 8` cd $setup_patn/server/panel/ python tools.pyc panel $password cd ~ echo "$password" > $setup_patn/server/panel/default.pl chmod 600 $setup_patn/server/panel/default.pl 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 8888 -j ACCEPT iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 30000:40000 -j ACCEPT service iptables save iptables_status=`service iptables status | grep 'not running'` if [ "${iptables_status}" == '' ];then service iptables restart fi fi if [ "${isVersion}" == '' ];then if [ ! -f "/etc/init.d/iptables" ];then yum install firewalld -y systemctl enable firewalld systemctl start firewalld firewall-cmd --permanent --zone=public --add-port=20/tcp firewall-cmd --permanent --zone=public --add-port=21/tcp firewall-cmd --permanent --zone=public --add-port=22/tcp firewall-cmd --permanent --zone=public --add-port=80/tcp firewall-cmd --permanent --zone=public --add-port=8888/tcp firewall-cmd --permanent --zone=public --add-port=30000-40000/tcp firewall-cmd --reload fi fi yum -y install epel-release country=`curl -sS --connect-timeout 10 -m 60 http://ip.vpser.net/country` if [ "${country}" = "CN" ]; then mkdir ~/.pip cat > ~/.pip/pip.conf < /tmp/certbot-auto.log 2>&1 & address="" n=0 while [ "$address" == '' ] do address=`curl -s http://city.ip138.com/ip2city.asp|grep -Eo '([0-9]+\.){3}[0-9]+'` let n++ sleep 0.1 if [ $n -gt 5 ];then address="SERVER_IP" fi done curl http://www.yakpanel.com/Api/SetupCount?type=Linux echo "=====================================" echo -e "\033[32mThe install successful!\033[0m" echo -e "=====================================" echo -e "Yak-Panel: http://$address:8888" echo -e "username: admin" echo -e "password: $password" echo -e "=====================================" endTime=`date +%s` ((outTime=($endTime-$startTime)/60)) echo -e "Time consuming:\033[32m $outTime \033[0mMinute!" rm -f install.sh