Browse Source

Del Mariadb5.5, Add Percona8.0 and pecl_ldap

lj2007331@gmail.com 6 years ago
parent
commit
5efca6bb4c

+ 1 - 1
README.md

@@ -12,7 +12,7 @@ Script properties:
 - Providing a plurality of Tomcat version (Tomcat-9, Tomcat-8, Tomcat-7, Tomcat-6)
 - Providing a plurality of JDK version (JDK-11.0, JDK-1.8, JDK-1.7, JDK-1.6)
 - Providing a plurality of Apache version (Apache-2.4, Apache-2.2)
-- According to their needs to install PHP Cache Accelerator provides ZendOPcache, xcache, apcu, eAccelerator. And php extensions,include ZendGuardLoader,ionCube,SourceGuardian,imagick,gmagick,fileinfo,imap,phalcon,redis,memcached,memcache,mongodb,swoole,xdebug
+- According to their needs to install PHP Cache Accelerator provides ZendOPcache, xcache, apcu, eAccelerator. And php extensions,include ZendGuardLoader,ionCube,SourceGuardian,imagick,gmagick,fileinfo,imap,ldap,phalcon,redis,memcached,memcache,mongodb,swoole,xdebug
 - Installation Pureftpd, phpMyAdmin according to their needs
 - Install memcached, redis according to their needs
 - Jemalloc optimize MySQL, Nginx

+ 19 - 25
include/check_download.sh

@@ -115,8 +115,8 @@ checkDownload() {
   fi
 
   if [[ "${db_option}" =~ ^[1-9]$|^1[0-5]$ ]]; then
-    if [[ "${db_option}" =~ ^[1,2,5,6,9]$ ]] && [ "${dbinstallmethod}" == "2" ]; then
-      [[ "${db_option}" =~ ^[2,5,6,9]$ ]] && boost_ver=${boost_oldver}
+    if [[ "${db_option}" =~ ^[1,2,5,6,9]$|^10$ ]] && [ "${dbinstallmethod}" == "2" ]; then
+      [[ "${db_option}" =~ ^[2,5,6]$|^10$ ]] && boost_ver=${boost_oldver}
       echo "Download boost..."
       [ "${IPADDR_COUNTRY}"x == "CN"x ] && DOWN_ADDR_BOOST=${mirrorLink} || DOWN_ADDR_BOOST=http://downloads.sourceforge.net/project/boost/boost/${boost_ver}
       boostVersion2=$(echo ${boost_ver} | awk -F. '{print $1"_"$2"_"$3}')
@@ -418,37 +418,31 @@ checkDownload() {
         fi
         ;;
       9)
-        # MariaDB 5.5
+        # Percona 8.0
         if [ "${dbinstallmethod}" == '1' ]; then
-          echo "Download MariaDB 5.5 binary package..."
-          FILE_NAME=mariadb-${mariadb55_ver}-${GLIBC_FLAG}-${SYS_BIT_b}.tar.gz
-          if [ "${IPADDR_COUNTRY}"x == "CN"x ]; then
-            DOWN_ADDR_MARIADB=http://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-${mariadb55_ver}/bintar-${GLIBC_FLAG}-${SYS_BIT_a}
-            DOWN_ADDR_MARIADB_BK=http://mirrors.ustc.edu.cn/mariadb/mariadb-${mariadb55_ver}/bintar-${GLIBC_FLAG}-${SYS_BIT_a}
-          else
-            DOWN_ADDR_MARIADB=http://ftp.osuosl.org/pub/mariadb/mariadb-${mariadb55_ver}/bintar-${GLIBC_FLAG}-${SYS_BIT_a}
-            DOWN_ADDR_MARIADB_BK=http://mirror.nodesdirect.com/mariadb/mariadb-${mariadb55_ver}/bintar-${GLIBC_FLAG}-${SYS_BIT_a}
-          fi
+          echo "Download Percona 8.0 binary package..."
+          FILE_NAME=Percona-Server-${percona80_ver}-Linux.${SYS_BIT_b}.${sslLibVer}.tar.gz
+          DOWN_ADDR_PERCONA=https://www.percona.com/downloads/Percona-Server-8.0/Percona-Server-${percona80_ver}/binary/tarball
         elif [ "${dbinstallmethod}" == '2' ]; then
-          echo "Download MariaDB 5.5 source package..."
-          FILE_NAME=mariadb-${mariadb55_ver}.tar.gz
+          echo "Download Percona 8.0 source package..."
+          FILE_NAME=percona-server-${percona80_ver}.tar.gz
           if [ "${IPADDR_COUNTRY}"x == "CN"x ]; then
-            DOWN_ADDR_MARIADB=http://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-${mariadb55_ver}/source
-            DOWN_ADDR_MARIADB_BK=http://mirrors.ustc.edu.cn/mariadb/mariadb-${mariadb55_ver}/source
+            DOWN_ADDR_PERCONA=${mirrorLink}
           else
-            DOWN_ADDR_MARIADB=http://ftp.osuosl.org/pub/mariadb/mariadb-${mariadb55_ver}/source
-            DOWN_ADDR_MARIADB_BK=http://mirror.nodesdirect.com/mariadb/mariadb-${mariadb55_ver}/source
+            DOWN_ADDR_PERCONA=https://www.percona.com/downloads/Percona-Server-8.0/Percona-Server-${percona80_ver}/source/tarball
           fi
         fi
-        src_url=${DOWN_ADDR_MARIADB}/${FILE_NAME} && Download_src
-        wget -4 --tries=6 -c --no-check-certificate ${DOWN_ADDR_MARIADB}/md5sums.txt -O ${FILE_NAME}.md5
-        MARAIDB_TAR_MD5=$(awk '{print $1}' ${FILE_NAME}.md5)
-        [ -z "${MARAIDB_TAR_MD5}" ] && MARAIDB_TAR_MD5=$(curl -s ${DOWN_ADDR_MARIADB_BK}/md5sums.txt | grep ${FILE_NAME} | awk '{print $1}')
+        # start download
+        src_url=${DOWN_ADDR_PERCONA}/${FILE_NAME} && Download_src
+        src_url=${DOWN_ADDR_PERCONA}/${FILE_NAME}.md5sum && Download_src
+        # verifying download
+        PERCONA_TAR_MD5=$(awk '{print $1}' ${FILE_NAME}.md5sum)
+        [ -z "${PERCONA_TAR_MD5}" ] && PERCONA_TAR_MD5=$(curl -s ${DOWN_ADDR_PERCONA}/${FILE_NAME}.md5sum |  grep ${FILE_NAME} | awk '{print $1}')
         tryDlCount=0
-        while [ "$(md5sum ${FILE_NAME} | awk '{print $1}')" != "${MARAIDB_TAR_MD5}" ]; do
-          wget -c --no-check-certificate ${DOWN_ADDR_MARIADB_BK}/${FILE_NAME};sleep 1
+        while [ "$(md5sum ${FILE_NAME} | awk '{print $1}')" != "${PERCONA_TAR_MD5}" ]; do
+          wget -c --no-check-certificate ${DOWN_ADDR_PERCONA}/${FILE_NAME}; sleep 1
           let "tryDlCount++"
-          [ "$(md5sum ${FILE_NAME} | awk '{print $1}')" == "${MARAIDB_TAR_MD5}" -o "${tryDlCount}" == '6' ] && break || continue
+          [ "$(md5sum ${FILE_NAME} | awk '{print $1}')" == "${PERCONA_TAR_MD5}" -o "${tryDlCount}" == '6' ] && break || continue
         done
         if [ "${tryDlCount}" == '6' ]; then
           echo "${CFAILURE}${FILE_NAME} download failed, Please contact the author! ${CEND}"

+ 48 - 22
include/check_sw.sh

@@ -9,14 +9,29 @@
 
 installDepsDebian() {
   echo "${CMSG}Removing the conflicting packages...${CEND}"
-  pkgList="apache2 apache2-data apache2-doc apache2-utils apache2.2-common apache2.2-bin apache2-mpm-prefork apache2-mpm-worker mysql-client mysql-server mysql-common libmysqlclient18 php5 php5-common php5-cgi php5-mysql php5-curl php5-gd libmysql* mysql-*"
-  for Package in ${pkgList};do
-      apt-get -y remove --purge ${Package}
-  done
-  dpkg -l | grep ^rc | awk '{print $2}' | xargs dpkg -P
+  if [[ "${apache_option}" =~ ^[1-2]$ ]]; then
+    killall apache2
+    pkgList="apache2 apache2-doc apache2-utils apache2.2-common apache2.2-bin apache2-mpm-prefork apache2-doc apache2-mpm-worker php5 php5-common php5-cgi php5-cli php5-mysql php5-curl php5-gd"
+    for Package in ${pkgList};do
+      apt-get -y purge ${Package}
+    done
+    dpkg -l | grep ^rc | awk '{print $2}' | xargs dpkg -P
+  fi
+
+  if [[ "${db_option}" =~ ^[1-9]$|^1[0-3]$ ]]; then
+    pkgList="mysql-client mysql-server mysql-common mysql-server-core-5.5 mysql-client-5.5 mariadb-client mariadb-server mariadb-common"
+    for Package in ${pkgList};do
+      apt-get -y purge ${Package}
+    done
+    dpkg -l | grep ^rc | awk '{print $2}' | xargs dpkg -P
+  fi
 
-  apt-get -y update
   echo "${CMSG}Installing dependencies packages...${CEND}"
+  apt-get -y update
+  apt-get -y autoremove
+  apt-get -yf install
+  export DEBIAN_FRONTEND=noninteractive
+
   # critical security updates
   grep security /etc/apt/sources.list > /tmp/security.sources.list
   apt-get -y upgrade -o Dir::Etc::SourceList=/tmp/security.sources.list
@@ -24,30 +39,26 @@ installDepsDebian() {
   # Install needed packages
   case "${Debian_ver}" in
     [6,7])
-      pkgList="gcc g++ make cmake autoconf libjpeg8 libjpeg8-dev libjpeg-dev libpng12-0 libpng12-dev libpng3 libfreetype6 libfreetype6-dev libxml2 libxml2-dev zlib1g zlib1g-dev libc6 libc6-dev libc-client2007e-dev libglib2.0-0 libglib2.0-dev bzip2 libzip-dev libbz2-1.0 libncurses5 libncurses5-dev libaio1 libaio-dev numactl libreadline-dev curl libcurl3 libcurl4-openssl-dev e2fsprogs libkrb5-3 libkrb5-dev libltdl-dev libidn11 libidn11-dev openssl libssl-dev libtool libevent-dev bison re2c libsasl2-dev libxslt1-dev libicu-dev locales libcloog-ppl0 patch vim zip unzip tmux htop bc dc expect libexpat1-dev rsync git lsof lrzsz iptables rsyslog cron logrotate ntpdate libsqlite3-dev psmisc wget sysv-rc ca-certificates"
+      pkgList="debian-keyring debian-archive-keyring build-essential gcc g++ make cmake autoconf libjpeg8 libjpeg8-dev libjpeg-dev libpng12-0 libpng12-dev libpng3 libfreetype6 libfreetype6-dev libxml2 libxml2-dev zlib1g zlib1g-dev libc6 libc6-dev libc-client2007e-dev libglib2.0-0 libglib2.0-dev bzip2 libzip-dev libbz2-1.0 libncurses5 libncurses5-dev libaio1 libaio-dev numactl libreadline-dev curl libcurl3-gnutls libcurl4-gnutls-dev libcurl4-openssl-dev e2fsprogs libkrb5-3 libkrb5-dev libltdl-dev libidn11 libidn11-dev openssl libssl-dev libtool libevent-dev bison re2c libsasl2-dev libxslt1-dev libicu-dev locales libcloog-ppl0 patch vim zip unzip tmux htop bc dc expect libexpat1-dev rsync git lsof lrzsz iptables rsyslog cron logrotate ntpdate libsqlite3-dev psmisc wget sysv-rc ca-certificates"
       ;;
     8)
-      pkgList="gcc g++ make cmake autoconf libjpeg8 libjpeg62-turbo-dev libjpeg-dev libpng12-0 libpng12-dev libpng3 libfreetype6 libfreetype6-dev libxml2 libxml2-dev zlib1g zlib1g-dev libc6 libc6-dev libc-client2007e-dev libglib2.0-0 libglib2.0-dev bzip2 libzip-dev libbz2-1.0 libncurses5 libncurses5-dev libaio1 libaio-dev numactl libreadline-dev curl libcurl3 libcurl4-openssl-dev e2fsprogs libkrb5-3 libkrb5-dev libltdl-dev libidn11 libidn11-dev openssl libssl-dev libtool libevent-dev bison re2c libsasl2-dev libxslt1-dev libxslt-dev libicu-dev locales libcloog-ppl0 patch vim zip unzip tmux htop bc dc expect libexpat1-dev rsync git lsof lrzsz iptables rsyslog cron logrotate ntpdate libsqlite3-dev psmisc wget sysv-rc ca-certificates"
+      pkgList="debian-keyring debian-archive-keyring build-essential gcc g++ make cmake autoconf libjpeg8 libjpeg62-turbo-dev libjpeg-dev libpng12-0 libpng12-dev libpng3 libfreetype6 libfreetype6-dev libxml2 libxml2-dev zlib1g zlib1g-dev libc6 libc6-dev libc-client2007e-dev libglib2.0-0 libglib2.0-dev bzip2 libzip-dev libbz2-1.0 libncurses5 libncurses5-dev libaio1 libaio-dev numactl libreadline-dev curl libcurl3-gnutls libcurl4-gnutls-dev libcurl4-openssl-dev e2fsprogs libkrb5-3 libkrb5-dev libltdl-dev libidn11 libidn11-dev openssl libssl-dev libtool libevent-dev bison re2c libsasl2-dev libxslt1-dev libxslt-dev libicu-dev locales libcloog-ppl0 patch vim zip unzip tmux htop bc dc expect libexpat1-dev rsync git lsof lrzsz iptables rsyslog cron logrotate ntpdate libsqlite3-dev psmisc wget sysv-rc ca-certificates"
       ;;
     9)
