236 lines
7.5 KiB
Bash
236 lines
7.5 KiB
Bash
#!/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 <<EOF
|
|
[global]
|
|
index-url = https://pypi.doubanio.com/simple/
|
|
|
|
[install]
|
|
trusted-host=pypi.doubanio.com
|
|
EOF
|
|
fi
|
|
nohup $setup_patn/server/panel/certbot-auto -n > /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
|