817 lines
25 KiB
Bash
817 lines
25 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
DB_Info=('MySQL 5.1.73' 'MySQL 5.5.62' 'MySQL 5.6.51' 'MySQL 5.7.34' 'MySQL 8.0.25' 'MariaDB 5.5.68' 'MariaDB 10.1.48' 'MariaDB 10.2.38' 'MariaDB 10.3.29' 'MariaDB 10.4.19')
|
|
PHP_Info=('PHP 5.2.17' 'PHP 5.3.29' 'PHP 5.4.45' 'PHP 5.5.38' 'PHP 5.6.40' 'PHP 7.0.33' 'PHP 7.1.33' 'PHP 7.2.34' 'PHP 7.3.28' 'PHP 7.4.19' 'PHP 8.0.6')
|
|
Apache_Info=('Apache 2.2.34' 'Apache 2.4.46')
|
|
|
|
Database_Selection()
|
|
{
|
|
#which MySQL Version do you want to install?
|
|
if [ -z ${DBSelect} ]; then
|
|
DBSelect="2"
|
|
Echo_Yellow "You have 11 options for your DataBase install."
|
|
echo "1: Install ${DB_Info[0]}"
|
|
echo "2: Install ${DB_Info[1]} (Default)"
|
|
echo "3: Install ${DB_Info[2]}"
|
|
echo "4: Install ${DB_Info[3]}"
|
|
echo "5: Install ${DB_Info[4]}"
|
|
echo "6: Install ${DB_Info[5]}"
|
|
echo "7: Install ${DB_Info[6]}"
|
|
echo "8: Install ${DB_Info[7]}"
|
|
echo "9: Install ${DB_Info[8]}"
|
|
echo "10: Install ${DB_Info[9]}"
|
|
echo "0: DO NOT Install MySQL/MariaDB"
|
|
read -p "Enter your choice (1, 2, 3, 4, 5, 6, 7, 8, 9, 10 or 0): " DBSelect
|
|
fi
|
|
|
|
case "${DBSelect}" in
|
|
1)
|
|
echo "You will install ${DB_Info[0]}"
|
|
;;
|
|
2)
|
|
echo "You will install ${DB_Info[1]}"
|
|
;;
|
|
3)
|
|
echo "You will Install ${DB_Info[2]}"
|
|
;;
|
|
4)
|
|
echo "You will install ${DB_Info[3]}"
|
|
;;
|
|
5)
|
|
echo "You will install ${DB_Info[4]}"
|
|
;;
|
|
6)
|
|
echo "You will install ${DB_Info[5]}"
|
|
;;
|
|
7)
|
|
echo "You will install ${DB_Info[6]}"
|
|
;;
|
|
8)
|
|
echo "You will install ${DB_Info[7]}"
|
|
;;
|
|
9)
|
|
echo "You will install ${DB_Info[8]}"
|
|
;;
|
|
10)
|
|
echo "You will install ${DB_Info[9]}"
|
|
;;
|
|
0)
|
|
echo "Do not install MySQL/MariaDB!"
|
|
;;
|
|
*)
|
|
echo "No input,You will install ${DB_Info[1]}"
|
|
DBSelect="2"
|
|
esac
|
|
|
|
if [[ "${DBSelect}" =~ ^[59]|10$ ]] && [ `free -m | grep Mem | awk '{print $2}'` -le 1024 ]; then
|
|
echo "Memory less than 1GB, can't install MySQL 8.0 or MairaDB 10.3+!"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ "${DBSelect}" =~ ^[6789]|10$ ]]; then
|
|
MySQL_Bin="/usr/local/mariadb/bin/mysql"
|
|
MySQL_Config="/usr/local/mariadb/bin/mysql_config"
|
|
MySQL_Dir="/usr/local/mariadb"
|
|
elif [[ "${DBSelect}" =~ ^[12345]$ ]]; then
|
|
MySQL_Bin="/usr/local/mysql/bin/mysql"
|
|
MySQL_Config="/usr/local/mysql/bin/mysql_config"
|
|
MySQL_Dir="/usr/local/mysql"
|
|
fi
|
|
|
|
if [[ "${DBSelect}" != "0" ]]; then
|
|
#set mysql root password
|
|
if [ -z ${DB_Root_Password} ]; then
|
|
echo "==========================="
|
|
DB_Root_Password="root"
|
|
Echo_Yellow "Please setup root password of MySQL."
|
|
read -p "Please enter: " DB_Root_Password
|
|
if [ "${DB_Root_Password}" = "" ]; then
|
|
echo "NO input,password will be generated randomly."
|
|
DB_Root_Password="lnmp.org#$RANDOM"
|
|
fi
|
|
fi
|
|
echo "MySQL root password: ${DB_Root_Password}"
|
|
|
|
#do you want to enable or disable the InnoDB Storage Engine?
|
|
echo "==========================="
|
|
|
|
if [ -z ${InstallInnodb} ]; then
|
|
InstallInnodb="y"
|
|
Echo_Yellow "Do you want to enable or disable the InnoDB Storage Engine?"
|
|
read -p "Default enable,Enter your choice [Y/n]: " InstallInnodb
|
|
fi
|
|
|
|
case "${InstallInnodb}" in
|
|
[yY][eE][sS]|[yY])
|
|
echo "You will enable the InnoDB Storage Engine"
|
|
InstallInnodb="y"
|
|
;;
|
|
[nN][oO]|[nN])
|
|
echo "You will disable the InnoDB Storage Engine!"
|
|
InstallInnodb="n"
|
|
;;
|
|
*)
|
|
echo "No input,The InnoDB Storage Engine will enable."
|
|
InstallInnodb="y"
|
|
esac
|
|
fi
|
|
}
|
|
|
|
PHP_Selection()
|
|
{
|
|
#which PHP Version do you want to install?
|
|
if [ -z ${PHPSelect} ]; then
|
|
echo "==========================="
|
|
|
|
PHPSelect="3"
|
|
Echo_Yellow "You have 9 options for your PHP install."
|
|
echo "1: Install ${PHP_Info[0]}"
|
|
echo "2: Install ${PHP_Info[1]}"
|
|
echo "3: Install ${PHP_Info[2]}"
|
|
echo "4: Install ${PHP_Info[3]}"
|
|
echo "5: Install ${PHP_Info[4]} (Default)"
|
|
echo "6: Install ${PHP_Info[5]}"
|
|
echo "7: Install ${PHP_Info[6]}"
|
|
echo "8: Install ${PHP_Info[7]}"
|
|
echo "9: Install ${PHP_Info[8]}"
|
|
echo "10: Install ${PHP_Info[9]}"
|
|
echo "11: Install ${PHP_Info[10]}"
|
|
read -p "Enter your choice (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11): " PHPSelect
|
|
fi
|
|
|
|
case "${PHPSelect}" in
|
|
1)
|
|
echo "You will install ${PHP_Info[0]}"
|
|
if [[ "${DBSelect}" = 0 ]]; then
|
|
echo "You didn't select MySQL/MariaDB can't select ${PHP_Info[0]}!"
|
|
exit 1
|
|
fi
|
|
;;
|
|
2)
|
|
echo "You will install ${PHP_Info[1]}"
|
|
;;
|
|
3)
|
|
echo "You will Install ${PHP_Info[2]}"
|
|
;;
|
|
4)
|
|
echo "You will install ${PHP_Info[3]}"
|
|
;;
|
|
5)
|
|
echo "You will install ${PHP_Info[4]}"
|
|
;;
|
|
6)
|
|
echo "You will install ${PHP_Info[5]}"
|
|
;;
|
|
7)
|
|
echo "You will install ${PHP_Info[6]}"
|
|
;;
|
|
8)
|
|
echo "You will install ${PHP_Info[7]}"
|
|
;;
|
|
9)
|
|
echo "You will install ${PHP_Info[8]}"
|
|
;;
|
|
10)
|
|
echo "You will install ${PHP_Info[9]}"
|
|
;;
|
|
11)
|
|
echo "You will install ${PHP_Info[10]}"
|
|
;;
|
|
*)
|
|
echo "No input,You will install ${PHP_Info[4]}"
|
|
PHPSelect="5"
|
|
esac
|
|
}
|
|
|
|
MemoryAllocator_Selection()
|
|
{
|
|
#which Memory Allocator do you want to install?
|
|
if [ -z ${SelectMalloc} ]; then
|
|
echo "==========================="
|
|
|
|
SelectMalloc="1"
|
|
Echo_Yellow "You have 3 options for your Memory Allocator install."
|
|
echo "1: Don't install Memory Allocator. (Default)"
|
|
echo "2: Install Jemalloc"
|
|
echo "3: Install TCMalloc"
|
|
read -p "Enter your choice (1, 2 or 3): " SelectMalloc
|
|
fi
|
|
|
|
case "${SelectMalloc}" in
|
|
1)
|
|
echo "You will install not install Memory Allocator."
|
|
;;
|
|
2)
|
|
echo "You will install JeMalloc"
|
|
;;
|
|
3)
|
|
echo "You will Install TCMalloc"
|
|
;;
|
|
*)
|
|
echo "No input,You will not install Memory Allocator."
|
|
SelectMalloc="1"
|
|
esac
|
|
|
|
if [ "${SelectMalloc}" = "1" ]; then
|
|
MySQL51MAOpt=''
|
|
MySQLMAOpt=''
|
|
NginxMAOpt=''
|
|
elif [ "${SelectMalloc}" = "2" ]; then
|
|
MySQL51MAOpt='--with-mysqld-ldflags=-ljemalloc'
|
|
MySQLMAOpt='[mysqld_safe]
|
|
malloc-lib=/usr/lib/libjemalloc.so'
|
|
NginxMAOpt="--with-ld-opt='-ljemalloc'"
|
|
elif [ "${SelectMalloc}" = "3" ]; then
|
|
MySQL51MAOpt='--with-mysqld-ldflags=-ltcmalloc'
|
|
MySQLMAOpt='[mysqld_safe]
|
|
malloc-lib=/usr/lib/libtcmalloc.so'
|
|
NginxMAOpt='--with-google_perftools_module'
|
|
fi
|
|
}
|
|
|
|
Dispaly_Selection()
|
|
{
|
|
Database_Selection
|
|
PHP_Selection
|
|
MemoryAllocator_Selection
|
|
}
|
|
|
|
Apache_Selection()
|
|
{
|
|
echo "==========================="
|
|
#set Server Administrator Email Address
|
|
if [ -z ${ServerAdmin} ]; then
|
|
ServerAdmin=""
|
|
read -p "Please enter Administrator Email Address: " ServerAdmin
|
|
fi
|
|
if [ "${ServerAdmin}" == "" ]; then
|
|
echo "Administrator Email Address will set to webmaster@example.com!"
|
|
ServerAdmin="webmaster@example.com"
|
|
else
|
|
echo "==========================="
|
|
echo Server Administrator Email: "${ServerAdmin}"
|
|
echo "==========================="
|
|
fi
|
|
echo "==========================="
|
|
|
|
#which Apache Version do you want to install?
|
|
if [ -z ${ApacheSelect} ]; then
|
|
ApacheSelect="1"
|
|
Echo_Yellow "You have 2 options for your Apache install."
|
|
echo "1: Install ${Apache_Info[0]}"
|
|
echo "2: Install ${Apache_Info[1]} (Default)"
|
|
read -p "Enter your choice (1 or 2): " ApacheSelect
|
|
fi
|
|
|
|
if [ "${ApacheSelect}" = "1" ]; then
|
|
echo "You will install ${Apache_Info[0]}"
|
|
elif [ "${ApacheSelect}" = "2" ]; then
|
|
echo "You will install ${Apache_Info[1]}"
|
|
else
|
|
echo "No input,You will install ${Apache_Info[1]}"
|
|
ApacheSelect="2"
|
|
fi
|
|
if [[ "${PHPSelect}" = "1" && "${ApacheSelect}" = "2" ]]; then
|
|
Echo_Red "PHP 5.2.17 is not compatible with Apache 2.4.*."
|
|
Echo_Red "Force use Apache 2.2.31"
|
|
ApacheSelect="1"
|
|
fi
|
|
}
|
|
|
|
Kill_PM()
|
|
{
|
|
if ps aux | grep -E "yum|dnf" | grep -qv "grep"; then
|
|
kill -9 $(ps -ef|grep -E "yum|dnf"|grep -v grep|awk '{print $2}')
|
|
if [ -s /var/run/yum.pid ]; then
|
|
rm -f /var/run/yum.pid
|
|
fi
|
|
elif ps aux | grep -E "apt-get|dpkg|apt" | grep -qv "grep"; then
|
|
kill -9 $(ps -ef|grep -E "apt-get|apt|dpkg"|grep -v grep|awk '{print $2}')
|
|
if [[ -s /var/lib/dpkg/lock-frontend || -s /var/lib/dpkg/lock ]]; then
|
|
rm -f /var/lib/dpkg/lock-frontend
|
|
rm -f /var/lib/dpkg/lock
|
|
dpkg --configure -a
|
|
fi
|
|
fi
|
|
}
|
|
|
|
Press_Install()
|
|
{
|
|
if [ -z ${LNMP_Auto} ]; then
|
|
echo ""
|
|
Echo_Green "Press any key to install...or Press Ctrl+c to cancel"
|
|
OLDCONFIG=`stty -g`
|
|
stty -icanon -echo min 1 time 0
|
|
dd count=1 2>/dev/null
|
|
stty ${OLDCONFIG}
|
|
fi
|
|
. include/version.sh
|
|
Kill_PM
|
|
}
|
|
|
|
Press_Start()
|
|
{
|
|
echo ""
|
|
Echo_Green "Press any key to start...or Press Ctrl+c to cancel"
|
|
OLDCONFIG=`stty -g`
|
|
stty -icanon -echo min 1 time 0
|
|
dd count=1 2>/dev/null
|
|
stty ${OLDCONFIG}
|
|
}
|
|
|
|
Install_LSB()
|
|
{
|
|
echo "[+] Installing lsb..."
|
|
if [ "$PM" = "yum" ]; then
|
|
yum -y install redhat-lsb
|
|
elif [ "$PM" = "apt" ]; then
|
|
apt-get update
|
|
apt-get --no-install-recommends install -y lsb-release
|
|
fi
|
|
}
|
|
|
|
Get_Dist_Version()
|
|
{
|
|
if command -v lsb_release >/dev/null 2>&1; then
|
|
DISTRO_Version=$(lsb_release -sr)
|
|
elif [ -f /etc/lsb-release ]; then
|
|
. /etc/lsb-release
|
|
DISTRO_Version="$DISTRIB_RELEASE"
|
|
elif [ -f /etc/os-release ]; then
|
|
. /etc/os-release
|
|
DISTRO_Version="$VERSION_ID"
|
|
fi
|
|
if [[ "${DISTRO}" = "" || "${DISTRO_Version}" = "" ]]; then
|
|
if command -v python2 >/dev/null 2>&1; then
|
|
DISTRO_Version=$(python2 -c 'import platform; print platform.linux_distribution()[1]')
|
|
elif command -v python3 >/dev/null 2>&1; then
|
|
DISTRO_Version=$(python3 -c 'import platform; print(platform.linux_distribution()[1])')
|
|
else
|
|
Install_LSB
|
|
DISTRO_Version=`lsb_release -rs`
|
|
fi
|
|
fi
|
|
printf -v "${DISTRO}_Version" '%s' "${DISTRO_Version}"
|
|
}
|
|
|
|
Get_Dist_Name()
|
|
{
|
|
if grep -Eqi "CentOS" /etc/issue || grep -Eq "CentOS" /etc/*-release; then
|
|
DISTRO='CentOS'
|
|
PM='yum'
|
|
elif grep -Eqi "Aliyun" /etc/issue || grep -Eq "Aliyun Linux" /etc/*-release; then
|
|
DISTRO='Aliyun'
|
|
PM='yum'
|
|
elif grep -Eqi "Amazon Linux" /etc/issue || grep -Eq "Amazon Linux" /etc/*-release; then
|
|
DISTRO='Amazon'
|
|
PM='yum'
|
|
elif grep -Eqi "Fedora" /etc/issue || grep -Eq "Fedora" /etc/*-release; then
|
|
DISTRO='Fedora'
|
|
PM='yum'
|
|
elif grep -Eqi "Oracle Linux" /etc/issue || grep -Eq "Oracle Linux" /etc/*-release; then
|
|
DISTRO='Oracle'
|
|
PM='yum'
|
|
elif grep -Eqi "Red Hat Enterprise Linux" /etc/issue || grep -Eq "Red Hat Enterprise Linux" /etc/*-release; then
|
|
DISTRO='RHEL'
|
|
PM='yum'
|
|
elif grep -Eqi "Debian" /etc/issue || grep -Eq "Debian" /etc/*-release; then
|
|
DISTRO='Debian'
|
|
PM='apt'
|
|
elif grep -Eqi "Ubuntu" /etc/issue || grep -Eq "Ubuntu" /etc/*-release; then
|
|
DISTRO='Ubuntu'
|
|
PM='apt'
|
|
elif grep -Eqi "Raspbian" /etc/issue || grep -Eq "Raspbian" /etc/*-release; then
|
|
DISTRO='Raspbian'
|
|
PM='apt'
|
|
elif grep -Eqi "Deepin" /etc/issue || grep -Eq "Deepin" /etc/*-release; then
|
|
DISTRO='Deepin'
|
|
PM='apt'
|
|
elif grep -Eqi "Mint" /etc/issue || grep -Eq "Mint" /etc/*-release; then
|
|
DISTRO='Mint'
|
|
PM='apt'
|
|
elif grep -Eqi "Kali" /etc/issue || grep -Eq "Kali" /etc/*-release; then
|
|
DISTRO='Kali'
|
|
PM='apt'
|
|
else
|
|
DISTRO='unknow'
|
|
fi
|
|
Get_OS_Bit
|
|
}
|
|
|
|
Get_RHEL_Version()
|
|
{
|
|
Get_Dist_Name
|
|
if [ "${DISTRO}" = "RHEL" ]; then
|
|
if grep -Eqi "release 5." /etc/redhat-release; then
|
|
echo "Current Version: RHEL Ver 5"
|
|
RHEL_Ver='5'
|
|
elif grep -Eqi "release 6." /etc/redhat-release; then
|
|
echo "Current Version: RHEL Ver 6"
|
|
RHEL_Ver='6'
|
|
elif grep -Eqi "release 7." /etc/redhat-release; then
|
|
echo "Current Version: RHEL Ver 7"
|
|
RHEL_Ver='7'
|
|
elif grep -Eqi "release 8." /etc/redhat-release; then
|
|
echo "Current Version: RHEL Ver 8"
|
|
RHEL_Ver='8'
|
|
fi
|
|
fi
|
|
}
|
|
|
|
Get_OS_Bit()
|
|
{
|
|
if [[ `getconf WORD_BIT` = '32' && `getconf LONG_BIT` = '64' ]] ; then
|
|
Is_64bit='y'
|
|
else
|
|
Is_64bit='n'
|
|
fi
|
|
}
|
|
|
|
Get_ARM()
|
|
{
|
|
if uname -m | grep -Eqi "arm|aarch64"; then
|
|
Is_ARM='y'
|
|
fi
|
|
}
|
|
|
|
Download_Files()
|
|
{
|
|
local URL=$1
|
|
local FileName=$2
|
|
if [ -s "${FileName}" ]; then
|
|
echo "${FileName} [found]"
|
|
else
|
|
echo "Notice: ${FileName} not found!!!download now..."
|
|
wget -c --progress=bar:force --prefer-family=IPv4 --no-check-certificate ${URL}
|
|
fi
|
|
}
|
|
|
|
Tar_Cd()
|
|
{
|
|
local FileName=$1
|
|
local DirName=$2
|
|
cd ${cur_dir}/src
|
|
[[ -d "${DirName}" ]] && rm -rf ${DirName}
|
|
echo "Uncompress ${FileName}..."
|
|
tar zxf ${FileName}
|
|
if [ -n "${DirName}" ]; then
|
|
echo "cd ${DirName}..."
|
|
cd ${DirName}
|
|
fi
|
|
}
|
|
|
|
Tarj_Cd()
|
|
{
|
|
local FileName=$1
|
|
local DirName=$2
|
|
cd ${cur_dir}/src
|
|
[[ -d "${DirName}" ]] && rm -rf ${DirName}
|
|
echo "Uncompress ${FileName}..."
|
|
tar jxf ${FileName}
|
|
if [ -n "${DirName}" ]; then
|
|
echo "cd ${DirName}..."
|
|
cd ${DirName}
|
|
fi
|
|
}
|
|
|
|
TarJ_Cd()
|
|
{
|
|
local FileName=$1
|
|
local DirName=$2
|
|
cd ${cur_dir}/src
|
|
[[ -d "${DirName}" ]] && rm -rf ${DirName}
|
|
echo "Uncompress ${FileName}..."
|
|
tar Jxf ${FileName}
|
|
if [ -n "${DirName}" ]; then
|
|
echo "cd ${DirName}..."
|
|
cd ${DirName}
|
|
fi
|
|
}
|
|
|
|
Check_LNMPConf()
|
|
{
|
|
if [ ! -s "${cur_dir}/lnmp.conf" ]; then
|
|
Echo_Red "lnmp.conf was not exsit!"
|
|
exit 1
|
|
fi
|
|
if [[ "${Download_Mirror}" = "" || "${MySQL_Data_Dir}" = "" || "${MariaDB_Data_Dir}" = "" || "${Default_Website_Dir}" = "" ]]; then
|
|
Echo_Red "Can't get values from lnmp.conf!"
|
|
exit 1
|
|
fi
|
|
if [[ "${MySQL_Data_Dir}" = "/" || "${MariaDB_Data_Dir}" = "/" || "${Default_Website_Dir}" = "/" ]]; then
|
|
Echo_Red "Can't set MySQL/MariaDB/Website Directory to / !"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
Print_APP_Ver()
|
|
{
|
|
echo "You will install ${Stack} stack."
|
|
if [ "${Stack}" != "lamp" ]; then
|
|
echo "${Nginx_Ver}"
|
|
fi
|
|
|
|
if [[ "${DBSelect}" =~ ^[12345]$ ]]; then
|
|
echo "${Mysql_Ver}"
|
|
elif [[ "${DBSelect}" =~ ^[6789]|10$ ]]; then
|
|
echo "${Mariadb_Ver}"
|
|
elif [ "${DBSelect}" = "0" ]; then
|
|
echo "Do not install MySQL/MariaDB!"
|
|
fi
|
|
|
|
echo "${Php_Ver}"
|
|
|
|
if [ "${Stack}" != "lnmp" ]; then
|
|
echo "${Apache_Ver}"
|
|
fi
|
|
|
|
if [ "${SelectMalloc}" = "2" ]; then
|
|
echo "${Jemalloc_Ver}"
|
|
elif [ "${SelectMalloc}" = "3" ]; then
|
|
echo "${TCMalloc_Ver}"
|
|
fi
|
|
echo "Enable InnoDB: ${InstallInnodb}"
|
|
echo "Print lnmp.conf infomation..."
|
|
echo "Download Mirror: ${Download_Mirror}"
|
|
echo "Nginx Additional Modules: ${Nginx_Modules_Options}"
|
|
echo "PHP Additional Modules: ${PHP_Modules_Options}"
|
|
if [ "${Enable_PHP_Fileinfo}" = "y" ]; then
|
|
echo "enable PHP fileinfo."
|
|
fi
|
|
if [ "${Enable_Nginx_Lua}" = "y" ]; then
|
|
echo "enable Nginx Lua."
|
|
fi
|
|
if [[ "${DBSelect}" =~ ^[12345]$ ]]; then
|
|
echo "Database Directory: ${MySQL_Data_Dir}"
|
|
elif [[ "${DBSelect}" =~ ^[6789]|10$ ]]; then
|
|
echo "Database Directory: ${MariaDB_Data_Dir}"
|
|
elif [ "${DBSelect}" = "0" ]; then
|
|
echo "Do not install MySQL/MariaDB!"
|
|
fi
|
|
echo "Default Website Directory: ${Default_Website_Dir}"
|
|
}
|
|
|
|
Print_Sys_Info()
|
|
{
|
|
echo "LNMP Version: ${LNMP_Ver}"
|
|
eval echo "${DISTRO} \${${DISTRO}_Version}"
|
|
cat /etc/issue
|
|
cat /etc/*-release
|
|
uname -a
|
|
MemTotal=`free -m | grep Mem | awk '{print $2}'`
|
|
echo "Memory is: ${MemTotal} MB "
|
|
df -h
|
|
openssl version
|
|
Check_WSL
|
|
}
|
|
|
|
StartUp()
|
|
{
|
|
init_name=$1
|
|
echo "Add ${init_name} service at system startup..."
|
|
if [ "${isWSL}" = "n" ] && command -v systemctl >/dev/null 2>&1 && [[ -s /etc/systemd/system/${init_name}.service || -s /lib/systemd/system/${init_name}.service || -s /usr/lib/systemd/system/${init_name}.service ]]; then
|
|
systemctl daemon-reload
|
|
systemctl enable ${init_name}.service
|
|
else
|
|
if [ "$PM" = "yum" ]; then
|
|
chkconfig --add ${init_name}
|
|
chkconfig ${init_name} on
|
|
elif [ "$PM" = "apt" ]; then
|
|
update-rc.d -f ${init_name} defaults
|
|
fi
|
|
fi
|
|
}
|
|
|
|
Remove_StartUp()
|
|
{
|
|
init_name=$1
|
|
echo "Removing ${init_name} service at system startup..."
|
|
if [ "${isWSL}" = "n" ] && command -v systemctl >/dev/null 2>&1 && [[ -s /etc/systemd/system/${init_name}.service || -s /lib/systemd/system/${init_name}.service || -s /usr/lib/systemd/system/${init_name}.service ]]; then
|
|
systemctl disable ${init_name}.service
|
|
else
|
|
if [ "$PM" = "yum" ]; then
|
|
chkconfig ${init_name} off
|
|
chkconfig --del ${init_name}
|
|
elif [ "$PM" = "apt" ]; then
|
|
update-rc.d -f ${init_name} remove
|
|
fi
|
|
fi
|
|
}
|
|
|
|
Get_Country()
|
|
{
|
|
country=`curl -sSk --connect-timeout 30 -m 60 https://ip.vpszt.com/country`
|
|
if [ $? -ne 0 ]; then
|
|
country=`curl -sSk --connect-timeout 30 -m 60 https://ip.vpser.net/country`
|
|
fi
|
|
}
|
|
|
|
Check_Mirror()
|
|
{
|
|
if ! command -v curl >/dev/null 2>&1; then
|
|
if [ "$PM" = "yum" ]; then
|
|
yum install -y curl
|
|
elif [ "$PM" = "apt" ]; then
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
apt-get update
|
|
apt-get install -y curl
|
|
fi
|
|
fi
|
|
Get_Country
|
|
echo "Server Location: ${country}"
|
|
if [ "${Download_Mirror}" = "https://soft.vpser.net" ]; then
|
|
echo "Try http://soft.vpser.net ..."
|
|
mirror_code=`curl -o /dev/null -m 20 --connect-timeout 20 -sk -w %{http_code} http://soft.vpser.net`
|
|
if [[ "${mirror_code}" = "200" || "${mirror_code}" = "302" ]]; then
|
|
echo "http://soft.vpser.net http code: ${mirror_code}"
|
|
ping -c 3 soft.vpser.net
|
|
else
|
|
ping -c 3 soft.vpser.net
|
|
if [ "${country}" = "CN" ]; then
|
|
echo "Try http://soft1.vpser.net ..."
|
|
mirror_code=`curl -o /dev/null -m 20 --connect-timeout 20 -sk -w %{http_code} http://soft1.vpser.net`
|
|
if [[ "${mirror_code}" = "200" || "${mirror_code}" = "302" ]]; then
|
|
echo "Change to mirror http://soft1.vpser.net"
|
|
Download_Mirror='http://soft1.vpser.net'
|
|
else
|
|
echo "Try http://soft2.vpser.net ..."
|
|
mirror_code=`curl -o /dev/null -m 20 --connect-timeout 20 -sk -w %{http_code} http://soft2.vpser.net`
|
|
if [[ "${mirror_code}" = "200" || "${mirror_code}" = "302" ]]; then
|
|
echo "Change to mirror http://soft2.vpser.net"
|
|
Download_Mirror='http://soft2.vpser.net'
|
|
else
|
|
echo "Can not connect to download mirror,Please modify lnmp.conf manually."
|
|
echo "More info,please visit https://lnmp.org/faq/download-url.html"
|
|
exit 1
|
|
fi
|
|
fi
|
|
else
|
|
echo "Try http://soft2.vpser.net ..."
|
|
mirror_code=`curl -o /dev/null -m 20 --connect-timeout 20 -sk -w %{http_code} http://soft2.vpser.net`
|
|
if [[ "${mirror_code}" = "200" || "${mirror_code}" = "302" ]]; then
|
|
echo "Change to mirror http://soft2.vpser.net"
|
|
Download_Mirror='http://soft2.vpser.net'
|
|
else
|
|
echo "Try http://soft1.vpser.net ..."
|
|
mirror_code=`curl -o /dev/null -m 20 --connect-timeout 20 -sk -w %{http_code} http://soft1.vpser.net`
|
|
if [[ "${mirror_code}" = "200" || "${mirror_code}" = "302" ]]; then
|
|
echo "Change to mirror http://soft1.vpser.net"
|
|
Download_Mirror='http://soft1.vpser.net'
|
|
else
|
|
echo "Can not connect to download mirror,Please modify lnmp.conf manually."
|
|
echo "More info,please visit https://lnmp.org/faq/download-url.html"
|
|
exit 1
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
}
|
|
|
|
Check_CMPT()
|
|
{
|
|
if [[ "${DBSelect}" = "5" ]]; then
|
|
if echo "${Ubuntu_Version}" | grep -Eqi "^1[0-7]\." || echo "${Debian_Version}" | grep -Eqi "^[4-8]" || echo "${Raspbian_Version}" | grep -Eqi "^[4-8]" || echo "${CentOS_Version}" | grep -Eqi "^[4-7]" || echo "${RHEL_Version}" | grep -Eqi "^[4-7]" || echo "${Fedora_Version}" | grep -Eqi "^2[0-3]"; then
|
|
Echo_Red "MySQL 8.0 please use latest linux distributions!"
|
|
exit 1
|
|
fi
|
|
fi
|
|
if [[ "${PHPSelect}" == "10" ]]; then
|
|
if echo "${Ubuntu_Version}" | grep -Eqi "^1[0-7]\." || echo "${Debian_Version}" | grep -Eqi "^[4-8]" || echo "${Raspbian_Version}" | grep -Eqi "^[4-8]" || echo "${CentOS_Version}" | grep -Eqi "^[4-6]" || echo "${RHEL_Version}" | grep -Eqi "^[4-6]" || echo "${Fedora_Version}" | grep -Eqi "^2[0-3]"; then
|
|
Echo_Red "PHP 7.4 please use latest linux distributions!"
|
|
exit 1
|
|
fi
|
|
fi
|
|
if [[ "${PHPSelect}" =~ ^[123456]$ ]]; then
|
|
if echo "${Ubuntu_Version}" | grep -Eqi "^19|2[0-7]\." || echo "${Debian_Version}" | grep -Eqi "^10" || echo "${Raspbian_Version}" | grep -Eqi "^10" || echo "${Deepin_Version}" | grep -Eqi "^2[0-9]" || echo "${Fedora_Version}" | grep -Eqi "^29|3[0-9]"; then
|
|
Echo_Red "Install lower than PHP 7.1 is not supported on very new linux versions such as Ubuntu 19+, Debian 10, Deepin 20+, Fedora 29+ etc."
|
|
exit 1
|
|
fi
|
|
fi
|
|
}
|
|
|
|
Color_Text()
|
|
{
|
|
echo -e " \e[0;$2m$1\e[0m"
|
|
}
|
|
|
|
Echo_Red()
|
|
{
|
|
echo $(Color_Text "$1" "31")
|
|
}
|
|
|
|
Echo_Green()
|
|
{
|
|
echo $(Color_Text "$1" "32")
|
|
}
|
|
|
|
Echo_Yellow()
|
|
{
|
|
echo $(Color_Text "$1" "33")
|
|
}
|
|
|
|
Echo_Blue()
|
|
{
|
|
echo $(Color_Text "$1" "34")
|
|
}
|
|
|
|
Get_PHP_Ext_Dir()
|
|
{
|
|
Cur_PHP_Version="`/usr/local/php/bin/php-config --version`"
|
|
zend_ext_dir="`/usr/local/php/bin/php-config --extension-dir`/"
|
|
}
|
|
|
|
Check_Stack()
|
|
{
|
|
if [[ -s /usr/local/php/sbin/php-fpm && -s /usr/local/php/etc/php-fpm.conf && -s /etc/init.d/php-fpm && -s /usr/local/nginx/sbin/nginx ]]; then
|
|
Get_Stack="lnmp"
|
|
elif [[ -s /usr/local/nginx/sbin/nginx && -s /usr/local/apache/bin/httpd && -s /usr/local/apache/conf/httpd.conf && -s /etc/init.d/httpd && ! -s /usr/local/php/sbin/php-fpm ]]; then
|
|
Get_Stack="lnmpa"
|
|
elif [[ -s /usr/local/apache/bin/httpd && -s /usr/local/apache/conf/httpd.conf && -s /etc/init.d/httpd && ! -s /usr/local/php/sbin/php-fpm ]]; then
|
|
Get_Stack="lamp"
|
|
else
|
|
Get_Stack="unknow"
|
|
fi
|
|
}
|
|
|
|
Check_DB()
|
|
{
|
|
if [[ -s /usr/local/mariadb/bin/mysql && -s /usr/local/mariadb/bin/mysqld_safe && -s /etc/my.cnf ]]; then
|
|
MySQL_Bin="/usr/local/mariadb/bin/mysql"
|
|
MySQL_Config="/usr/local/mariadb/bin/mysql_config"
|
|
MySQL_Dir="/usr/local/mariadb"
|
|
Is_MySQL="n"
|
|
DB_Name="mariadb"
|
|
elif [[ -s /usr/local/mysql/bin/mysql && -s /usr/local/mysql/bin/mysqld_safe && -s /etc/my.cnf ]]; then
|
|
MySQL_Bin="/usr/local/mysql/bin/mysql"
|
|
MySQL_Config="/usr/local/mysql/bin/mysql_config"
|
|
MySQL_Dir="/usr/local/mysql"
|
|
Is_MySQL="y"
|
|
DB_Name="mysql"
|
|
else
|
|
Is_MySQL="None"
|
|
DB_Name="None"
|
|
fi
|
|
}
|
|
|
|
Do_Query()
|
|
{
|
|
echo "$1" >/tmp/.mysql.tmp
|
|
Check_DB
|
|
${MySQL_Bin} --defaults-file=~/.my.cnf </tmp/.mysql.tmp
|
|
return $?
|
|
}
|
|
|
|
Make_TempMycnf()
|
|
{
|
|
cat >~/.my.cnf<<EOF
|
|
[client]
|
|
user=root
|
|
password='$1'
|
|
EOF
|
|
chmod 600 ~/.my.cnf
|
|
}
|
|
|
|
Verify_DB_Password()
|
|
{
|
|
Check_DB
|
|
status=1
|
|
while [ $status -eq 1 ]; do
|
|
read -s -p "Enter current root password of Database (Password will not shown): " DB_Root_Password
|
|
Make_TempMycnf "${DB_Root_Password}"
|
|
Do_Query ""
|
|
status=$?
|
|
done
|
|
echo "OK, MySQL root password correct."
|
|
}
|
|
|
|
TempMycnf_Clean()
|
|
{
|
|
if [ -s ~/.my.cnf ]; then
|
|
rm -f ~/.my.cnf
|
|
fi
|
|
if [ -s /tmp/.mysql.tmp ]; then
|
|
rm -f /tmp/.mysql.tmp
|
|
fi
|
|
}
|
|
|
|
StartOrStop()
|
|
{
|
|
local action=$1
|
|
local service=$2
|
|
if [ "${isWSL}" = "n" ] && command -v systemctl >/dev/null 2>&1 && [[ -s /etc/systemd/system/${service}.service ]]; then
|
|
systemctl ${action} ${service}.service
|
|
else
|
|
/etc/init.d/${service} ${action}
|
|
fi
|
|
}
|
|
|
|
Check_WSL() {
|
|
if [[ "$(< /proc/sys/kernel/osrelease)" == *[Mm]icrosoft* ]]; then
|
|
echo "running on WSL"
|
|
isWSL="y"
|
|
else
|
|
isWSL="n"
|
|
fi
|
|
}
|