-      pkgList="gcc g++ make cmake autoconf libjpeg62-turbo-dev libjpeg-dev libpng-dev libfreetype6 libfreetype6-dev libxml2 libxml2-dev zlib1g zlib1g-dev libc6 libc6-dev libc-client2007e-dev libglib2.0-0 libglib2.0-dev bzip2 libzip-dev libbz2-1.0 libncurses5 libncurses5-dev libaio1 libaio-dev numactl libreadline-dev curl libcurl3 libcurl4-openssl-dev e2fsprogs libkrb5-3 libkrb5-dev libltdl-dev libidn11 libidn11-dev openssl libssl-dev libtool libevent-dev bison re2c libsasl2-dev libxslt1-dev libicu-dev locales libcloog-ppl1 patch vim zip unzip tmux htop bc dc expect libexpat1-dev rsync git lsof lrzsz iptables rsyslog cron logrotate ntpdate libsqlite3-dev psmisc wget sysv-rc ca-certificates"
+      pkgList="debian-keyring debian-archive-keyring build-essential gcc g++ make cmake autoconf libjpeg62-turbo-dev libjpeg-dev libpng-dev libfreetype6 libfreetype6-dev libxml2 libxml2-dev zlib1g zlib1g-dev libc6 libc6-dev libc-client2007e-dev libglib2.0-0 libglib2.0-dev bzip2 libzip-dev libbz2-1.0 libncurses5 libncurses5-dev libaio1 libaio-dev numactl libreadline-dev curl libcurl3-gnutls libcurl4-gnutls-dev libcurl4-openssl-dev e2fsprogs libkrb5-3 libkrb5-dev libltdl-dev libidn11 libidn11-dev openssl libssl-dev libtool libevent-dev bison re2c libsasl2-dev libxslt1-dev libicu-dev locales libcloog-ppl1 patch vim zip unzip tmux htop bc dc expect libexpat1-dev rsync git lsof lrzsz iptables rsyslog cron logrotate ntpdate libsqlite3-dev psmisc wget sysv-rc ca-certificates"
       ;;
     *)
       echo "${CFAILURE}Your system Debian ${Debian_ver} are not supported!${CEND}"
       kill -9 $$
       ;;
   esac
-
   for Package in ${pkgList}; do
