#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH # LANG=en_US.UTF-8 is64bit=`getconf LONG_BIT` { if [ -f /etc/motd ];then echo "welcome to mdserver-web panel" > /etc/motd fi startTime=`date +%s` _os=`uname` echo "use system: ${_os}" if [ "$EUID" -ne 0 ] then echo "Please run as root!" exit fi if [ ${_os} == "Darwin" ]; then OSNAME='macos' elif grep -Eq "openSUSE" /etc/*-release; then OSNAME='opensuse' zypper refresh zypper install cron wget curl zip unzip elif grep -Eq "FreeBSD" /etc/*-release; then OSNAME='freebsd' elif grep -Eqi "CentOS" /etc/issue || grep -Eq "CentOS" /etc/*-release; then OSNAME='rhel' yum install -y wget curl zip unzip tar crontabs elif grep -Eqi "Fedora" /etc/issue || grep -Eq "Fedora" /etc/*-release; then OSNAME='fedora' yum install -y wget curl zip unzip tar crontabs elif grep -Eqi "Rocky" /etc/issue || grep -Eq "Rocky" /etc/*-release; then OSNAME='rhel' yum install -y wget curl zip unzip tar crontabs elif grep -Eqi "AlmaLinux" /etc/issue || grep -Eq "AlmaLinux" /etc/*-release; then OSNAME='rhel' yum install -y wget curl zip unzip tar crontabs elif grep -Eqi "Amazon Linux" /etc/issue || grep -Eq "Amazon Linux" /etc/*-release; then OSNAME='amazon' yum install -y wget curl zip unzip tar crontabs elif grep -Eqi "Debian" /etc/issue || grep -Eq "Debian" /etc/os-release; then OSNAME='debian' apt update -y apt install -y wget curl zip unzip tar cron elif grep -Eqi "Ubuntu" /etc/issue || grep -Eq "Ubuntu" /etc/os-release; then OSNAME='ubuntu' apt update -y apt install -y wget curl zip unzip tar cron else OSNAME='unknow' fi if [ $OSNAME != "macos" ];then if id www &> /dev/null ;then echo "" else groupadd www useradd -g www -s /bin/bash www fi mkdir -p /www/server mkdir -p /www/wwwroot mkdir -p /www/wwwlogs mkdir -p /www/backup/database mkdir -p /www/backup/site # https://cdn.jsdelivr.net/gh/midoks/mdserver-web@latest/scripts/install.sh cn=$(curl --insecure -fsSL -m 10 https://ipinfo.io/json | grep "\"country\": \"CN\"") if [ ! -d /www/server/mdserver-web ];then if [ ! -z "$cn" ];then curl -sSLo /tmp/master.zip https://gitee.com/midoks/mdserver-web/repository/archive/master.zip else curl -sSLo /tmp/master.zip https://codeload.github.com/midoks/mdserver-web/zip/master fi cd /tmp && unzip /tmp/master.zip mv -f /tmp/mdserver-web-master /www/server/mdserver-web rm -rf /tmp/master.zip rm -rf /tmp/mdserver-web-master fi # install acme.sh if [ ! -d /root/.acme.sh ];then if [ ! -z "$cn" ];then curl -sSL -o /tmp/acme.tar.gz https://ghproxy.com/github.com/acmesh-official/acme.sh/archive/master.tar.gz tar xvzf /tmp/acme.tar.gz -C /tmp cd /tmp/acme.sh-master bash acme.sh install cd - fi if [ ! -d /root/.acme.sh ];then curl https://get.acme.sh | sh fi fi fi echo "use system version: ${OSNAME}" if [ "${OSNAME}" == "macos" ];then cn=$(curl -fsSL -m 10 http://ipinfo.io/json | grep "\"country\": \"CN\"") HTTP_PREFIX="https://" if [ ! -z "$cn" ];then HTTP_PREFIX="https://ghproxy.com/" fi curl -fsSL ${HTTP_PREFIX}https://raw.githubusercontent.com/midoks/mdserver-web/dev/scripts/install/macos.sh | bash else cd /www/server/mdserver-web && bash scripts/install/${OSNAME}.sh fi if [ "${OSNAME}" == "macos" ];then echo "macos end" exit 0 fi cd /www/server/mdserver-web && bash cli.sh start isStart=`ps -ef|grep 'gunicorn -c setting.py app:app' |grep -v grep|awk '{print $2}'` n=0 while [ ! -f /etc/rc.d/init.d/mw ]; do echo -e ".\c" sleep 1 let n+=1 if [ $n -gt 20 ];then echo -e "start mw fail" exit 1 fi done cd /www/server/mdserver-web && bash /etc/rc.d/init.d/mw stop cd /www/server/mdserver-web && bash /etc/rc.d/init.d/mw start cd /www/server/mdserver-web && bash /etc/rc.d/init.d/mw default sleep 2 if [ ! -e /usr/bin/mw ]; then if [ -f /etc/rc.d/init.d/mw ];then ln -s /etc/rc.d/init.d/mw /usr/bin/mw fi fi endTime=`date +%s` ((outTime=(${endTime}-${startTime})/60)) echo -e "Time consumed:\033[32m $outTime \033[0mMinute!" } 1> >(tee mw-install.log) 2>&1 echo -e "\nInstall completed. If error occurs, please contact us with the log file mw-install.log ." echo "安装完毕,如果出现错误,请带上同目录下的安装日志 mw-install.log 联系我们反馈."