-    apt-get -y install ${Package}
+    apt-get --no-install-recommends -y install ${Package}
   done
 }
 
 installDepsCentOS() {
   [ -e '/etc/yum.conf' ] && sed -i 's@^exclude@#exclude@' /etc/yum.conf
-  yum clean all
-
-  yum makecache
   # Uninstall the conflicting packages
   echo "${CMSG}Removing the conflicting packages...${CEND}"
   if [ "${CentOS_ver}" == '7' ]; then
@@ -65,7 +76,6 @@ installDepsCentOS() {
   fi
 
   echo "${CMSG}Installing dependencies packages...${CEND}"
-  yum check-update
   # Install needed packages
   pkgList="deltarpm gcc gcc-c++ make cmake autoconf libjpeg libjpeg-devel libjpeg-turbo libjpeg-turbo-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel krb5-devel libc-client libc-client-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel libaio numactl numactl-libs readline-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssl-devel libxslt-devel libicu-devel libevent-devel libtool libtool-ltdl bison gd-devel vim-enhanced pcre-devel zip unzip ntpdate sqlite-devel sysstat patch bc expect expat-devel rsync rsyslog git lsof lrzsz psmisc wget which libatomic"
   for Package in ${pkgList}; do
@@ -84,22 +94,38 @@ installDepsCentOS() {
 installDepsUbuntu() {
   # Uninstall the conflicting software
   echo "${CMSG}Removing the conflicting packages...${CEND}"
-  pkgList="apache2 apache2-data apache2-doc apache2-utils apache2.2-common apache2.2-bin apache2-mpm-prefork apache2-mpm-worker mysql-client mysql-server mysql-common libmysqlclient18 php5 php5-common php5-cgi php5-mysql php5-curl php5-gd libmysql* mysql-*"
-  for Package in ${pkgList}; do
-    apt-get -y remove --purge ${Package}
-  done
-  dpkg -l | grep ^rc | awk '{print $2}' | xargs dpkg -P
+  if [[ "${apache_option}" =~ ^[1-2]$ ]]; then
+    killall apache2
+    pkgList="apache2 apache2-doc apache2-utils apache2.2-common apache2.2-bin apache2-mpm-prefork apache2-doc apache2-mpm-worker php5 php5-common php5-cgi php5-cli php5-mysql php5-curl php5-gd"
+    for Package in ${pkgList};do
+      apt-get -y purge ${Package}
+    done
+    dpkg -l | grep ^rc | awk '{print $2}' | xargs dpkg -P
+  fi
+
+  if [[ "${db_option}" =~ ^[1-9]$|^1[0-3]$ ]]; then
+    pkgList="mysql-client mysql-server mysql-common mysql-server-core-5.5 mysql-client-5.5 mariadb-client mariadb-server mariadb-common"
+    for Package in ${pkgList};do
+      apt-get -y purge ${Package}
+    done
+    dpkg -l | grep ^rc | awk '{print $2}' | xargs dpkg -P
+  fi
 
   echo "${CMSG}Installing dependencies packages...${CEND}"
   apt-get -y update
+  apt-get -y autoremove
+  apt-get -yf install
+  export DEBIAN_FRONTEND=noninteractive
+
   # critical security updates
   grep security /etc/apt/sources.list > /tmp/security.sources.list
   apt-get -y upgrade -o Dir::Etc::SourceList=/tmp/security.sources.list
 
   # Install needed packages
-  pkgList="gcc g++ make cmake autoconf libjpeg8 libjpeg8-dev libpng12-0 libpng12-dev libpng3 libfreetype6 libfreetype6-dev libxml2 libxml2-dev zlib1g zlib1g-dev libc6 libc6-dev libc-client2007e-dev libglib2.0-0 libglib2.0-dev bzip2 libzip-dev libbz2-1.0 libncurses5 libncurses5-dev libaio1 libaio-dev numactl libreadline-dev curl libcurl3 libcurl4-openssl-dev e2fsprogs libkrb5-3 libkrb5-dev libltdl-dev libidn11 libidn11-dev openssl libssl-dev libtool libevent-dev re2c libsasl2-dev libxslt1-dev libicu-dev libsqlite3-dev patch vim zip unzip tmux htop bc dc expect libexpat1-dev iptables rsyslog rsync git lsof lrzsz ntpdate psmisc wget sysv-rc build-essential"
+  pkgList="debian-keyring debian-archive-keyring build-essential gcc g++ make cmake autoconf libjpeg8 libjpeg8-dev libpng12-0 libpng12-dev libpng3 libfreetype6 libfreetype6-dev libxml2 libxml2-dev zlib1g zlib1g-dev libc6 libc6-dev libc-client2007e-dev libglib2.0-0 libglib2.0-dev bzip2 libzip-dev libbz2-1.0 libncurses5 libncurses5-dev libaio1 libaio-dev numactl libreadline-dev curl libcurl3-gnutls libcurl4-gnutls-dev libcurl4-openssl-dev e2fsprogs libkrb5-3 libkrb5-dev libltdl-dev libidn11 libidn11-dev openssl libssl-dev libtool libevent-dev re2c libsasl2-dev libxslt1-dev libicu-dev libsqlite3-dev patch vim zip unzip tmux htop bc dc expect libexpat1-dev iptables rsyslog rsync git lsof lrzsz ntpdate psmisc wget sysv-rc"
+  export DEBIAN_FRONTEND=noninteractive
   for Package in ${pkgList}; do
-    apt-get -y install ${Package} --force-yes
+    apt-get --no-install-recommends -y install ${Package}
   done
 
   if [[ "${Ubuntu_ver}" =~ ^14$|^15$ ]]; then

+ 2 - 2
include/init_CentOS.sh

@@ -110,8 +110,8 @@ elif [ "${CentOS_ver}" == '7' ]; then
 fi
 
 # Update time
-ntpdate pool.ntp.org
-[ ! -e "/var/spool/cron/root" -o -z "$(grep 'ntpdate' /var/spool/cron/root)" ] && { echo "*/20 * * * * $(which ntpdate) pool.ntp.org > /dev/null 2>&1" >> /var/spool/cron/root;chmod 600 /var/spool/cron/root; }
+ntpdate -u pool.ntp.org
+[ ! -e "/var/spool/cron/root" -o -z "$(grep 'ntpdate' /var/spool/cron/root)" ] && { echo "*/20 * * * * $(which ntpdate) -u pool.ntp.org > /dev/null 2>&1" >> /var/spool/cron/root;chmod 600 /var/spool/cron/root; }
 
 # iptables
 if [ "${iptables_flag}" == 'y' ]; then

+ 2 - 2
include/init_Debian.sh

@@ -85,8 +85,8 @@ sed -i 's@^# en_US.UTF-8@en_US.UTF-8@' /etc/locale.gen
 init q
 
 # Update time
-ntpdate pool.ntp.org
-[ ! -e "/var/spool/cron/crontabs/root" -o -z "$(grep ntpdate /var/spool/cron/crontabs/root 2>/dev/null)" ] && { echo "*/20 * * * * $(which ntpdate) pool.ntp.org > /dev/null 2>&1" >> /var/spool/cron/crontabs/root;chmod 600 /var/spool/cron/crontabs/root; }
+ntpdate -u pool.ntp.org
+[ ! -e "/var/spool/cron/crontabs/root" -o -z "$(grep ntpdate /var/spool/cron/crontabs/root 2>/dev/null)" ] && { echo "*/20 * * * * $(which ntpdate) -u pool.ntp.org > /dev/null 2>&1" >> /var/spool/cron/crontabs/root;chmod 600 /var/spool/cron/crontabs/root; }
 
 # iptables
 if [ "${iptables_flag}" == 'y' ]; then

+ 2 - 2
include/init_Ubuntu.sh

@@ -93,8 +93,8 @@ EOF
 sed -i 's@^@#@g' /etc/init/control-alt-delete.conf
 
 # Update time
-ntpdate pool.ntp.org
-[ ! -e "/var/spool/cron/crontabs/root" -o -z "$(grep ntpdate /var/spool/cron/crontabs/root 2>/dev/null)" ] && { echo "*/20 * * * * $(which ntpdate) pool.ntp.org > /dev/null 2>&1" >> /var/spool/cron/crontabs/root;chmod 600 /var/spool/cron/crontabs/root; }
+ntpdate -u pool.ntp.org
+[ ! -e "/var/spool/cron/crontabs/root" -o -z "$(grep ntpdate /var/spool/cron/crontabs/root 2>/dev/null)" ] && { echo "*/20 * * * * $(which ntpdate) -u pool.ntp.org > /dev/null 2>&1" >> /var/spool/cron/crontabs/root;chmod 600 /var/spool/cron/crontabs/root; }
 
 # iptables
 if [ "${iptables_flag}" == 'y' ]; then

+ 49 - 0
include/pecl_ldap.sh

@@ -0,0 +1,49 @@
+#!/bin/bash
+# Author:  yeho <lj2007331 AT gmail.com>
+# BLOG:  https://blog.linuxeye.cn
+#
+# Notes: OneinStack for CentOS/RedHat 6+ Debian 7+ and Ubuntu 12+
+#
+# Project home page:
+#       https://oneinstack.com
+#       https://github.com/oneinstack/oneinstack
+
+Install_pecl_ldap() {
+  if [ -e "${php_install_dir}/bin/phpize" ]; then
+    pushd ${oneinstack_dir}/src > /dev/null
+    phpExtensionDir=$(${php_install_dir}/bin/php-config --extension-dir)
+    PHP_detail_ver=$(${php_install_dir}/bin/php -r 'echo PHP_VERSION;')
+    src_url=http://www.php.net/distributions/php-${PHP_detail_ver}.tar.gz && Download_src
+    tar xzf php-${PHP_detail_ver}.tar.gz
+    pushd php-${PHP_detail_ver}/ext/ldap > /dev/null
+    if [ "${PM}" == 'yum' ]; then
+      yum -y install openldap-devel
+      [ "${OS_BIT}" == '64' ] && With_libdir='--with-libdir=lib64'
+    else
+      apt-get -y install libldap2-dev
+      ln -s /usr/lib/${SYS_BIT_c}-linux-gnu/libldap.so /usr/lib/
+      ln -s /usr/lib/${SYS_BIT_c}-linux-gnu/liblber.so /usr/lib/
+    fi
+    ${php_install_dir}/bin/phpize
+    ./configure --with-php-config=${php_install_dir}/bin/php-config --with-ldap ${With_libdir}
+    make -j ${THREAD} && make install
+    popd > /dev/null
+    if [ -f "${phpExtensionDir}/ldap.so" ]; then
+      echo 'extension=ldap.so' > ${php_install_dir}/etc/php.d/04-ldap.ini
+      echo "${CSUCCESS}PHP ldap module installed successfully! ${CEND}"
+      rm -rf php-${PHP_detail_ver}
+    else
+      echo "${CFAILURE}PHP ldap module install failed, Please contact the author! ${CEND}"
+    fi
+    popd > /dev/null
+  fi
+}
+
+Uninstall_pecl_ldap() {
+  if [ -e "${php_install_dir}/etc/php.d/04-ldap.ini" ]; then
+    rm -f ${php_install_dir}/etc/php.d/04-ldap.ini
+    echo; echo "${CMSG}PHP ldap module uninstall completed${CEND}"
+  else
+    echo; echo "${CWARNING}PHP ldap module does not exist! ${CEND}"
+  fi
+}

+ 1 - 1
include/percona-5.7.sh

@@ -56,7 +56,7 @@ Install_Percona57() {
     if [ "${dbinstallmethod}" == "1" ]; then
       rm -rf Percona-Server-${percona57_ver}-Linux.${SYS_BIT_b}.${sslLibVer}
     elif [ "${dbinstallmethod}" == "2" ]; then
-      rm -rf percona-server-${percona57_ver}
+      rm -rf percona-server-${percona57_ver} boost_${boostVersion2}
     fi
   else
     rm -rf ${percona_install_dir}

+ 51 - 50
include/mariadb-5.5.sh → include/percona-8.0.sh

@@ -8,61 +8,63 @@
 #       https://oneinstack.com
 #       https://github.com/oneinstack/oneinstack
 
-Install_MariaDB55() {
+Install_Percona80() {
   pushd ${oneinstack_dir}/src > /dev/null
   id -u mysql >/dev/null 2>&1
   [ $? -ne 0 ] && useradd -M -s /sbin/nologin mysql
 
-  [ ! -d "${mariadb_install_dir}" ] && mkdir -p ${mariadb_install_dir}
-  mkdir -p ${mariadb_data_dir};chown mysql.mysql -R ${mariadb_data_dir}
+  [ ! -d "${percona_install_dir}" ] && mkdir -p ${percona_install_dir}
+  mkdir -p ${percona_data_dir};chown mysql.mysql -R ${percona_data_dir}
 
   if [ "${dbinstallmethod}" == "1" ]; then
-    tar zxf mariadb-${mariadb55_ver}-${GLIBC_FLAG}-${SYS_BIT_b}.tar.gz
-    mv mariadb-${mariadb55_ver}-*-${SYS_BIT_b}/* ${mariadb_install_dir}
-    sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libjemalloc.so@' ${mariadb_install_dir}/bin/mysqld_safe
-    sed -i "s@/usr/local/mysql@${mariadb_install_dir}@g" ${mariadb_install_dir}/bin/mysqld_safe
+    tar xzf Percona-Server-${percona80_ver}-Linux.${SYS_BIT_b}.${sslLibVer}.tar.gz
+    mv Percona-Server-${percona80_ver}-Linux.${SYS_BIT_b}.${sslLibVer}/* ${percona_install_dir}
+    sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libjemalloc.so@' ${percona_install_dir}/bin/mysqld_safe
+    sed -i "s@/usr/local/Percona-Server-${percona80_ver}-Linux.${SYS_BIT_b}.${sslLibVer}@${percona_install_dir}@g" ${percona_install_dir}/bin/mysqld_safe
+    sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libjemalloc.so@' ${percona_install_dir}/bin/mysqld_safe
   elif [ "${dbinstallmethod}" == "2" ]; then
-    tar xzf mariadb-${mariadb55_ver}.tar.gz
-    pushd mariadb-${mariadb55_ver}
-    [ "${armplatform}" == "y" ] && patch -p1 < ../mysql-5.5-fix-arm-client_plugin.patch
-    cmake . -DCMAKE_INSTALL_PREFIX=${mariadb_install_dir} \
-    -DMYSQL_DATADIR=${mariadb_data_dir} \
+    boostVersion2=$(echo ${boost_ver} | awk -F. '{print $1"_"$2"_"$3}')
+    tar xzf boost_${boostVersion2}.tar.gz
+    tar xzf percona-server-${percona80_ver}.tar.gz
+    pushd percona-server-${percona80_ver}
+    cmake . -DCMAKE_INSTALL_PREFIX=${percona_install_dir} \
+    -DMYSQL_DATADIR=${percona_data_dir} \
+    -DDOWNLOAD_BOOST=1 \
+    -DWITH_BOOST=../boost_${boostVersion2} \
     -DSYSCONFDIR=/etc \
     -DWITH_INNOBASE_STORAGE_ENGINE=1 \
     -DWITH_PARTITION_STORAGE_ENGINE=1 \
     -DWITH_FEDERATED_STORAGE_ENGINE=1 \
     -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
     -DWITH_MYISAM_STORAGE_ENGINE=1 \
-    -DWITH_READLINE=1 \
     -DWITH_EMBEDDED_SERVER=1 \
     -DENABLE_DTRACE=0 \
     -DENABLED_LOCAL_INFILE=1 \
     -DDEFAULT_CHARSET=utf8mb4 \
-    -DDEFAULT_COLLATION=utf8mb4_general_ci \
-    -DEXTRA_CHARSETS=all \
-    -DCMAKE_EXE_LINKER_FLAGS='-ljemalloc'
+    -DEXTRA_CHARSETS=all
     make -j ${THREAD}
     make install
+    sed -i 's@^load_jemalloc=1@load_jemalloc=0@' ${percona_install_dir}/bin/mysqld_safe
     popd
   fi
 
-  if [ -d "${mariadb_install_dir}/support-files" ]; then
+  if [ -d "${percona_install_dir}/support-files" ]; then
     sed -i "s+^dbrootpwd.*+dbrootpwd='${dbrootpwd}'+" ../options.conf
-    echo "${CSUCCESS}MariaDB installed successfully! ${CEND}"
+    echo "${CSUCCESS}Percona installed successfully! ${CEND}"
     if [ "${dbinstallmethod}" == "1" ]; then
-      rm -rf mariadb-${mariadb55_ver}-*-${SYS_BIT_b}
+      rm -rf Percona-Server-${percona80_ver}-Linux.${SYS_BIT_b}.${sslLibVer}
     elif [ "${dbinstallmethod}" == "2" ]; then
-      rm -rf mariadb-${mariadb55_ver}
+      rm -rf percona-server-${percona80_ver} boost_${boostVersion2}
     fi
   else
-    rm -rf ${mariadb_install_dir}
-    echo "${CFAILURE}MariaDB install failed, Please contact the author! ${CEND}"
+    rm -rf ${percona_install_dir}
+    echo "${CFAILURE}Percona install failed, Please contact the author! ${CEND}"
     kill -9 $$
   fi
 
-  /bin/cp ${mariadb_install_dir}/support-files/mysql.server /etc/init.d/mysqld
-  sed -i "s@^basedir=.*@basedir=${mariadb_install_dir}@" /etc/init.d/mysqld
-  sed -i "s@^datadir=.*@datadir=${mariadb_data_dir}@" /etc/init.d/mysqld
+  /bin/cp ${percona_install_dir}/support-files/mysql.server /etc/init.d/mysqld
+  sed -i "s@^basedir=.*@basedir=${percona_install_dir}@" /etc/init.d/mysqld
+  sed -i "s@^datadir=.*@datadir=${percona_data_dir}@" /etc/init.d/mysqld
   chmod +x /etc/init.d/mysqld
   [ "${PM}" == 'yum' ] && { chkconfig --add mysqld; chkconfig mysqld on; }
   [ "${PM}" == 'apt-get' ] && update-rc.d mysqld defaults
@@ -75,19 +77,25 @@ port = 3306
 socket = /tmp/mysql.sock
 default-character-set = utf8mb4
 
+[mysql]
+prompt="Percona [\\d]> "
+no-auto-rehash
+
 [mysqld]
 port = 3306
 socket = /tmp/mysql.sock
+default_authentication_plugin = mysql_native_password
 
-basedir = ${mariadb_install_dir}
-datadir = ${mariadb_data_dir}
-pid-file = ${mariadb_data_dir}/mysql.pid
+basedir = ${percona_install_dir}
+datadir = ${percona_data_dir}
+pid-file = ${percona_data_dir}/mysql.pid
 user = mysql
 bind-address = 0.0.0.0
 server-id = 1
 
 init-connect = 'SET NAMES utf8mb4'
 character-set-server = utf8mb4
+collation-server = utf8mb4_0900_ai_ci
 
 skip-name-resolve
 #skip-networking
@@ -110,22 +118,19 @@ key_buffer_size = 4M
 
 thread_cache_size = 8
 
-query_cache_type = 1
-query_cache_size = 8M
-query_cache_limit = 2M
-
 ft_min_word_len = 4
 
 log_bin = mysql-bin
 binlog_format = mixed
-expire_logs_days = 30
+binlog_expire_logs_seconds = 604800
 
-log_error = ${mariadb_data_dir}/mysql-error.log
+log_error = ${percona_data_dir}/mysql-error.log
 slow_query_log = 1
 long_query_time = 1
-slow_query_log_file = ${mariadb_data_dir}/mysql-slow.log
+slow_query_log_file = ${percona_data_dir}/mysql-slow.log
 
 performance_schema = 0
+explicit_defaults_for_timestamp
 
 #lower_case_table_names = 1
 
@@ -169,7 +174,6 @@ EOF
   sed -i "s@max_connections.*@max_connections = $((${Mem}/3))@" /etc/my.cnf
   if [ ${Mem} -gt 1500 -a ${Mem} -le 2500 ]; then
     sed -i 's@^thread_cache_size.*@thread_cache_size = 16@' /etc/my.cnf
-    sed -i 's@^query_cache_size.*@query_cache_size = 16M@' /etc/my.cnf
     sed -i 's@^myisam_sort_buffer_size.*@myisam_sort_buffer_size = 16M@' /etc/my.cnf
     sed -i 's@^key_buffer_size.*@key_buffer_size = 16M@' /etc/my.cnf
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 128M@' /etc/my.cnf
@@ -177,7 +181,6 @@ EOF
     sed -i 's@^table_open_cache.*@table_open_cache = 256@' /etc/my.cnf
   elif [ ${Mem} -gt 2500 -a ${Mem} -le 3500 ]; then
     sed -i 's@^thread_cache_size.*@thread_cache_size = 32@' /etc/my.cnf
-    sed -i 's@^query_cache_size.*@query_cache_size = 32M@' /etc/my.cnf
     sed -i 's@^myisam_sort_buffer_size.*@myisam_sort_buffer_size = 32M@' /etc/my.cnf
     sed -i 's@^key_buffer_size.*@key_buffer_size = 64M@' /etc/my.cnf
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 512M@' /etc/my.cnf
@@ -185,7 +188,6 @@ EOF
     sed -i 's@^table_open_cache.*@table_open_cache = 512@' /etc/my.cnf
   elif [ ${Mem} -gt 3500 ]; then
     sed -i 's@^thread_cache_size.*@thread_cache_size = 64@' /etc/my.cnf
-    sed -i 's@^query_cache_size.*@query_cache_size = 64M@' /etc/my.cnf
     sed -i 's@^myisam_sort_buffer_size.*@myisam_sort_buffer_size = 64M@' /etc/my.cnf
     sed -i 's@^key_buffer_size.*@key_buffer_size = 256M@' /etc/my.cnf
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 1024M@' /etc/my.cnf
@@ -193,25 +195,24 @@ EOF
     sed -i 's@^table_open_cache.*@table_open_cache = 1024@' /etc/my.cnf
   fi
 
-  ${mariadb_install_dir}/scripts/mysql_install_db --user=mysql --basedir=${mariadb_install_dir} --datadir=${mariadb_data_dir}
+  ${percona_install_dir}/bin/mysqld --initialize-insecure --user=mysql --basedir=${percona_install_dir} --datadir=${percona_data_dir}
 
   [ "${Wsl}" == true ] && chmod 600 /etc/my.cnf
-  chown mysql.mysql -R ${mariadb_data_dir}
+  chown mysql.mysql -R ${percona_data_dir}
   [ -d "/etc/mysql" ] && /bin/mv /etc/mysql{,_bk}
   service mysqld start
-  [ -z "$(grep ^'export PATH=' /etc/profile)" ] && echo "export PATH=${mariadb_install_dir}/bin:\$PATH" >> /etc/profile
-  [ -n "$(grep ^'export PATH=' /etc/profile)" -a -z "$(grep ${mariadb_install_dir} /etc/profile)" ] && sed -i "s@^export PATH=\(.*\)@export PATH=${mariadb_install_dir}/bin:\1@" /etc/profile
+  [ -z "$(grep ^'export PATH=' /etc/profile)" ] && echo "export PATH=${percona_install_dir}/bin:\$PATH" >> /etc/profile
+  [ -n "$(grep ^'export PATH=' /etc/profile)" -a -z "$(grep ${percona_install_dir} /etc/profile)" ] && sed -i "s@^export PATH=\(.*\)@export PATH=${percona_install_dir}/bin:\1@" /etc/profile
   . /etc/profile
 
-  ${mariadb_install_dir}/bin/mysql -e "grant all privileges on *.* to root@'127.0.0.1' identified by \"${dbrootpwd}\" with grant option;"
-  ${mariadb_install_dir}/bin/mysql -e "grant all privileges on *.* to root@'localhost' identified by \"${dbrootpwd}\" with grant option;"
-  ${mariadb_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "delete from mysql.user where Password='';"
-  ${mariadb_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "delete from mysql.db where User='';"
-  ${mariadb_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "delete from mysql.proxies_priv where Host!='localhost';"
-  ${mariadb_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "drop database test;"
-  ${mariadb_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "reset master;"
+  ${percona_install_dir}/bin/mysql -uroot -hlocalhost -e "create user root@'127.0.0.1' identified by \"${dbrootpwd}\";"
+  ${percona_install_dir}/bin/mysql -uroot -hlocalhost -e "grant all privileges on *.* to root@'127.0.0.1' with grant option;"
+  ${percona_install_dir}/bin/mysql -uroot -hlocalhost -e "grant all privileges on *.* to root@'localhost' with grant option;"
+  ${percona_install_dir}/bin/mysql -uroot -hlocalhost -e "alter user root@'localhost' identified by \"${dbrootpwd}\";"
+  ${percona_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "reset master;"
   rm -rf /etc/ld.so.conf.d/{mysql,mariadb,percona,alisql}*.conf
-  echo "${mariadb_install_dir}/lib" > /etc/ld.so.conf.d/z-mariadb.conf
+  [ -e "${percona_install_dir}/my.cnf" ] && rm -f ${percona_install_dir}/my.cnf
+  echo "${percona_install_dir}/lib" > /etc/ld.so.conf.d/z-percona.conf
   ldconfig
   service mysqld stop
 }

+ 1 - 1
include/php-5.3.sh

@@ -206,7 +206,7 @@ request_terminate_timeout = 120
 request_slowlog_timeout = 0
 
 pm.status_path = /php-fpm_status
-slowlog = log/slow.log
+slowlog = var/log/slow.log
 rlimit_files = 51200
 rlimit_core = 0
 

+ 1 - 1
include/php-5.4.sh

@@ -201,7 +201,7 @@ request_terminate_timeout = 120
 request_slowlog_timeout = 0
 
 pm.status_path = /php-fpm_status
-slowlog = log/slow.log
+slowlog = var/log/slow.log
 rlimit_files = 51200
 rlimit_core = 0
 

+ 1 - 1
include/php-5.5.sh

@@ -214,7 +214,7 @@ request_terminate_timeout = 120
 request_slowlog_timeout = 0
 
 pm.status_path = /php-fpm_status
-slowlog = log/slow.log
+slowlog = var/log/slow.log
 rlimit_files = 51200
 rlimit_core = 0
 

+ 1 - 1
include/php-5.6.sh

@@ -217,7 +217,7 @@ request_terminate_timeout = 120
 request_slowlog_timeout = 0
 
 pm.status_path = /php-fpm_status
-slowlog = log/slow.log
+slowlog = var/log/slow.log
 rlimit_files = 51200
 rlimit_core = 0
 

+ 1 - 1
include/php-7.0.sh

@@ -223,7 +223,7 @@ request_terminate_timeout = 120
 request_slowlog_timeout = 0
 
 pm.status_path = /php-fpm_status
-slowlog = log/slow.log
+slowlog = var/log/slow.log
 rlimit_files = 51200
 rlimit_core = 0
 

+ 1 - 1
include/php-7.1.sh

@@ -223,7 +223,7 @@ request_terminate_timeout = 120
 request_slowlog_timeout = 0
 
 pm.status_path = /php-fpm_status
-slowlog = log/slow.log
+slowlog = var/log/slow.log
 rlimit_files = 51200
 rlimit_core = 0
 

+ 1 - 1
include/php-7.2.sh

@@ -216,7 +216,7 @@ request_terminate_timeout = 120
 request_slowlog_timeout = 0
 
 pm.status_path = /php-fpm_status
-slowlog = log/slow.log
+slowlog = var/log/slow.log
 rlimit_files = 51200
 rlimit_core = 0
 

+ 1 - 1
include/php-7.3.sh

@@ -216,7 +216,7 @@ request_terminate_timeout = 120
 request_slowlog_timeout = 0
 
 pm.status_path = /php-fpm_status
-slowlog = log/slow.log
+slowlog = var/log/slow.log
 rlimit_files = 51200
 rlimit_core = 0
 

+ 47 - 76
include/upgrade_db.sh

@@ -11,25 +11,10 @@
 Upgrade_DB() {
   pushd ${oneinstack_dir}/src > /dev/null
   [ ! -e "${db_install_dir}/bin/mysql" ] && echo "${CWARNING}MySQL/MariaDB/Percona is not installed on your system! ${CEND}" && exit 1
-  OLD_db_ver_tmp=`${db_install_dir}/bin/mysql -V | awk '{print $5}' | awk -F, '{print $1}'`
-  [ -n "`echo ${OLD_db_ver_tmp} | grep glibc`" ] && OLD_db_ver_tmp=`${db_install_dir}/bin/mysql -V | awk '{print $3}' | awk -F, '{print $1}'`
-  DB_tmp=`echo ${OLD_db_ver_tmp} | awk -F'-' '{print $2}'`
-  if [ "${DB_tmp}" == 'MariaDB' ]; then
-    [ "${IPADDR_COUNTRY}"x == "CN"x ] && DOWN_ADDR=https://mirrors.tuna.tsinghua.edu.cn/mariadb || DOWN_ADDR=https://downloads.mariadb.org/f
-    DB=MariaDB
-    OLD_db_ver=`echo ${OLD_db_ver_tmp} | awk -F'-' '{print $1}'`
-  elif [ -n "${DB_tmp}" -a "${DB_tmp}" != 'MariaDB' ]; then
-    DB=Percona
-    OLD_db_ver=${OLD_db_ver_tmp}
-  else
-    [ "${IPADDR_COUNTRY}"x == "CN"x ] && DOWN_ADDR=http://mirrors.ustc.edu.cn/mysql-ftp/Downloads || DOWN_ADDR=http://cdn.mysql.com/Downloads
-    DB=MySQL
-    OLD_db_ver=${OLD_db_ver_tmp}
-  fi
 
-  #backup
+  # check db passwd
   while :; do
-    ${db_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "quit" >/dev/null 2>&1
+    ${db_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "quit" > /dev/null 2>&1
     if [ $? -eq 0 ]; then
       break
     else
@@ -46,6 +31,21 @@ Upgrade_DB() {
     fi
   done
 
+  OLD_db_ver_tmp=`${db_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e 'select version()\G;' | grep version | awk '{print $2}'`
+  if [ -n "`${db_install_dir}/bin/mysql -V | grep -o MariaDB`" ]; then
+    [ "${IPADDR_COUNTRY}"x == "CN"x ] && DOWN_ADDR=https://mirrors.tuna.tsinghua.edu.cn/mariadb || DOWN_ADDR=https://downloads.mariadb.org/f
+    DB=MariaDB
+    OLD_db_ver=`echo ${OLD_db_ver_tmp} | awk -F'-' '{print $1}'`
+  elif [ -n "`${db_install_dir}/bin/mysql -V | grep -o Percona`" ]; then
+    DB=Percona
+    OLD_db_ver=${OLD_db_ver_tmp}
+  else
+    [ "${IPADDR_COUNTRY}"x == "CN"x ] && DOWN_ADDR=http://mirrors.ustc.edu.cn/mysql-ftp/Downloads || DOWN_ADDR=http://cdn.mysql.com/Downloads
+    DB=MySQL
+    OLD_db_ver=${OLD_db_ver_tmp}
+  fi
+
+  #backup
   echo
   echo "${CSUCCESS}Starting ${DB} backup${CEND}......"
   ${db_install_dir}/bin/mysqldump -uroot -p${dbrootpwd} --opt --all-databases > DB_all_backup_$(date +"%Y%m%d").sql
@@ -58,22 +58,27 @@ Upgrade_DB() {
     [ "${db_flag}" != 'y' ] && read -e -p "Please input upgrade ${DB} Version(example: ${OLD_db_ver}): " NEW_db_ver
     if [ `echo ${NEW_db_ver} | awk -F. '{print $1"."$2}'` == `echo ${OLD_db_ver} | awk -F. '{print $1"."$2}'` ]; then
       if [ "${DB}" == 'MariaDB' ]; then
-        DB_name=mariadb-${NEW_db_ver}-${GLIBC_FLAG}-${SYS_BIT_b}
-        DB_URL=${DOWN_ADDR}/mariadb-${NEW_db_ver}/bintar-${GLIBC_FLAG}-${SYS_BIT_a}/${DB_name}.tar.gz
+        DB_filename=mariadb-${NEW_db_ver}-${GLIBC_FLAG}-${SYS_BIT_b}
+        DB_URL=${DOWN_ADDR}/mariadb-${NEW_db_ver}/bintar-${GLIBC_FLAG}-${SYS_BIT_a}/${DB_filename}.tar.gz
       elif [ "${DB}" == 'Percona' ]; then
-        DB_name=percona-server-${NEW_db_ver}
-        DB_URL=http://www.percona.com/redir/downloads/Percona-Server-`echo ${NEW_db_ver} | awk -F. '{print $1"."$2}'`/LATEST/source/tarball/${DB_name}.tar.gz
+        if [[ "`echo ${NEW_db_ver} | awk -F. '{print $1"."$2}'`" =~ ^5.[5-6]$ ]]; then
+          perconaVerStr1=$(echo ${NEW_db_ver} | sed "s@-@-rel@")
+        else
+          perconaVerStr1=${NEW_db_ver}
+        fi
+        DB_filename=Percona-Server-${perconaVerStr1}-Linux.${SYS_BIT_b}.${sslLibVer}
+        DB_URL=https://www.percona.com/downloads/Percona-Server-`echo ${NEW_db_ver} | awk -F. '{print $1"."$2}'`/Percona-Server-${NEW_db_ver}/binary/tarball/${DB_filename}.tar.gz
       elif [ "${DB}" == 'MySQL' ]; then
-        DB_name=mysql-${NEW_db_ver}-linux-glibc2.12-${SYS_BIT_b}
+        DB_filename=mysql-${NEW_db_ver}-linux-glibc2.12-${SYS_BIT_b}
         if [ `echo ${OLD_db_ver} | awk -F. '{print $1"."$2}'` == '8.0' ]; then
-          DB_URL=${DOWN_ADDR}/MySQL-`echo ${NEW_db_ver} | awk -F. '{print $1"."$2}'`/${DB_name}.tar.xz
+          DB_URL=${DOWN_ADDR}/MySQL-`echo ${NEW_db_ver} | awk -F. '{print $1"."$2}'`/${DB_filename}.tar.xz
         else
-          DB_URL=${DOWN_ADDR}/MySQL-`echo ${NEW_db_ver} | awk -F. '{print $1"."$2}'`/${DB_name}.tar.gz
+          DB_URL=${DOWN_ADDR}/MySQL-`echo ${NEW_db_ver} | awk -F. '{print $1"."$2}'`/${DB_filename}.tar.gz
         fi
       fi
-      [ ! -e "`ls ${DB_name}.tar.?z 2>/dev/null`" ] && wget --no-check-certificate -c ${DB_URL} > /dev/null 2>&1
-      if [ -e "`ls ${DB_name}.tar.?z 2>/dev/null`" ]; then
-        echo "Download [${CMSG}`ls ${DB_name}.tar.?z 2>/dev/null`${CEND}] successfully! "
+      [ ! -e "`ls ${DB_filename}.tar.?z 2>/dev/null`" ] && wget --no-check-certificate -c ${DB_URL} > /dev/null 2>&1
+      if [ -e "`ls ${DB_filename}.tar.?z 2>/dev/null`" ]; then
+        echo "Download [${CMSG}`ls ${DB_filename}.tar.?z 2>/dev/null`${CEND}] successfully! "
       else
         echo "${CWARNING}${DB} version does not exist! ${CEND}"
       fi
@@ -83,20 +88,20 @@ Upgrade_DB() {
     fi
   done
 
-  if [ -e "`ls ${DB_name}.tar.?z 2>/dev/null`" ]; then
-    echo "[${CMSG}`ls ${DB_name}.tar.?z 2>/dev/null`${CEND}] found"
+  if [ -e "`ls ${DB_filename}.tar.?z 2>/dev/null`" ]; then
+    echo "[${CMSG}`ls ${DB_filename}.tar.?z 2>/dev/null`${CEND}] found"
     if [ "${db_flag}" != 'y' ]; then
       echo "Press Ctrl+c to cancel or Press any key to continue..."
       char=`get_char`
     fi
     if [ "${DB}" == 'MariaDB' ]; then
+      tar xzf ${DB_filename}.tar.gz
       service mysqld stop
       mv ${mariadb_install_dir}{,_old_`date +"%Y%m%d_%H%M%S"`}
       mv ${mariadb_data_dir}{,_old_`date +"%Y%m%d_%H%M%S"`}
-      mkdir -p ${mariadb_data_dir};chown mysql.mysql -R ${mariadb_data_dir}
-      tar xzf ${DB_name}.tar.gz
       [ ! -d "${mariadb_install_dir}" ] && mkdir -p ${mariadb_install_dir}
-      mv mariadb-${NEW_db_ver}-*-${SYS_BIT_b}/* ${mariadb_install_dir}
+      mkdir -p ${mariadb_data_dir};chown mysql.mysql -R ${mariadb_data_dir}
+      mv ${DB_filename}/* ${mariadb_install_dir}/
       sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libjemalloc.so@' ${mariadb_install_dir}/bin/mysqld_safe
       ${mariadb_install_dir}/scripts/mysql_install_db --user=mysql --basedir=${mariadb_install_dir} --datadir=${mariadb_data_dir}
       chown mysql.mysql -R ${mariadb_data_dir}
@@ -107,53 +112,19 @@ Upgrade_DB() {
       ${mariadb_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "reset master;" >/dev/null 2>&1
       [ $? -eq 0 ] &&  echo "You have ${CMSG}successfully${CEND} upgrade from ${CMSG}${OLD_db_ver}${CEND} to ${CMSG}${NEW_db_ver}${CEND}"
     elif [ "${DB}" == 'Percona' ]; then
-      tar xzf ${DB_name}.tar.gz
-      pushd ${DB_name}
-      make clean
-      if [ "`echo ${NEW_db_ver} | awk -F. '{print $1"."$2}'`" == '5.5' ]; then
-        cmake . -DCMAKE_INSTALL_PREFIX=${percona_install_dir} \
-        -DMYSQL_DATADIR=${percona_data_dir} \
-        -DSYSCONFDIR=/etc \
-        -DWITH_INNOBASE_STORAGE_ENGINE=1 \
-        -DWITH_PARTITION_STORAGE_ENGINE=1 \
-        -DWITH_FEDERATED_STORAGE_ENGINE=1 \
-        -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-        -DWITH_MYISAM_STORAGE_ENGINE=1 \
-        -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-        -DWITH_READLINE=1 \
-        -DENABLE_DTRACE=0 \
-        -DENABLED_LOCAL_INFILE=1 \
-        -DDEFAULT_CHARSET=utf8mb4 \
-        -DDEFAULT_COLLATION=utf8mb4_general_ci \
-        -DCMAKE_EXE_LINKER_FLAGS='-ljemalloc'
-      else
-        cmake . -DCMAKE_INSTALL_PREFIX=${percona_install_dir} \
-        -DMYSQL_DATADIR=${percona_data_dir} \
-        -DSYSCONFDIR=/etc \
-        -DWITH_INNOBASE_STORAGE_ENGINE=1 \
-        -DWITH_PARTITION_STORAGE_ENGINE=1 \
-        -DWITH_FEDERATED_STORAGE_ENGINE=1 \
-        -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-        -DWITH_MYISAM_STORAGE_ENGINE=1 \
-        -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-        -DENABLED_LOCAL_INFILE=1 \
-        -DENABLE_DTRACE=0 \
-        -DDEFAULT_CHARSET=utf8mb4 \
-        -DDEFAULT_COLLATION=utf8mb4_general_ci \
-        -DCMAKE_EXE_LINKER_FLAGS='-ljemalloc'
-      fi
-      make -j ${THREAD}
+      tar xzf ${DB_filename}.tar.gz
       service mysqld stop
       mv ${percona_install_dir}{,_old_`date +"%Y%m%d_%H%M%S"`}
       mv ${percona_data_dir}{,_old_`date +"%Y%m%d_%H%M%S"`}
       [ ! -d "${percona_install_dir}" ] && mkdir -p ${percona_install_dir}
       mkdir -p ${percona_data_dir};chown mysql.mysql -R ${percona_data_dir}
-      make install
-      popd
-      if [ "`echo ${NEW_db_ver} | awk -F. '{print $1"."$2}'`" == '5.7' ]; then
-        ${percona_install_dir}/bin/mysqld --initialize-insecure --user=mysql --basedir=${percona_install_dir} --datadir=${percona_data_dir}
-      else
+      mv ${DB_filename}/* ${percona_install_dir}/
+      sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libjemalloc.so@' ${percona_install_dir}/bin/mysqld_safe
+      sed -i "s@/usr/local/${DB_filename}@${percona_install_dir}@g" ${percona_install_dir}/bin/mysqld_safe
+      if [[ "`echo ${NEW_db_ver} | awk -F. '{print $1"."$2}'`" =~ ^5.[5-6]$ ]]; then
         ${percona_install_dir}/scripts/mysql_install_db --user=mysql --basedir=${percona_install_dir} --datadir=${percona_data_dir}
+      else
+        ${percona_install_dir}/bin/mysqld --initialize-insecure --user=mysql --basedir=${percona_install_dir} --datadir=${percona_data_dir}
       fi
       chown mysql.mysql -R ${percona_data_dir}
       service mysqld start
@@ -164,16 +135,16 @@ Upgrade_DB() {
       [ $? -eq 0 ] &&  echo "You have ${CMSG}successfully${CEND} upgrade from ${CMSG}${OLD_db_ver}${CEND} to ${CMSG}${NEW_db_ver}${CEND}"
     elif [ "${DB}" == 'MySQL' ]; then
       if [ `echo ${OLD_db_ver} | awk -F. '{print $1"."$2}'` == '8.0' ]; then
-        tar xJf ${DB_name}.tar.xz
+        tar xJf ${DB_filename}.tar.xz
       else
-        tar xzf ${DB_name}.tar.gz
+        tar xzf ${DB_filename}.tar.gz
       fi
       service mysqld stop
       mv ${mysql_install_dir}{,_old_`date +"%Y%m%d_%H%M%S"`}
       mv ${mysql_data_dir}{,_old_`date +"%Y%m%d_%H%M%S"`}
       [ ! -d "${mysql_install_dir}" ] && mkdir -p ${mysql_install_dir}
       mkdir -p ${mysql_data_dir};chown mysql.mysql -R ${mysql_data_dir}
-      mv ${DB_name}/* ${mysql_install_dir}/
+      mv ${DB_filename}/* ${mysql_install_dir}/
       sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libjemalloc.so@' ${mysql_install_dir}/bin/mysqld_safe
       sed -i "s@/usr/local/mysql@${mysql_install_dir}@g" ${mysql_install_dir}/bin/mysqld_safe
       if [[ "`echo ${NEW_db_ver} | awk -F. '{print $1"."$2}'`" =~ ^5.[5-6]$ ]]; then

+ 36 - 26
install.sh

@@ -48,12 +48,12 @@ Show_Help() {
   --nginx_option [1-3]        Install Nginx server version
   --apache_option [1-2]       Install Apache server version
   --apache_mode_option [1-2]  Apache2.4 mode, 1(default): php-fpm, 2: mod_php
-  --apache_mpm_option [1-3]   Apache2.4 MPM, 1(default): event, 2: prefork, 3: worker 
+  --apache_mpm_option [1-3]   Apache2.4 MPM, 1(default): event, 2: prefork, 3: worker
   --php_option [1-8]          Install PHP version
   --php_vn [53~73]            Install another version of php in OneinStack
   --phpcache_option [1-4]     Install PHP opcode cache, default: 1 opcache
   --php_extensions [ext name] Install PHP extensions, include zendguardloader,ioncube,
-                              sourceguardian,imagick,gmagick,fileinfo,imap,phalcon,
+                              sourceguardian,imagick,gmagick,fileinfo,imap,ldap,phalcon,
                               redis,memcached,memcache,mongodb,swoole,xdebug
   --tomcat_option [1-4]       Install Tomcat version
   --jdk_option [1-4]          Install JDK version
@@ -126,6 +126,7 @@ while :; do
       [ -n "`echo ${php_extensions} | grep -w gmagick`" ] && pecl_gmagick=1
       [ -n "`echo ${php_extensions} | grep -w fileinfo`" ] && pecl_fileinfo=1
       [ -n "`echo ${php_extensions} | grep -w imap`" ] && pecl_imap=1
+      [ -n "`echo ${php_extensions} | grep -w ldap`" ] && pecl_ldap=1
       [ -n "`echo ${php_extensions} | grep -w phalcon`" ] && pecl_phalcon=1
       [ -n "`echo ${php_extensions} | grep -w redis`" ] && pecl_redis=1
       [ -n "`echo ${php_extensions} | grep -w memcached`" ] && pecl_memcached=1
@@ -406,7 +407,7 @@ if [ ${ARG_NUM} == 0 ]; then
           echo -e "\t${CMSG} 6${CEND}. Install MariaDB-10.2"
           echo -e "\t${CMSG} 7${CEND}. Install MariaDB-10.1"
           echo -e "\t${CMSG} 8${CEND}. Install MariaDB-10.0"
-          echo -e "\t${CMSG} 9${CEND}. Install MariaDB-5.5"
+          echo -e "\t${CMSG} 9${CEND}. Install Percona-8.0"
           echo -e "\t${CMSG}10${CEND}. Install Percona-5.7"
           echo -e "\t${CMSG}11${CEND}. Install Percona-5.6"
           echo -e "\t${CMSG}12${CEND}. Install Percona-5.5"
@@ -415,7 +416,7 @@ if [ ${ARG_NUM} == 0 ]; then
           echo -e "\t${CMSG}15${CEND}. Install MongoDB"
           read -e -p "Please input a number:(Default 2 press Enter) " db_option
           db_option=${db_option:-2}
-          [[ "${db_option}" =~ ^5$|^15$ ]] && [ "${OS_BIT}" == '32' ] && { echo "${CWARNING}By not supporting 32-bit! ${CEND}"; continue; }
+          [[ "${db_option}" =~ ^[1,5,9]$|^15$ ]] && [ "${OS_BIT}" == '32' ] && { echo "${CWARNING}By not supporting 32-bit! ${CEND}"; continue; }
           if [[ "${db_option}" =~ ^[1-9]$|^1[0-5]$ ]]; then
             if [ "${db_option}" == '14' ]; then
               [ -e "${pgsql_install_dir}/bin/psql" ] && { echo "${CWARNING}PostgreSQL already installed! ${CEND}"; unset db_option; break; }
@@ -460,7 +461,7 @@ if [ ${ARG_NUM} == 0 ]; then
                 if [[ ! ${dbinstallmethod} =~ ^[1-2]$ ]]; then
                   echo "${CWARNING}input error! Please only input number 1~2${CEND}"
                 else
-                  [ "${db_option}" == '5' -a "${LIBC_YN}" != '0' -a "$dbinstallmethod" == '1' ] && { echo "${CWARNING}MariaDB-10.3 binaries require GLIBC 2.14 or higher! ${CEND}"; continue; }
+                  [ "${db_option}" == '5' -a "${LIBC_YN}" != '0' -a "${dbinstallmethod}" == '1' ] && { echo "${CWARNING}MariaDB-10.3 binaries require GLIBC 2.14 or higher! ${CEND}"; continue; }
                   break
                 fi
               done
@@ -619,25 +620,26 @@ if [ ${ARG_NUM} == 0 ]; then
       echo -e "\t${CMSG} 5${CEND}. Install gmagick"
       echo -e "\t${CMSG} 6${CEND}. Install fileinfo"
       echo -e "\t${CMSG} 7${CEND}. Install imap"
-      echo -e "\t${CMSG} 8${CEND}. Install phalcon(PHP>=5.5)"
-      echo -e "\t${CMSG} 9${CEND}. Install redis"
-      echo -e "\t${CMSG}10${CEND}. Install memcached"
-      echo -e "\t${CMSG}11${CEND}. Install memcache(PHP<=7.2)"
-      echo -e "\t${CMSG}12${CEND}. Install mongodb"
-      echo -e "\t${CMSG}13${CEND}. Install swoole"
-      echo -e "\t${CMSG}14${CEND}. Install xdebug(PHP>=5.5)"
-      read -e -p "Please input numbers:(Default '4 9 10 11' press Enter) " phpext_option
-      phpext_option=${phpext_option:-'4 9 10 11'}
+      echo -e "\t${CMSG} 8${CEND}. Install ldap"
+      echo -e "\t${CMSG} 9${CEND}. Install phalcon(PHP>=5.5)"
+      echo -e "\t${CMSG}10${CEND}. Install redis"
+      echo -e "\t${CMSG}11${CEND}. Install memcached"
+      echo -e "\t${CMSG}12${CEND}. Install memcache(PHP<=7.2)"
+      echo -e "\t${CMSG}13${CEND}. Install mongodb"
+      echo -e "\t${CMSG}14${CEND}. Install swoole"
+      echo -e "\t${CMSG}15${CEND}. Install xdebug(PHP>=5.5)"
+      read -e -p "Please input numbers:(Default '4 10 11' press Enter) " phpext_option
+      phpext_option=${phpext_option:-'4 10 11'}
       [ "${phpext_option}" == '0' ] && break
       array_phpext=(${phpext_option})
-      array_all=(1 2 3 4 5 6 7 8 9 10 11 12 13 14)
+      array_all=(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)
       for v in ${array_phpext[@]}
       do
         [ -z "`echo ${array_all[@]} | grep -w ${v}`" ] && phpext_flag=1
       done
       if [ "${phpext_flag}" == '1' ]; then
         unset phpext_flag
-        echo; echo "${CWARNING}input error! Please only input number 4 9 10 11 and so on${CEND}"; echo
+        echo; echo "${CWARNING}input error! Please only input number 4 10 11 and so on${CEND}"; echo
         continue
       else
         [ -n "`echo ${array_phpext[@]} | grep -w 1`" ] && pecl_zendguardloader=1
@@ -647,13 +649,14 @@ if [ ${ARG_NUM} == 0 ]; then
         [ -n "`echo ${array_phpext[@]} | grep -w 5`" ] && pecl_gmagick=1
         [ -n "`echo ${array_phpext[@]} | grep -w 6`" ] && pecl_fileinfo=1
         [ -n "`echo ${array_phpext[@]} | grep -w 7`" ] && pecl_imap=1
-        [ -n "`echo ${array_phpext[@]} | grep -w 8`" ] && pecl_phalcon=1
-        [ -n "`echo ${array_phpext[@]} | grep -w 9`" ] && pecl_redis=1
-        [ -n "`echo ${array_phpext[@]} | grep -w 10`" ] && pecl_memcached=1
-        [ -n "`echo ${array_phpext[@]} | grep -w 11`" ] && pecl_memcache=1
-        [ -n "`echo ${array_phpext[@]} | grep -w 12`" ] && pecl_mongodb=1
-        [ -n "`echo ${array_phpext[@]} | grep -w 13`" ] && pecl_swoole=1
-        [ -n "`echo ${array_phpext[@]} | grep -w 14`" ] && pecl_xdebug=1
+        [ -n "`echo ${array_phpext[@]} | grep -w 8`" ] && pecl_ldap=1
+        [ -n "`echo ${array_phpext[@]} | grep -w 9`" ] && pecl_phalcon=1
+        [ -n "`echo ${array_phpext[@]} | grep -w 10`" ] && pecl_redis=1
+        [ -n "`echo ${array_phpext[@]} | grep -w 11`" ] && pecl_memcached=1
+        [ -n "`echo ${array_phpext[@]} | grep -w 12`" ] && pecl_memcache=1
+        [ -n "`echo ${array_phpext[@]} | grep -w 13`" ] && pecl_mongodb=1
+        [ -n "`echo ${array_phpext[@]} | grep -w 14`" ] && pecl_swoole=1
+        [ -n "`echo ${array_phpext[@]} | grep -w 15`" ] && pecl_xdebug=1
         break
       fi
     done
@@ -731,7 +734,7 @@ fi
 if [ ! -e ~/.oneinstack ]; then
   [ "${PM}" == 'apt-get' ] && apt-get -y update
   [ "${PM}" == 'yum' ] && yum clean all
-  ${PM} -y -q install wget gcc curl python
+  ${PM} -y install wget gcc curl python
 fi
 
 # get the IP information
@@ -824,8 +827,9 @@ case "${db_option}" in
     Install_MariaDB100 2>&1 | tee -a ${oneinstack_dir}/install.log
     ;;
   9)
-    . include/mariadb-5.5.sh
-    Install_MariaDB55 2>&1 | tee -a ${oneinstack_dir}/install.log
+    [ "${OS}" == 'CentOS' -a "${CentOS_ver}" != '7' ] && dbinstallmethod=1
+    . include/percona-8.0.sh
+    Install_Percona80 2>&1 | tee -a ${oneinstack_dir}/install.log
     ;;
   10)
     . include/percona-5.7.sh
@@ -978,6 +982,12 @@ if [ "${pecl_imap}" == '1' ]; then
   Install_pecl_imap 2>&1 | tee -a ${oneinstack_dir}/install.log
 fi
 
+# ldap
+if [ "${pecl_ldap}" == '1' ]; then
+  . include/pecl_ldap.sh
+  Install_pecl_ldap 2>&1 | tee -a ${oneinstack_dir}/install.log
+fi
+
 # phalcon
 if [ "${pecl_phalcon}" == '1' ]; then
   . include/pecl_phalcon.sh

+ 8 - 1
uninstall.sh

@@ -40,7 +40,7 @@ Show_Help() {
   --php                         Uninstall PHP
   --phpcache                    Uninstall PHP opcode cache
   --php_extensions [ext name]   Uninstall PHP extensions, include zendguardloader,ioncube,
-                                sourceguardian,imagick,gmagick,fileinfo,imap,phalcon,
+                                sourceguardian,imagick,gmagick,fileinfo,imap,ldap,phalcon,
                                 redis,memcached,memcache,mongodb,swoole,xdebug
   --hhvm                        Uninstall HHVM
   --pureftpd                    Uninstall PureFtpd
@@ -108,6 +108,7 @@ while :; do
       [ -n "`echo ${php_extensions} | grep -w gmagick`" ] && pecl_gmagick=1
       [ -n "`echo ${php_extensions} | grep -w fileinfo`" ] && pecl_fileinfo=1
       [ -n "`echo ${php_extensions} | grep -w imap`" ] && pecl_imap=1
+      [ -n "`echo ${php_extensions} | grep -w ldap`" ] && pecl_ldap=1
       [ -n "`echo ${php_extensions} | grep -w phalcon`" ] && pecl_phalcon=1
       [ -n "`echo ${php_extensions} | grep -w redis`" ] && pecl_redis=1
       [ -n "`echo ${php_extensions} | grep -w memcached`" ] && pecl_memcached=1
@@ -337,6 +338,12 @@ Uninstall_PHPext() {
     Uninstall_pecl_imap
   fi
 
+  # ldap 
+  if [ "${pecl_ldap}" == '1' ]; then
+    . include/pecl_ldap.sh
+    Uninstall_pecl_ldap
+  fi
+
   # phalcon
   if [ "${pecl_phalcon}" == '1' ]; then
     . include/pecl_phalcon.sh

+ 2 - 1
versions.txt

@@ -30,6 +30,7 @@ mariadb101_ver=10.1.37
 mariadb100_ver=10.0.37
 mariadb55_ver=5.5.62
 
+percona80_ver=8.0.13-4
 percona57_ver=5.7.24-27
 percona56_ver=5.6.42-84.2
 percona55_ver=5.5.62-38.14
@@ -63,7 +64,7 @@ mcrypt_ver=2.6.8
 mhash_ver=0.9.9.9
 libsodium_ver=1.0.17
 argon2_ver=20171227
-imagemagick_ver=6.9.10-23
+imagemagick_ver=6.9.10-24
 imagick_ver=3.4.3
 graphicsmagick_ver=1.3.30
 gmagick_ver=2.0.5RC1