Browse Source

Download sources code first and Support install databases by source code

lj2007331 8 years ago
parent
commit
68d3023af7
51 changed files with 1696 additions and 949 deletions
  1. 0 4
      include/GraphicsMagick.sh
  2. 2 6
      include/ImageMagick.sh
  3. 2 11
      include/ZendGuardLoader.sh
  4. 0 2
      include/apache-2.2.sh
  5. 0 4
      include/apache-2.4.sh
  6. 0 2
      include/apcu.sh
  7. 33 0
      include/boost.sh
  8. 646 0
      include/check_download.sh
  9. 36 17
      include/check_os.sh
  10. 1 1
      include/color.sh
  11. 2 4
      include/eaccelerator-0.9.sh
  12. 0 2
      include/eaccelerator-1.0-dev.sh
  13. 6 9
      include/init_CentOS.sh
  14. 3 4
      include/init_Ubuntu.sh
  15. 1 3
      include/ioncube.sh
  16. 0 6
      include/jdk-1.6.sh
  17. 0 1
      include/jdk-1.7.sh
  18. 0 1
      include/jdk-1.8.sh
  19. 0 2
      include/jemalloc.sh
  20. 100 81
      include/mariadb-10.0.sh
  21. 100 81
      include/mariadb-10.1.sh
  22. 105 81
      include/mariadb-5.5.sh
  23. 0 6
      include/memcached.sh
  24. 1 1
      include/memory.sh
  25. 103 95
      include/mysql-5.5.sh
  26. 100 95
      include/mysql-5.6.sh
  27. 96 91
      include/mysql-5.7.sh
  28. 0 3
      include/nginx.sh
  29. 0 3
      include/openresty.sh
  30. 106 81
      include/percona-5.5.sh
  31. 102 80
      include/percona-5.6.sh
  32. 99 93
      include/percona-5.7.sh
  33. 0 11
      include/php-5.3.sh
  34. 0 8
      include/php-5.4.sh
  35. 0 8
      include/php-5.5.sh
  36. 0 7
      include/php-5.6.sh
  37. 0 7
      include/php-7.sh
  38. 0 2
      include/phpmyadmin.sh
  39. 1 3
      include/pureftpd.sh
  40. 2 7
      include/redis.sh
  41. 0 1
      include/tcmalloc.sh
  42. 0 3
      include/tengine.sh
  43. 0 3
      include/tomcat-6.sh
  44. 0 3
      include/tomcat-7.sh
  45. 0 3
      include/tomcat-8.sh
  46. 1 1
      include/upgrade_db.sh
  47. 1 1
      include/upgrade_php.sh
  48. 1 4
      include/xcache.sh
  49. 1 4
      include/zendopcache.sh
  50. 33 3
      install.sh
  51. 12 0
      versions.txt

+ 0 - 4
include/GraphicsMagick.sh

@@ -10,8 +10,6 @@
 
 Install_GraphicsMagick() {
 cd $oneinstack_dir/src
-src_url=http://downloads.sourceforge.net/project/graphicsmagick/graphicsmagick/$GraphicsMagick_version/GraphicsMagick-$GraphicsMagick_version.tar.gz && Download_src
-
 tar xzf GraphicsMagick-$GraphicsMagick_version.tar.gz
 cd GraphicsMagick-$GraphicsMagick_version
 ./configure --prefix=/usr/local/graphicsmagick --enable-shared --enable-static
@@ -25,11 +23,9 @@ Install_php-gmagick() {
 cd $oneinstack_dir/src
 if [ -e "$php_install_dir/bin/phpize" ];then
     if [ "`$php_install_dir/bin/php -r 'echo PHP_VERSION;' | awk -F. '{print $1}'`" == '7' ];then
-        src_url=https://pecl.php.net/get/gmagick-2.0.4RC1.tgz && Download_src
         tar xzf gmagick-2.0.4RC1.tgz
         cd gmagick-2.0.4RC1
     else
-        src_url=http://pecl.php.net/get/gmagick-$gmagick_version.tgz && Download_src
         tar xzf gmagick-$gmagick_version.tgz
         cd gmagick-$gmagick_version
     fi

+ 2 - 6
include/ImageMagick.sh

@@ -10,8 +10,6 @@
 
 Install_ImageMagick() {
 cd $oneinstack_dir/src
-src_url=http://mirrors.linuxeye.com/oneinstack/src/ImageMagick-$ImageMagick_version.tar.gz && Download_src
-
 tar xzf ImageMagick-$ImageMagick_version.tar.gz
 cd ImageMagick-$ImageMagick_version
 ./configure --prefix=/usr/local/imagemagick --enable-shared --enable-static
@@ -25,11 +23,9 @@ Install_php-imagick() {
 cd $oneinstack_dir/src
 if [ -e "$php_install_dir/bin/phpize" ];then
     if [ "`$php_install_dir/bin/php -r 'echo PHP_VERSION;' | awk -F. '{print $1"."$2}'`" == '5.3' ];then
-        src_url=https://pecl.php.net/get/imagick-3.3.0.tgz && Download_src
-        tar xzf imagick-3.3.0.tgz
-        cd imagick-3.3.0
+        tar xzf imagick-${imagick_for_php53_version}.tgz
+        cd imagick-${imagick_for_php53_version}
     else
-        src_url=http://pecl.php.net/get/imagick-$imagick_version.tgz && Download_src
         tar xzf imagick-$imagick_version.tgz
         cd imagick-$imagick_version
     fi

+ 2 - 11
include/ZendGuardLoader.sh

@@ -8,66 +8,57 @@
 #       https://oneinstack.com
 #       https://github.com/lj2007331/oneinstack
 
-Install_ZendGuardLoader()
-{
+Install_ZendGuardLoader() {
 cd $oneinstack_dir/src
 
 PHP_version=`$php_install_dir/bin/php -r 'echo PHP_VERSION;'`
 PHP_main_version=${PHP_version%.*}
 
 [ ! -d "`$php_install_dir/bin/php-config --extension-dir`" ] && mkdir -p `$php_install_dir/bin/php-config --extension-dir`
-if [ "$OS_BIT" == '64' ] ;then
+if [ "$OS_BIT" == '64' ];then
     if [ "$PHP_main_version" == '5.6' ];then
-        src_url=http://mirrors.linuxeye.com/oneinstack/src/zend-loader-php5.6-linux-x86_64.tar.gz && Download_src
         tar xzf zend-loader-php5.6-linux-x86_64.tar.gz
         /bin/cp zend-loader-php5.6-linux-x86_64/ZendGuardLoader.so `$php_install_dir/bin/php-config --extension-dir`
         rm -rf zend-loader-php5.6-linux-x86_64
     fi
 
     if [ "$PHP_main_version" == '5.5' ];then
-        src_url=http://mirrors.linuxeye.com/oneinstack/src/zend-loader-php5.5-linux-x86_64.tar.gz && Download_src
         tar xzf zend-loader-php5.5-linux-x86_64.tar.gz
         /bin/cp zend-loader-php5.5-linux-x86_64/ZendGuardLoader.so `$php_install_dir/bin/php-config --extension-dir`
         rm -rf zend-loader-php5.5-linux-x86_64
     fi
 
     if [ "$PHP_main_version" == '5.4' ];then
-        src_url=http://mirrors.linuxeye.com/oneinstack/src/ZendGuardLoader-70429-PHP-5.4-linux-glibc23-x86_64.tar.gz && Download_src
         tar xzf ZendGuardLoader-70429-PHP-5.4-linux-glibc23-x86_64.tar.gz
         /bin/cp ZendGuardLoader-70429-PHP-5.4-linux-glibc23-x86_64/php-5.4.x/ZendGuardLoader.so `$php_install_dir/bin/php-config --extension-dir`
         rm -rf ZendGuardLoader-70429-PHP-5.4-linux-glibc23-x86_64
     fi
 
     if [ "$PHP_main_version" == '5.3' ];then
-        src_url=http://mirrors.linuxeye.com/oneinstack/src/ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz && Download_src
         tar xzf ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz
         /bin/cp ZendGuardLoader-php-5.3-linux-glibc23-x86_64/php-5.3.x/ZendGuardLoader.so `$php_install_dir/bin/php-config --extension-dir`
         rm -rf ZendGuardLoader-php-5.3-linux-glibc23-x86_64
     fi
 else
     if [ "$PHP_main_version" == '5.6' ];then
-        src_url=http://mirrors.linuxeye.com/oneinstack/src/zend-loader-php5.6-linux-i386.tar.gz && Download_src
         tar xzf zend-loader-php5.6-linux-i386.tar.gz
         /bin/cp zend-loader-php5.6-linux-i386/ZendGuardLoader.so `$php_install_dir/bin/php-config --extension-dir`
         rm -rf zend-loader-php5.6-linux-i386
     fi
 
     if [ "$PHP_main_version" == '5.5' ];then
-        src_url=http://mirrors.linuxeye.com/oneinstack/src/zend-loader-php5.5-linux-i386.tar.gz && Download_src
         tar xzf zend-loader-php5.5-linux-i386.tar.gz
         /bin/cp zend-loader-php5.5-linux-i386/ZendGuardLoader.so `$php_install_dir/bin/php-config --extension-dir`
         rm -rf zend-loader-php5.5-linux-x386
     fi
 
     if [ "$PHP_main_version" == '5.4' ];then
-        src_url=http://mirrors.linuxeye.com/oneinstack/src/ZendGuardLoader-70429-PHP-5.4-linux-glibc23-i386.tar.gz && Download_src
         tar xzf ZendGuardLoader-70429-PHP-5.4-linux-glibc23-i386.tar.gz
         /bin/cp ZendGuardLoader-70429-PHP-5.4-linux-glibc23-i386/php-5.4.x/ZendGuardLoader.so `$php_install_dir/bin/php-config --extension-dir`
         rm -rf ZendGuardLoader-70429-PHP-5.4-linux-glibc23-i386
     fi
 
     if [ "$PHP_main_version" == '5.3' ];then
-        src_url=http://mirrors.linuxeye.com/oneinstack/src/ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz && Download_src
         tar xzf ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz
         /bin/cp ZendGuardLoader-php-5.3-linux-glibc23-i386/php-5.3.x/ZendGuardLoader.so `$php_install_dir/bin/php-config --extension-dir`
         rm -rf ZendGuardLoader-php-5.3-linux-glibc23-i386

+ 0 - 2
include/apache-2.2.sh

@@ -10,7 +10,6 @@
 
 Install_Apache-2-2() {
 cd $oneinstack_dir/src
-src_url=http://mirrors.linuxeye.com/apache/httpd/httpd-$apache_2_version.tar.gz && Download_src
 
 id -u $run_user >/dev/null 2>&1
 [ $? -ne 0 ] && useradd -M -s /sbin/nologin $run_user
@@ -120,7 +119,6 @@ Include conf/vhost/*.conf
 EOF
 
 if [ "$Nginx_version" != '4' -o -e "$web_install_dir/sbin/nginx" ];then
-    src_url=http://mirrors.linuxeye.com/oneinstack/src/mod_remoteip.c && Download_src
     $apache_install_dir/bin/apxs -i -c -n mod_remoteip.so mod_remoteip.c
     cat > $apache_install_dir/conf/extra/httpd-remoteip.conf << EOF
 LoadModule remoteip_module modules/mod_remoteip.so

+ 0 - 4
include/apache-2.4.sh

@@ -10,10 +10,6 @@
 
 Install_Apache-2-4() {
 cd $oneinstack_dir/src
-src_url=http://mirrors.linuxeye.com/oneinstack/src/pcre-$pcre_version.tar.gz && Download_src
-src_url=http://archive.apache.org/dist/apr/apr-$apr_version.tar.gz && Download_src
-src_url=http://archive.apache.org/dist/apr/apr-util-$apr_util_version.tar.gz && Download_src
-src_url=http://mirrors.linuxeye.com/apache/httpd/httpd-$apache_4_version.tar.gz && Download_src
 
 tar xzf pcre-$pcre_version.tar.gz
 cd pcre-$pcre_version

+ 0 - 2
include/apcu.sh

@@ -10,8 +10,6 @@
 
 Install_APCU() {
 cd $oneinstack_dir/src
-src_url=http://pecl.php.net/get/apcu-$apcu_version.tgz && Download_src
-
 tar xzf apcu-$apcu_version.tgz
 cd apcu-$apcu_version
 make clean

+ 33 - 0
include/boost.sh

@@ -0,0 +1,33 @@
+#!/bin/bash
+# Author:  Alpha Eva <kaneawk AT gmail.com>
+#
+# Notes: OneinStack for CentOS/RadHat 5+ Debian 6+ and Ubuntu 12+
+#
+# Project home page:
+#       https://oneinstack.com
+#       https://github.com/lj2007331/oneinstack
+
+installBoost() {
+  pushd $oneinstack_dir/src
+
+  if [ ! -e "/usr/local/lib/libboost_system.so" ]; then
+    boostVersion2=$(echo $boost_version | awk -F. '{print $1}')_$(echo $boost_version | awk -F. '{print $2}')_$(echo $boost_version | awk -F. '{print $3}')
+    tar xvf boost_${boostVersion2}.tar.gz
+    pushd boost_${boostVersion2}
+    ./bootstrap.sh
+    ./bjam --prefix=/usr/local
+    ./b2 install
+    popd
+  fi
+  if [ -e "/usr/local/lib/libboost_system.so" ];then
+    echo "${CSUCCESS}Boost installed successfully! ${CEND}"
+    rm -rf boost_${boostVersion2}
+    echo '/usr/local/lib' > /etc/ld.so.conf.d/local.conf
+    ldconfig
+  else
+    rm -rf boost_${boostVersion2}
+    echo "${CFAILURE}Boost installed failed, Please contact the author! ${CEND}"
+  fi
+
+  popd
+}

+ 646 - 0
include/check_download.sh

@@ -0,0 +1,646 @@
+#!/bin/bash
+# Author:  Alpha Eva <kaneawk AT gmail.com>
+#
+# Notes: OneinStack for CentOS/RadHat 5+ Debian 6+ and Ubuntu 12+
+#
+# Project home page:
+#       https://oneinstack.com
+#       https://github.com/lj2007331/oneinstack
+
+checkDownload() {
+    mirrorLink=http://mirrors.linuxeye.com/oneinstack/src
+    pushd ${oneinstack_dir}/src
+    
+    # Web
+    if [ "${Web_yn}" == 'y' ];then
+        echo "Download openSSL..."
+        src_url=https://www.openssl.org/source/openssl-${openssl_version}.tar.gz && Download_src
+        if [ "${Nginx_version}" == "1" ];then
+            echo "Download nginx..."
+            src_url=http://nginx.org/download/nginx-${nginx_version}.tar.gz && Download_src
+        fi
+        if [ "${Nginx_version}" == "2" ];then
+            echo "Download tengine..."
+            src_url=http://tengine.taobao.org/download/tengine-${tengine_version}.tar.gz && Download_src
+        fi
+        if [ "${Nginx_version}" == "3" ];then
+            echo "Download openresty..."
+            src_url=https://openresty.org/download/openresty-${openresty_version}.tar.gz && Download_src
+        fi
+        
+        if [[ "${Nginx_version}" =~ ^[1-3]$ || ${Apache_version} == "1" ]];then
+            echo "Download pcre..."
+            src_url=${mirrorLink}/pcre-${pcre_version}.tar.gz && Download_src
+        fi
+        
+        # apache
+        if [ "${Apache_version}" == "1" ];then
+            echo "Download apache 2.4..."
+            src_url=http://archive.apache.org/dist/apr/apr-${apr_version}.tar.gz && Download_src
+            src_url=http://archive.apache.org/dist/apr/apr-util-${apr_util_version}.tar.gz && Download_src
+            src_url=http://mirrors.linuxeye.com/apache/httpd/httpd-${apache_4_version}.tar.gz && Download_src
+        fi
+        if [ "${Apache_version}" == "2" ];then
+            echo "Download apache 2.2..."
+            src_url=http://mirrors.linuxeye.com/apache/httpd/httpd-${apache_2_version}.tar.gz && Download_src
+            
+            echo "Download mod_remoteip.c for apache 2.2..."
+            src_url=${mirrorLink}/mod_remoteip.c && Download_src
+        fi
+        
+        # tomcat
+        if [ "${Tomcat_version}" == "1" ];then
+            echo "Download tomcat 8..."
+            src_url=http://mirrors.linuxeye.com/apache/tomcat/v${tomcat_8_version}/apache-tomcat-${tomcat_8_version}.tar.gz && Download_src
+            src_url=http://mirrors.linuxeye.com/apache/tomcat/v${tomcat_8_version}/catalina-jmx-remote.jar && Download_src
+        fi
+        if [ "${Tomcat_version}" == "2" ];then
+            echo "Download tomcat 7..."
+            src_url=http://mirrors.linuxeye.com/apache/tomcat/v${tomcat_7_version}/apache-tomcat-${tomcat_7_version}.tar.gz && Download_src
+            src_url=http://mirrors.linuxeye.com/apache/tomcat/v${tomcat_7_version}/catalina-jmx-remote.jar && Download_src
+        fi
+        if [ "${Tomcat_version}" == "3" ];then
+            echo "Download tomcat 6..."
+            src_url=http://mirrors.linuxeye.com/apache/tomcat/v${tomcat_6_version}/apache-tomcat-${tomcat_6_version}.tar.gz && Download_src
+            src_url=http://mirrors.linuxeye.com/apache/tomcat/v${tomcat_6_version}/catalina-jmx-remote.jar && Download_src
+        fi
+        
+        if [[ "${JDK_version}"  =~ ^[1-3]$ ]];then
+            if [ "${JDK_version}" == "1" ];then
+                 echo "Download jdk 1.8..."
+                 JDK_FILE="jdk-$(echo ${jdk_8_version} | awk -F. '{print $2}')u$(echo ${jdk_8_version} | awk -F_ '{print $NF}')-linux-${SYS_BIG_FLAG}.tar.gz"
+            fi
+            if [ "${JDK_version}" == "2" ];then
+                echo "Download jdk 1.7..."
+                JDK_FILE="jdk-$(echo ${jdk_7_version} | awk -F. '{print $2}')u$(echo ${jdk_7_version} | awk -F_ '{print $NF}')-linux-${SYS_BIG_FLAG}.tar.gz"
+            fi
+            if [ "${JDK_version}" == "3" ];then
+                echo "Download jdk 1.6..."
+                JDK_FILE="jdk-$(echo ${jdk_6_version} | awk -F. '{print $2}')u$(echo ${jdk_6_version} | awk -F_ '{print $NF}')-linux-${SYS_BIG_FLAG}.bin"
+            fi
+            src_url=http://mirrors.linuxeye.com/jdk/${JDK_FILE} && Download_src
+        fi
+    fi
+    
+    if [ "${DB_yn}" == "y" ];then
+        if [[ "${DB_version}" =~ ^[1,4,7]$ ]] && [ "${dbInstallMethods}" == "2" ];then
+            echo "Download boost..."
+            [ "${IPADDR_COUNTRY}"x == "CN"x ] && DOWN_ADDR_BOOST=${mirrorLink} || DOWN_ADDR_BOOST=http://downloads.sourceforge.net/project/boost/boost/${boost_version}
+            boostVersion2=$(echo ${boost_version} | awk -F. '{print $1}')_$(echo ${boost_version} | awk -F. '{print $2}')_$(echo ${boost_version} | awk -F. '{print $3}')
+            src_url=${DOWN_ADDR_BOOST}/boost_${boostVersion2}.tar.gz && Download_src
+        fi
+      
+        if [ "${DB_version}" == "1" ];then
+            # mysql 5.7
+            if [ "${IPADDR_COUNTRY}"x == "CN"x -a "${IPADDR_ISP}" == 'aliyun' -a "`../include/check_port.py aliyun-oss.linuxeye.com 80`" == 'True' ];then
+                DOWN_ADDR_MYSQL=http://aliyun-oss.linuxeye.com/mysql/MySQL-5.7
+            else
+                if [ "${IPADDR_COUNTRY}"x == "CN"x ];then
+                    if [ "$(../include/check_port.py mirrors.tuna.tsinghua.edu.cn 443)" == 'True' ];then
+                        DOWN_ADDR_MYSQL=https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.7
+                    else
+                        DOWN_ADDR_MYSQL=http://mirrors.sohu.com/mysql/MySQL-5.6
+                        DOWN_ADDR_MYSQL_BK=${DOWN_ADDR_MYSQL}
+                    fi
+                else
+                    if [ "$(../include/check_port.py cdn.mysql.com 80)" == 'True' ];then
+                        DOWN_ADDR_MYSQL=http://cdn.mysql.com/Downloads/MySQL-5.7
+                    else
+                        DOWN_ADDR_MYSQL=http://mysql.he.net/Downloads/MySQL-5.7
+                        DOWN_ADDR_MYSQL_BK=${DOWN_ADDR_MYSQL}
+                    fi
+                fi
+            fi
+            if [ "${dbInstallMethods}" == "1" ];then
+                echo "Download mysql 5.7 binary package..."
+                FILE_NAME=mysql-${mysql_5_7_version}-linux-glibc2.5-${SYS_BIT_b}.tar.gz
+            elif [ "${dbInstallMethods}" == "2" ];then
+                echo "Download mysql 5.7 source package..."
+                FILE_NAME=mysql-${mysql_5_7_version}.tar.gz
+            fi
+            wget --tries=6 -c --no-check-certificate ${DOWN_ADDR_MYSQL}/${FILE_NAME}
+            wget --tries=6 -c --no-check-certificate ${DOWN_ADDR_MYSQL}/${FILE_NAME}.md5
+            MYSQL_TAR_MD5=$(awk '{print $1}' ${FILE_NAME}.md5)
+            while [ "$(md5sum ${FILE_NAME} | awk '{print $1}')" != "${MYSQL_TAR_MD5}" ];do
+                wget -4c --no-check-certificate ${DOWN_ADDR_MYSQL_BK}/${FILE_NAME};sleep 1
+                [ "$(md5sum ${FILE_NAME} | awk '{print $1}')" == "${MYSQL_TAR_MD5}" ] && break || continue
+            done
+        fi
+      
+        if [ "${DB_version}" == "2" ];then
+            # mysql 5.6
+            if [ "${IPADDR_COUNTRY}"x == "CN"x -a "${IPADDR_ISP}" == 'aliyun' -a "$(../include/check_port.py aliyun-oss.linuxeye.com 80)" == 'True' ];then
+                DOWN_ADDR_MYSQL=http://aliyun-oss.linuxeye.com/mysql/MySQL-5.6
+            else
+                if [ "${IPADDR_COUNTRY}"x == "CN"x ];then
+                    if [ "$(../include/check_port.py mirrors.tuna.tsinghua.edu.cn 443)" == 'True' ];then
+                        DOWN_ADDR_MYSQL=https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.6
+                    else
+                        DOWN_ADDR_MYSQL=http://mirrors.sohu.com/mysql/MySQL-5.6
+                        DOWN_ADDR_MYSQL_BK=${DOWN_ADDR_MYSQL}
+                    fi
+                else
+                    if [ "$(../include/check_port.py cdn.mysql.com 80)" == 'True' ];then
+                        DOWN_ADDR_MYSQL=http://cdn.mysql.com/Downloads/MySQL-5.6
+                    else
+                        DOWN_ADDR_MYSQL=http://mysql.he.net/Downloads/MySQL-5.6
+                        DOWN_ADDR_MYSQL_BK=${DOWN_ADDR_MYSQL}
+                    fi
+                fi
+            fi
+            if [ "${dbInstallMethods}" == "1" ];then
+                echo "Download mysql 5.6 binary package..."
+                FILE_NAME=mysql-${mysql_5_6_version}-linux-glibc2.5-${SYS_BIT_b}.tar.gz
+            elif [ "${dbInstallMethods}" == "2" ];then
+                echo "Download MySQL 5.5 source package..."
+                FILE_NAME=mysql-${mysql_5_6_version}.tar.gz
+            fi
+            wget --tries=6 -c --no-check-certificate ${DOWN_ADDR_MYSQL}/${FILE_NAME}
+            wget --tries=6 -c --no-check-certificate ${DOWN_ADDR_MYSQL}/${FILE_NAME}.md5
+            MYSQL_TAR_MD5=$(awk '{print $1}' ${FILE_NAME}.md5)
+            while [ "$(md5sum ${FILE_NAME} | awk '{print $1}')" != "${MYSQL_TAR_MD5}" ];do
+                wget -4c --no-check-certificate ${DOWN_ADDR_MYSQL_BK}/${FILE_NAME};sleep 1
+                [ "$(md5sum ${FILE_NAME} | awk '{print $1}')" == "${MYSQL_TAR_MD5}" ] && break || continue
+            done
+        fi
+      
+        if [ "${DB_version}" == "3" ];then
+            # mysql 5.5
+            if [ "${IPADDR_COUNTRY}"x == "CN"x -a "${IPADDR_ISP}" == 'aliyun' -a "$(../include/check_port.py aliyun-oss.linuxeye.com 80)" == 'True' ];then
+                DOWN_ADDR_MYSQL=http://aliyun-oss.linuxeye.com/mysql/MySQL-5.5
+            else
+                if [ "${IPADDR_COUNTRY}"x == "CN"x ];then
+                    if [ "$(../include/check_port.py mirrors.tuna.tsinghua.edu.cn 443)" == 'True' ];then
+                        DOWN_ADDR_MYSQL=https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.5
+                    else
+                        DOWN_ADDR_MYSQL=http://mirrors.sohu.com/mysql/MySQL-5.5
+                        DOWN_ADDR_MYSQL_BK=${DOWN_ADDR_MYSQL}
+                    fi
+                else
+                    if [ "$(../include/check_port.py cdn.mysql.com 80)" == 'True' ];then
+                        DOWN_ADDR_MYSQL=http://cdn.mysql.com/Downloads/MySQL-5.5
+                    else
+                        DOWN_ADDR_MYSQL=http://mysql.he.net/Downloads/MySQL-5.5
+                        DOWN_ADDR_MYSQL_BK=${DOWN_ADDR_MYSQL}
+                    fi
+                fi
+            fi
+            if [ "${dbInstallMethods}" == "1" ];then
+                echo "Download mysql 5.5 binary package..."
+                FILE_NAME=mysql-${mysql_5_5_version}-linux2.6-${SYS_BIT_b}.tar.gz
+            elif [ "${dbInstallMethods}" == "2" ];then
+                echo "Download MySQL 5.5 source package..."
+                FILE_NAME=mysql-${mysql_5_5_version}.tar.gz
+                src_url=${mirrorLink}/mysql-5.5-fix-arm-client_plugin.patch && Download_src
+            fi
+            wget --tries=6 -c --no-check-certificate ${DOWN_ADDR_MYSQL}/${FILE_NAME}
+            wget --tries=6 -c --no-check-certificate ${DOWN_ADDR_MYSQL}/${FILE_NAME}.md5
+            MYSQL_TAR_MD5=$(awk '{print $1}' ${FILE_NAME}.md5)
+      
+            while [ "$(md5sum ${FILE_NAME} | awk '{print $1}')" != "${MYSQL_TAR_MD5}" ];do
+                wget -c --no-check-certificate ${DOWN_ADDR_MYSQL_BK}/${FILE_NAME};sleep 1
+                [ "$(md5sum ${FILE_NAME} | awk '{print $1}')" == "${MYSQL_TAR_MD5}" ] && break || continue
+            done
+        fi
+      
+        if [ "${DB_version}" == "4" ];then
+            # mariaDB 10.1
+            if [ "${dbInstallMethods}" == "1" ];then
+                echo "Download mariaDB 10.1 binary package..."
+                FILE_NAME=mariadb-${mariadb_10_1_version}-${GLIBC_FLAG}-${SYS_BIT_b}.tar.gz
+                if [ "${IPADDR_COUNTRY}"x == "CN"x ];then
+                    DOWN_ADDR_MARIADB=https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-${mariadb_10_1_version}/bintar-${GLIBC_FLAG}-${SYS_BIT_a}
+                    MARAIDB_TAR_MD5=$(curl -Lk ${DOWN_ADDR_MARIADB}/md5sums.txt | grep ${FILE_NAME} | awk '{print $1}')
+                    [ -z "${MARAIDB_TAR_MD5}" ] && { DOWN_ADDR_MARIADB=https://mirrors.ustc.edu.cn/mariadb/mariadb-${mariadb_10_1_version}/bintar-${GLIBC_FLAG}-${SYS_BIT_a}; MARAIDB_TAR_MD5=$(curl -Lk ${DOWN_ADDR_MARIADB}/md5sums.txt | grep ${FILE_NAME} | awk '{print $1}'); }
+                else
+                    DOWN_ADDR_MARIADB=https://downloads.mariadb.org/interstitial/mariadb-${mariadb_10_1_version}/bintar-${GLIBC_FLAG}-${SYS_BIT_a}
+                    MARAIDB_TAR_MD5=$(curl -Lk http://archive.mariadb.org/mariadb-${mariadb_10_1_version}/bintar-${GLIBC_FLAG}-${SYS_BIT_a}/md5sums.txt |  grep ${FILE_NAME} | awk '{print $1}')
+                fi
+            elif [ "${dbInstallMethods}" == "2" ];then
+                echo "Download mariaDB 10.1 source package..."
+                FILE_NAME=mariadb-${mariadb_10_1_version}.tar.gz
+                if [ "${IPADDR_COUNTRY}"x == "CN"x ];then
+                    DOWN_ADDR_MARIADB=https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-${mariadb_10_1_version}/source
+                    MARAIDB_TAR_MD5=$(curl -Lk ${DOWN_ADDR_MARIADB}/md5sums.txt | grep ${FILE_NAME} | awk '{print $1}')
+                    [ -z "${MARAIDB_TAR_MD5}" ] && { DOWN_ADDR_MARIADB=https://mirrors.ustc.edu.cn/mariadb/mariadb-${mariadb_10_1_version}/source; MARAIDB_TAR_MD5=$(curl -Lk ${DOWN_ADDR_MARIADB}/md5sums.txt | grep ${FILE_NAME} | awk '{print $1}'); }
+                else
+                    DOWN_ADDR_MARIADB=https://downloads.mariadb.org/interstitial/mariadb-${mariadb_10_1_version}/source
+                    MARAIDB_TAR_MD5=$(curl -Lk http://archive.mariadb.org/mariadb-${mariadb_10_1_version}/source/md5sums.txt |  grep ${FILE_NAME} | awk '{print $1}')
+                fi
+            fi
+            tryDlCount=0
+            while [ "$(md5sum ${FILE_NAME} | awk '{print $1}')" != "${MARAIDB_TAR_MD5}" ];do
+                wget -c --no-check-certificate ${DOWN_ADDR_MARIADB}/${FILE_NAME};sleep 1
+                let "tryDlCount++"
+                [ "$(md5sum ${FILE_NAME} | awk '{print $1}')" == "${MARAIDB_TAR_MD5}" -o "${tryDlCount}" == "6" ] && break || continue
+            done
+            if [ "${tryDlCount}" == "6" -o "${tryDlCount}" == "6" ];then
+                echo "${CFAILURE}${FILE_NAME} download failed, Please contact the author! ${CEND}"
+                kill -9 $$
+            else
+                echo "[${CMSG}${FILE_NAME}${CEND}] found."
+            fi
+        fi
+      
+        if [ "${DB_version}" == "5" ];then
+            # mariaDB 10.0
+            if [ "${dbInstallMethods}" == "1" ];then
+                echo "Download mariaDB 10.0 binary package..."
+                FILE_NAME=mariadb-${mariadb_10_0_version}-${GLIBC_FLAG}-${SYS_BIT_b}.tar.gz
+                if [ "${IPADDR_COUNTRY}"x == "CN"x ];then
+                    DOWN_ADDR_MARIADB=https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-${mariadb_10_0_version}/bintar-${GLIBC_FLAG}-${SYS_BIT_a}
+                    MARAIDB_TAR_MD5=$(curl -Lk ${DOWN_ADDR_MARIADB}/md5sums.txt | grep ${FILE_NAME} | awk '{print $1}')
+                    [ -z "${MARAIDB_TAR_MD5}" ] && { DOWN_ADDR_MARIADB=https://mirrors.ustc.edu.cn/mariadb/mariadb-${mariadb_10_0_version}/bintar-${GLIBC_FLAG}-${SYS_BIT_a}; MARAIDB_TAR_MD5=$(curl -Lk ${DOWN_ADDR_MARIADB}/md5sums.txt | grep ${FILE_NAME} | awk '{print $1}'); }
+                else
+                    DOWN_ADDR_MARIADB=https://downloads.mariadb.org/interstitial/mariadb-${mariadb_10_0_version}/bintar-${GLIBC_FLAG}-${SYS_BIT_a}
+                    MARAIDB_TAR_MD5=$(curl -Lk http://archive.mariadb.org/mariadb-${mariadb_10_0_version}/bintar-${GLIBC_FLAG}-${SYS_BIT_a}/md5sums.txt |  grep ${FILE_NAME} | awk '{print $1}')
+                fi
+            elif [ "${dbInstallMethods}" == "2" ];then
+                echo "Download mariaDB 10.0 source package..."
+                FILE_NAME=mariadb-${mariadb_10_0_version}.tar.gz
+                if [ "${IPADDR_COUNTRY}"x == "CN"x ];then
+                    DOWN_ADDR_MARIADB=https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-${mariadb_10_0_version}/source
+                    MARAIDB_TAR_MD5=$(curl -Lk ${DOWN_ADDR_MARIADB}/md5sums.txt | grep ${FILE_NAME} | awk '{print $1}')
+                    [ -z "${MARAIDB_TAR_MD5}" ] && { DOWN_ADDR_MARIADB=https://mirrors.ustc.edu.cn/mariadb/mariadb-${mariadb_10_0_version}/source; MARAIDB_TAR_MD5=$(curl -Lk ${DOWN_ADDR_MARIADB}/md5sums.txt | grep ${FILE_NAME} | awk '{print $1}'); }
+                else
+                    DOWN_ADDR_MARIADB=https://downloads.mariadb.org/interstitial/mariadb-${mariadb_10_0_version}/source
+                    MARAIDB_TAR_MD5=$(curl -Lk http://archive.mariadb.org/mariadb-${mariadb_10_0_version}/source/md5sums.txt |  grep ${FILE_NAME} | awk '{print $1}')
+                fi
+            fi
+            tryDlCount=0
+            while [ "$(md5sum ${FILE_NAME} | awk '{print $1}')" != "${MARAIDB_TAR_MD5}" ];do
+                wget -c --no-check-certificate ${DOWN_ADDR_MARIADB}/${FILE_NAME};sleep 1
+                let "tryDlCount++"
+                [ "$(md5sum ${FILE_NAME} | awk '{print $1}')" == "${MARAIDB_TAR_MD5}" -o "${tryDlCount}" == "6" ] && break || continue
+            done
+            if [ "${tryDlCount}" == "6" -o "${tryDlCount}" == "6" ];then
+                echo "${CFAILURE}${FILE_NAME} download failed, Please contact the author! ${CEND}"
+                kill -9 $$
+            else
+                echo "[${CMSG}${FILE_NAME}${CEND}] found."
+            fi
+        fi
+        if [ "${DB_version}" == "6" ];then
+            # mariaDB 5.5
+            if [ "${dbInstallMethods}" == "1" ];then
+                echo "Download mariaDB 5.5 binary package..."
+                FILE_NAME=mariadb-${mariadb_5_5_version}-${GLIBC_FLAG}-${SYS_BIT_b}.tar.gz
+                if [ "${IPADDR_COUNTRY}"x == "CN"x ];then
+                    DOWN_ADDR_MARIADB=https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-${mariadb_5_5_version}/bintar-${GLIBC_FLAG}-${SYS_BIT_a}
+                    MARAIDB_TAR_MD5=$(curl -Lk ${DOWN_ADDR_MARIADB}/md5sums.txt | grep ${FILE_NAME} | awk '{print $1}')
+                    [ -z "${MARAIDB_TAR_MD5}" ] && { DOWN_ADDR_MARIADB=https://mirrors.ustc.edu.cn/mariadb/mariadb-${mariadb_5_5_version}/bintar-${GLIBC_FLAG}-${SYS_BIT_a}; MARAIDB_TAR_MD5=$(curl -Lk ${DOWN_ADDR_MARIADB}/md5sums.txt | grep ${FILE_NAME} | awk '{print $1}'); }
+                else
+                    DOWN_ADDR_MARIADB=https://downloads.mariadb.org/interstitial/mariadb-${mariadb_5_5_version}/bintar-${GLIBC_FLAG}-${SYS_BIT_a}
+                    MARAIDB_TAR_MD5=$(curl -Lk http://archive.mariadb.org/mariadb-${mariadb_5_5_version}/bintar-${GLIBC_FLAG}-${SYS_BIT_a}/md5sums.txt |  grep ${FILE_NAME} | awk '{print $1}')
+                fi
+            elif [ "${dbInstallMethods}" == "2" ];then
+                echo "Download mariaDB 10.0 source package..."
+                FILE_NAME=mariadb-${mariadb_5_5_version}.tar.gz
+                if [ "${IPADDR_COUNTRY}"x == "CN"x ];then
+                    DOWN_ADDR_MARIADB=https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-${mariadb_5_5_version}/source
+                    MARAIDB_TAR_MD5=$(curl -Lk ${DOWN_ADDR_MARIADB}/md5sums.txt | grep ${FILE_NAME} | awk '{print $1}')
+                    [ -z "${MARAIDB_TAR_MD5}" ] && { DOWN_ADDR_MARIADB=https://mirrors.ustc.edu.cn/mariadb/mariadb-${mariadb_5_5_version}/source; MARAIDB_TAR_MD5=$(curl -Lk ${DOWN_ADDR_MARIADB}/md5sums.txt | grep ${FILE_NAME} | awk '{print $1}'); }
+                else
+                    DOWN_ADDR_MARIADB=https://downloads.mariadb.org/interstitial/mariadb-${mariadb_5_5_version}/source
+                    MARAIDB_TAR_MD5=$(curl -Lk http://archive.mariadb.org/mariadb-${mariadb_5_5_version}/source/md5sums.txt |  grep ${FILE_NAME} | awk '{print $1}')
+                fi
+            fi
+            tryDlCount=0
+            while [ "$(md5sum ${FILE_NAME} | awk '{print $1}')" != "${MARAIDB_TAR_MD5}" ];do
+                wget -c --no-check-certificate ${DOWN_ADDR_MARIADB}/${FILE_NAME};sleep 1
+                let "tryDlCount++"
+                [ "$(md5sum ${FILE_NAME} | awk '{print $1}')" == "${MARAIDB_TAR_MD5}" -o "${tryDlCount}" == "6" ] && break || continue
+            done
+            if [ "${tryDlCount}" == "6" -o "${tryDlCount}" == "6" ];then
+                echo "${CFAILURE}${FILE_NAME} download failed, Please contact the author! ${CEND}"
+                kill -9 $$
+            else
+                echo "[${CMSG}${FILE_NAME}${CEND}] found."
+            fi
+        fi
+      
+        if [ "${DB_version}" == "7" ];then
+            # precona 5.7
+            if [ "${dbInstallMethods}" == "1" ];then
+                echo "Download percona 5.7 binary package..."
+                FILE_NAME=Percona-Server-${percona_5_7_version}-Linux.${SYS_BIT_b}.${sslLibVer}.tar.gz
+                DOWN_ADDR_PERCONA=https://www.percona.com/downloads/Percona-Server-5.7/Percona-Server-${percona_5_7_version}/binary/tarball
+                PERCONA_TAR_MD5=$(curl -Lk https://www.percona.com/downloads/Percona-Server-5.7/Percona-Server-${percona_5_7_version}/binary/tarball/${FILE_NAME}.md5sum |  grep ${FILE_NAME} | awk '{print $1}')
+            elif [ "${dbInstallMethods}" == "2" ];then
+                echo "Download percona 5.7 source package..."
+                FILE_NAME=percona-server-${percona_5_7_version}.tar.gz
+                if [ "${IPADDR_COUNTRY}"x == "CN"x ];then
+                    DOWN_ADDR_PERCONA=${mirrorLink}
+                    DOWN_ADDR_PERCONA_2=https://www.percona.com/downloads/Percona-Server-5.7/source/tarball
+                    PERCONA_TAR_MD5=$(curl -Lk ${DOWN_ADDR_PERCONA_2}/${FILE_NAME}.md5sum | grep ${FILE_NAME} | awk '{print $1}')
+                    [ -z "${PERCONA_TAR_MD5}" ] && { DOWN_ADDR_PERCONA=${mirrorLink}; PERCONA_TAR_MD5=$(curl -Lk ${DOWN_ADDR_PERCONA_2}/${FILE_NAME}.md5sum | grep ${FILE_NAME} | awk '{print $1}'); }
+                else
+                    DOWN_ADDR_PERCONA=https://www.percona.com/downloads/Percona-Server-5.7/Percona-Server-${percona_5_7_version}/source/tarball
+                    PERCONA_TAR_MD5=$(curl -Lk ${DOWN_ADDR_PERCONA}/${FILE_NAME}.md5sum |  grep ${FILE_NAME} | awk '{print $1}')
+                fi
+            fi
+            tryDlCount=0
+            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}')" == "${PERCONA_TAR_MD5}" -o "${tryDlCount}" == "6" ] && break || continue
+            done
+            if [ "${tryDlCount}" == "6" -o "${tryDlCount}" == "6" ];then
+                echo "${CFAILURE}${FILE_NAME} download failed, Please contact the author! ${CEND}"
+                kill -9 $$
+            else
+                echo "[${CMSG}${FILE_NAME}${CEND}] found."
+            fi
+        fi
+      
+        if [ "${DB_version}" == "8" ];then
+            # precona 5.6
+            if [ "${dbInstallMethods}" == "1" ];then
+                echo "Download percona 5.6 binary package..."
+                perconaVerStr1=$(echo ${percona_5_6_version} | sed "s@-@-rel@")
+                FILE_NAME=Percona-Server-${perconaVerStr1}-Linux.${SYS_BIT_b}.${sslLibVer}.tar.gz
+                DOWN_ADDR_PERCONA=https://www.percona.com/downloads/Percona-Server-5.6/Percona-Server-${percona_5_6_version}/binary/tarball
+                PERCONA_TAR_MD5=$(curl -Lk https://www.percona.com/downloads/Percona-Server-5.6/Percona-Server-${percona_5_6_version}/binary/tarball/${FILE_NAME}.md5sum |  grep ${FILE_NAME} | awk '{print $1}')
+            elif [ "${dbInstallMethods}" == "2" ];then
+                echo "Download percona 5.6 source package..."
+                FILE_NAME=percona-server-${percona_5_6_version}.tar.gz
+                if [ "${IPADDR_COUNTRY}"x == "CN"x ];then
+                    DOWN_ADDR_PERCONA=${mirrorLink}
+                    DOWN_ADDR_PERCONA_2=https://www.percona.com/downloads/Percona-Server-5.6/Percona-Server-${percona_5_6_version}/source/tarball
+                    PERCONA_TAR_MD5=$(curl -Lk ${DOWN_ADDR_PERCONA_2}/${FILE_NAME}.md5sum | grep ${FILE_NAME} | awk '{print $1}')
+                    [ -z "${PERCONA_TAR_MD5}" ] && { DOWN_ADDR_PERCONA=${mirrorLink}; PERCONA_TAR_MD5=$(curl -Lk ${DOWN_ADDR_PERCONA_2}/${FILE_NAME}.md5sum | grep ${FILE_NAME} | awk '{print $1}'); }
+                else
+                    DOWN_ADDR_PERCONA=https://www.percona.com/downloads/Percona-Server-5.6/Percona-Server-${percona_5_6_version}/source/tarball
+                    PERCONA_TAR_MD5=$(curl -Lk ${DOWN_ADDR_PERCONA}/${FILE_NAME}.md5sum |  grep ${FILE_NAME} | awk '{print $1}')
+                fi
+            fi
+            tryDlCount=0
+            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}')" == "${PERCONA_TAR_MD5}" -o "${tryDlCount}" == "6" ] && break || continue
+            done
+            if [ "${tryDlCount}" == "6" -o "${tryDlCount}" == "6" ];then
+                echo "${CFAILURE}${FILE_NAME} download failed, Please contact the author! ${CEND}"
+                kill -9 $$
+            else
+                echo "[${CMSG}${FILE_NAME}${CEND}] found."
+            fi
+        fi
+      
+        if [ "${DB_version}" == "9" ];then
+            # precona 5.5
+            if [ "${dbInstallMethods}" == "1" ];then
+                echo "Download percona 5.5 binary package..."
+                perconaVerStr1=$(echo ${percona_5_5_version} | sed "s@-@-rel@")
+                FILE_NAME=Percona-Server-${perconaVerStr1}-Linux.${SYS_BIT_b}.${sslLibVer}.tar.gz
+                DOWN_ADDR_PERCONA=https://www.percona.com/downloads/Percona-Server-5.5/Percona-Server-${percona_5_5_version}/binary/tarball
+                PERCONA_TAR_MD5=$(curl -Lk https://www.percona.com/downloads/Percona-Server-5.5/Percona-Server-${percona_5_5_version}/binary/tarball/${FILE_NAME}.md5sum |  grep ${FILE_NAME} | awk '{print $1}')
+            elif [ "${dbInstallMethods}" == "2" ];then
+                echo "Download percona 5.5 source package..."
+                FILE_NAME=percona-server-${percona_5_5_version}.tar.gz
+                if [ "${IPADDR_COUNTRY}"x == "CN"x ];then
+                    DOWN_ADDR_PERCONA=${mirrorLink}
+                    DOWN_ADDR_PERCONA_2=https://www.percona.com/downloads/Percona-Server-5.5/Percona-Server-${percona_5_5_version}/source/tarball
+                    PERCONA_TAR_MD5=$(curl -Lk ${DOWN_ADDR_PERCONA_2}/${FILE_NAME}.md5sum | grep ${FILE_NAME} | awk '{print $1}')
+                    [ -z "${PERCONA_TAR_MD5}" ] && { DOWN_ADDR_PERCONA=${mirrorLink}; PERCONA_TAR_MD5=$(curl -Lk ${DOWN_ADDR_PERCONA_2}/${FILE_NAME}.md5sum | grep ${FILE_NAME} | awk '{print $1}'); }
+                else
+                    DOWN_ADDR_PERCONA=https://www.percona.com/downloads/Percona-Server-5.5/Percona-Server-${percona_5_5_version}/source/tarball
+                    PERCONA_TAR_MD5=$(curl -Lk ${DOWN_ADDR_PERCONA}/${FILE_NAME}.md5sum | grep ${FILE_NAME} | awk '{print $1}')
+                fi
+            fi
+            tryDlCount=0
+            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}')" == "${PERCONA_TAR_MD5}" -o "${tryDlCount}" == "6" ] && break || continue
+            done
+      
+            if [ "${tryDlCount}" == "6" ];then
+                echo "${CFAILURE}${FILE_NAME} download failed, Please contact the author! ${CEND}"
+                kill -9 $$
+            else
+                echo "[${CMSG}${FILE_NAME}${CEND}] found."
+            fi
+        fi
+    fi
+    # PHP
+    if [ "${PHP_yn}" == "y" ];then
+        # php 5.3 5.4 5.5 5.6 5.7
+        echo "PHP common..."
+        src_url=http://ftp.gnu.org/pub/gnu/libiconv/libiconv-${libiconv_version}.tar.gz && Download_src
+        src_url=https://curl.haxx.se/download/curl-${curl_version}.tar.gz && Download_src
+        src_url=http://downloads.sourceforge.net/project/mcrypt/Libmcrypt/${libmcrypt_version}/libmcrypt-${libmcrypt_version}.tar.gz && Download_src
+        src_url=http://downloads.sourceforge.net/project/mhash/mhash/${mhash_version}/mhash-${mhash_version}.tar.gz && Download_src
+        src_url=http://downloads.sourceforge.net/project/mcrypt/MCrypt/${mcrypt_version}/mcrypt-${mcrypt_version}.tar.gz && Download_src
+        src_url=${mirrorLink}/libiconv-glibc-2.16.patch && Download_src
+      
+        if [[ "${PHP_version}" =~ ^[1-3]$ ]];then
+            # php 5.3 5.4 5.5
+            src_url=${mirrorLink}/fpm-race-condition.patch && Download_src
+        fi
+      
+        if [ "${PHP_version}" == "1" ];then
+            # php 5.3
+            src_url=${mirrorLink}/debian_patches_disable_SSLv2_for_openssl_1_0_0.patch && Download_src
+            src_url=${mirrorLink}/php5.3patch && Download_src
+            if [[ "${Debian_version}" == "8" || "${Ubuntu_version}" == "16" ]];then
+                if [ ! -e "/usr/local/openssl/lib/libcrypto.a" ];then
+                    src_url=${mirrorLink}/openssl-1.0.0s.tar.gz && Download_src
+                fi
+            fi
+            src_url=http://www.php.net/distributions/php-${php_3_version}.tar.gz && Download_src
+        fi
+        if [ "${PHP_version}" == "2" ];then
+            src_url=http://www.php.net/distributions/php-${php_4_version}.tar.gz && Download_src
+        fi
+        if [ "${PHP_version}" == "3" ];then
+            src_url=http://www.php.net/distributions/php-${php_5_version}.tar.gz && Download_src
+        fi
+        if [ "${PHP_version}" == "4" ];then
+            src_url=http://www.php.net/distributions/php-${php_6_version}.tar.gz && Download_src
+        fi
+        if [ "${PHP_version}" == "5" ];then
+            src_url=http://www.php.net/distributions/php-${php_7_version}.tar.gz && Download_src
+        fi
+      
+        # PHP OPCache
+        if [ "${PHP_cache}" == "1" ] && [[ "$PHP_version" =~ ^[1,2]$ ]];then
+            # php 5.3 5.4
+            echo "Download Zend OPCache..."
+            src_url=https://pecl.php.net/get/zendopcache-${zendopcache_version}.tgz && Download_src
+        fi
+        if [ "${PHP_cache}" == "2" ] && [[ "$PHP_version" =~ ^[1-4]$ ]];then
+            # php 5.3 5.4 5.5 5.6
+            echo "Download xcache..."
+            src_url=http://xcache.lighttpd.net/pub/Releases/${xcache_version}/xcache-${xcache_version}.tar.gz && Download_src
+        fi
+        if [ "${PHP_cache}" == "3" ] && [[ "$PHP_version" =~ ^[1-3]$ ]];then
+            # php 5.3 5.4 5.5
+            echo "Download apcu..."
+            src_url=http://pecl.php.net/get/apcu-${apcu_version}.tgz && Download_src
+        fi
+        if [ "${PHP_cache}" == "4" -a "${PHP_version}" == "2" ];then
+            echo "Download eaccelerator 1.0 dev..."
+            src_url=https://github.com/eaccelerator/eaccelerator/tarball/master && Download_src
+        elif [ "${PHP_cache}" == "4" -a "${PHP_version}" == "1" ];then
+            echo "Download eaccelerator 0.9..."
+            src_url=https://github.com/downloads/eaccelerator/eaccelerator/eaccelerator-${eaccelerator_version}.tar.bz2 && Download_src
+        fi
+      
+        # Zend Guard Loader
+        if [ "${ZendGuardLoader_yn}" == "y" ];then
+            if [ "${PHP_version}" == "4" ];then
+                if [ "${OS_BIT}" == "64" ];then
+                    # 64 bit
+                    echo "Download zend loader for php 5.6..."
+                    src_url=${mirrorLink}/zend-loader-php5.6-linux-x86_64.tar.gz && Download_src
+                else
+                    # 32 bit
+                    echo "Download zend loader for php 5.6..."
+                    src_url=${mirrorLink}/zend-loader-php5.6-linux-i386.tar.gz && Download_src
+                fi
+            fi
+            if [ "${PHP_version}" == "3" ];then
+                if [ "${OS_BIT}" == "64" ];then
+                    # 64 bit
+                    echo "Download zend loader for php 5.5..."
+                    src_url=${mirrorLink}/zend-loader-php5.5-linux-x86_64.tar.gz && Download_src
+                else
+                    # 32 bit
+                    echo "Download zend loader for php 5.5..."
+                    src_url=${mirrorLink}/zend-loader-php5.5-linux-i386.tar.gz && Download_src
+                fi
+            fi
+            if [ "${PHP_version}" == "2" ];then
+                if [ "${OS_BIT}" == "64" ];then
+                    # 64 bit
+                    echo "Download zend loader for php 5.4..."
+                    src_url=${mirrorLink}/ZendGuardLoader-70429-PHP-5.4-linux-glibc23-x86_64.tar.gz && Download_src
+                else
+                    # 32 bit
+                    echo "Download zend loader for php 5.4..."
+                    src_url=${mirrorLink}/ZendGuardLoader-70429-PHP-5.4-linux-glibc23-i386.tar.gz && Download_src
+                fi
+            fi
+            if [ "${PHP_version}" == "1" ];then
+                if [ "${OS_BIT}" == "64" ];then
+                    # 64 bit
+                    echo "Download zend loader for php 5.3..."
+                    src_url=${mirrorLink}/ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz && Download_src
+                else
+                    # 32 bit
+                    echo "Download zend loader for php 5.3..."
+                    src_url=${mirrorLink}/ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz && Download_src
+                fi
+            fi
+        fi
+      
+        if [ "${ionCube_yn}" == "y" ];then
+            echo "Download ioncube..."
+            if [ "${OS_BIT}" == '64' ];then
+                src_url=http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz && Download_src
+            else
+                src_url=http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz && Download_src
+            fi
+        fi
+      
+        if [ "${Magick_yn}" == "y" ];then
+            if [ "${Magick}" == "1" ];then
+                echo "Download ImageMagick..."
+                src_url=${mirrorLink}/ImageMagick-${ImageMagick_version}.tar.gz && Download_src
+                if [ "${PHP_version}" == "1" ];then 
+                    echo "Download image for php 5.3..."
+                    src_url=https://pecl.php.net/get/imagick-${imagick_for_php53_version}.tgz && Download_src
+                else 
+                    echo "Download imagick..."
+                    src_url=http://pecl.php.net/get/imagick-${imagick_version}.tgz && Download_src
+                fi
+            else
+                echo "Download graphicsmagick..."
+                src_url=http://downloads.sourceforge.net/project/graphicsmagick/graphicsmagick/${GraphicsMagick_version}/GraphicsMagick-${GraphicsMagick_version}.tar.gz && Download_src
+                if [ "${PHP_version}" == "5" ];then 
+                    echo "Download gmagick for php7..."
+                    src_url=https://pecl.php.net/get/gmagick-${gmagick_for_php7_version}.tgz && Download_src
+                else
+                    echo "Download gmagick for php..."
+                    src_url=http://pecl.php.net/get/gmagick-${gmagick_version}.tgz && Download_src
+                fi
+            fi
+        fi
+      
+    fi
+    
+    if [ "${FTP_yn}" == "y" ];then
+        echo "Download pureftpd..."
+        src_url=http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-${pureftpd_version}.tar.gz && Download_src
+    fi
+    
+    if [ "${phpMyAdmin_yn}" == "y" ];then
+        echo "Download phpMyAdmin..."
+        src_url=https://files.phpmyadmin.net/phpMyAdmin/${phpMyAdmin_version}/phpMyAdmin-${phpMyAdmin_version}-all-languages.tar.gz && Download_src
+    fi
+    
+    if [ "${redis_yn}" == "y" ];then
+        echo "Download redis..."
+        src_url=http://download.redis.io/releases/redis-${redis_version}.tar.gz && Download_src
+        if [ "${OS}" == "CentOS" ];then
+            echo "Download start-stop-daemon.c for CentOS..."
+            src_url=${mirrorLink}/start-stop-daemon.c && Download_src
+        fi
+        # redis addon
+        if [ "${PHP_version}" == "5" ];then
+            echo "Download redis pecl for php7..."
+            src_url=http://pecl.php.net/get/redis-${redis_pecl_for_php7_version}.tgz && Download_src
+        else
+            echo "Download redis pecl..."
+            src_url=http://pecl.php.net/get/redis-${redis_pecl_version}.tgz && Download_src
+        fi
+    fi
+    
+    if [ "${memcached_yn}" == "y" ];then
+        echo "Download memcached..."
+        src_url=http://www.memcached.org/files/memcached-${memcached_version}.tar.gz && Download_src
+        if [ "${PHP_version}" == "5" ];then
+            echo "Download pecl memcache for php7..."
+            src_url=${mirrorLink}/pecl-memcache-php7.tgz && Download_src
+            echo "Download php-memcached for php7..."
+            src_url=${mirrorLink}/php-memcached-php7.tgz && Download_src
+        else
+            echo "Download pecl memcache for php7..."
+            src_url=http://pecl.php.net/get/memcache-${memcache_pecl_version}.tgz && Download_src
+            echo "Download php-memcached for php7..."
+            src_url=http://pecl.php.net/get/memcached-${memcached_pecl_version}.tgz && Download_src
+        fi
+      
+        echo "Download libmemcached..."
+        src_url=https://launchpad.net/libmemcached/1.0/${libmemcached_version}/+download/libmemcached-${libmemcached_version}.tar.gz && Download_src
+    fi
+    
+    if [ "${je_tc_malloc_yn}" == "y" ];then
+        if [ "${je_tc_malloc}" == "1" ];then
+            echo "Download jemalloc..."
+            src_url=${mirrorLink}/jemalloc-${jemalloc_version}.tar.bz2 && Download_src
+        elif [ "${je_tc_malloc}" == "2" ];then
+            echo "Download tcmalloc..."
+            src_url=${mirrorLink}/gperftools-${tcmalloc_version}.tar.gz && Download_src
+        fi
+    fi
+    
+    # others
+    if [ "${OS}" == "CentOS" ];then
+        echo "Download tmux for CentOS..."
+        src_url=${mirrorLink}/libevent-${libevent_version}.tar.gz && Download_src
+        src_url=${mirrorLink}/tmux-${tmux_version}.tar.gz && Download_src
+      
+        echo "Download htop for CentOS..."
+        src_url=http://hisham.hm/htop/releases/${htop_version}/htop-${htop_version}.tar.gz && Download_src
+    fi
+    
+    if [[ "${Ubuntu_version}" =~ ^14$|^15$ ]];then
+        echo "Download bison for Ubuntu..."
+        src_url=http://ftp.gnu.org/gnu/bison/bison-${bison_version}.tar.gz && Download_src
+    fi
+    
+    popd
+}

+ 36 - 17
include/check_os.sh

@@ -8,33 +8,33 @@
 #       https://oneinstack.com
 #       https://github.com/lj2007331/oneinstack
 
-if [ -n "`grep 'Aliyun Linux release' /etc/issue`" -o -e /etc/redhat-release ];then
+if [ -n "$(grep 'Aliyun Linux release' /etc/issue)" -o -e /etc/redhat-release ];then
     OS=CentOS
-    [ -n "`grep ' 7\.' /etc/redhat-release`" ] && CentOS_RHEL_version=7
-    [ -n "`grep ' 6\.' /etc/redhat-release`" -o -n "`grep 'Aliyun Linux release6 15' /etc/issue`" ] && CentOS_RHEL_version=6
-    [ -n "`grep ' 5\.' /etc/redhat-release`" -o -n "`grep 'Aliyun Linux release5' /etc/issue`" ] && CentOS_RHEL_version=5
-elif [ -n "`grep 'Amazon Linux AMI release' /etc/issue`" -o -e /etc/system-release ];then
+    [ -n "$(grep ' 7\.' /etc/redhat-release)" ] && CentOS_RHEL_version=7
+    [ -n "$(grep ' 6\.' /etc/redhat-release)" -o -n "$(grep 'Aliyun Linux release6 15' /etc/issue)" ] && CentOS_RHEL_version=6
+    [ -n "$(grep ' 5\.' /etc/redhat-release)" -o -n "$(grep 'Aliyun Linux release5' /etc/issue)" ] && CentOS_RHEL_version=5
+elif [ -n "$(grep 'Amazon Linux AMI release' /etc/issue)" -o -e /etc/system-release ];then
     OS=CentOS
     CentOS_RHEL_version=6
-elif [ -n "`grep bian /etc/issue`" -o "`lsb_release -is 2>/dev/null`" == 'Debian' ];then
+elif [ -n "$(grep bian /etc/issue)" -o "$(lsb_release -is 2>/dev/null)" == 'Debian' ];then
     OS=Debian
-    [ ! -e "`which lsb_release`" ] && { apt-get -y update; apt-get -y install lsb-release; clear; }
-    Debian_version=`lsb_release -sr | awk -F. '{print $1}'`
-elif [ -n "`grep Deepin /etc/issue`" -o "`lsb_release -is 2>/dev/null`" == 'Deepin' ];then
+    [ ! -e "$(which lsb_release)" ] && { apt-get -y update; apt-get -y install lsb-release; clear; }
+    Debian_version=$(lsb_release -sr | awk -F. '{print $1}')
+elif [ -n "$(grep Deepin /etc/issue)" -o "$(lsb_release -is 2>/dev/null)" == 'Deepin' ];then
     OS=Debian
-    [ ! -e "`which lsb_release`" ] && { apt-get -y update; apt-get -y install lsb-release; clear; }
-    Debian_version=`lsb_release -sr | awk -F. '{print $1}'`
-elif [ -n "`grep Ubuntu /etc/issue`" -o "`lsb_release -is 2>/dev/null`" == 'Ubuntu' -o -n "`grep 'Linux Mint' /etc/issue`" ];then
+    [ ! -e "$(which lsb_release)" ] && { apt-get -y update; apt-get -y install lsb-release; clear; }
+    Debian_version=$(lsb_release -sr | awk -F. '{print $1}')
+elif [ -n "$(grep Ubuntu /etc/issue)" -o "$(lsb_release -is 2>/dev/null)" == 'Ubuntu' -o -n "$(grep 'Linux Mint' /etc/issue)" ];then
     OS=Ubuntu
-    [ ! -e "`which lsb_release`" ] && { apt-get -y update; apt-get -y install lsb-release; clear; }
-    Ubuntu_version=`lsb_release -sr | awk -F. '{print $1}'`
-    [ -n "`grep 'Linux Mint 18' /etc/issue`" ] && Ubuntu_version=16
+    [ ! -e "$(which lsb_release)" ] && { apt-get -y update; apt-get -y install lsb-release; clear; }
+    Ubuntu_version=$(lsb_release -sr | awk -F. '{print $1}')
+    [ -n "$(grep 'Linux Mint 18' /etc/issue)" ] && Ubuntu_version=16
 else
     echo "${CFAILURE}Does not support this OS, Please contact the author! ${CEND}"
     kill -9 $$
 fi
 
-if [ `getconf WORD_BIT` == 32 ] && [ `getconf LONG_BIT` == 64 ];then
+if [ $(getconf WORD_BIT) == 32 ] && [ $(getconf LONG_BIT) == 64 ];then
     OS_BIT=64
     SYS_BIG_FLAG=x64 #jdk
     SYS_BIT_a=x86_64;SYS_BIT_b=x86_64; #mariadb
@@ -44,7 +44,26 @@ else
     SYS_BIT_a=x86;SYS_BIT_b=i686;
 fi
 
-LIBC_YN=$(awk -v A=`getconf -a | grep GNU_LIBC_VERSION | awk '{print $NF}'` -v B=2.14 'BEGIN{print(A>=B)?"0":"1"}')
+LIBC_YN=$(awk -v A=$(getconf -a | grep GNU_LIBC_VERSION | awk '{print $NF}') -v B=2.14 'BEGIN{print(A>=B)?"0":"1"}')
 [ $LIBC_YN == '0' ] && GLIBC_FLAG=linux-glibc_214 || GLIBC_FLAG=linux
 
+if uname -m | grep -Eqi "arm";then
+    armTarget="y"
+fi
+
 THREAD=$(grep 'processor' /proc/cpuinfo | sort -u | wc -l)
+
+# Percona
+if [ -f "/usr/lib/x86_64-linux-gnu/libssl.so.1.0.0" ];then
+    if [ "${Debian_version}" == "6" ];then
+        sslLibVer=ssl098
+    else
+        sslLibVer=ssl100
+    fi
+elif [ -f "/usr/lib64/libssl.so.10" ];then
+    if [ "${CentOS_RHEL_version}" == "5" ];then
+        sslLibVer=ssl098e
+    else
+        sslLibVer=ssl101
+    fi
+fi

+ 1 - 1
include/color.sh

@@ -11,7 +11,7 @@
 echo=echo
 for cmd in echo /bin/echo; do
     $cmd >/dev/null 2>&1 || continue
-    if ! $cmd -e "" | grep -qE '^-e'; then
+    if ! $cmd -e "" | grep -qE '^-e';then
         echo=$cmd
         break
     fi

+ 2 - 4
include/eaccelerator-0.9.sh

@@ -10,10 +10,8 @@
 
 Install_eAccelerator-0-9() {
 cd $oneinstack_dir/src
-src_url=https://github.com/downloads/eaccelerator/eaccelerator/eaccelerator-0.9.6.1.tar.bz2 && Download_src
-
-tar jxf eaccelerator-0.9.6.1.tar.bz2
-cd eaccelerator-0.9.6.1
+tar jxf eaccelerator-${eaccelerator_version}.tar.bz2
+cd eaccelerator-${eaccelerator_version}
 make clean
 $php_install_dir/bin/phpize
 ./configure --enable-eaccelerator=shared --with-php-config=$php_install_dir/bin/php-config

+ 0 - 2
include/eaccelerator-1.0-dev.sh

@@ -10,8 +10,6 @@
 
 Install_eAccelerator-1-0-dev() {
 cd $oneinstack_dir/src
-src_url=https://github.com/eaccelerator/eaccelerator/tarball/master && Download_src
-
 /bin/mv master eaccelerator-eaccelerator-42067ac.tar.gz
 tar xzf eaccelerator-eaccelerator-42067ac.tar.gz
 cd eaccelerator-eaccelerator-42067ac

+ 6 - 9
include/init_CentOS.sh

@@ -182,16 +182,14 @@ service sshd restart
 # install tmux
 if [ ! -e "`which tmux`" ];then
     cd src
-    src_url=http://mirrors.linuxeye.com/oneinstack/src/libevent-2.0.22-stable.tar.gz && Download_src
-    src_url=http://mirrors.linuxeye.com/oneinstack/src/tmux-2.2.tar.gz && Download_src
-    tar xzf libevent-2.0.22-stable.tar.gz
-    cd libevent-2.0.22-stable
+    tar xzf libevent-${libevent_version}.tar.gz
+    cd libevent-${libevent_version}
     ./configure
     make -j ${THREAD} && make install
     cd ..
 
-    tar xzf tmux-2.2.tar.gz
-    cd tmux-2.2
+    tar xzf tmux-${tmux_version}.tar.gz
+    cd tmux-${tmux_version}
     CFLAGS="-I/usr/local/include" LDFLAGS="-L//usr/local/lib" ./configure
     make -j ${THREAD} && make install
     cd ../../
@@ -206,9 +204,8 @@ fi
 # install htop
 if [ ! -e "`which htop`" ];then
     cd src
-    src_url=http://hisham.hm/htop/releases/2.0.2/htop-2.0.2.tar.gz && Download_src
-    tar xzf htop-2.0.2.tar.gz
-    cd htop-2.0.2
+    tar xzf htop-${htop_version}.tar.gz
+    cd htop-${htop_version}
     ./configure
     make -j ${THREAD} && make install
     cd ../../

+ 3 - 4
include/init_Ubuntu.sh

@@ -30,13 +30,12 @@ if [[ "$Ubuntu_version" =~ ^14$|^15$ ]];then
     apt-get -y install libcloog-ppl1
     apt-get -y remove bison
     cd src
-    src_url=http://ftp.gnu.org/gnu/bison/bison-2.7.1.tar.gz && Download_src
-    tar xzf bison-2.7.1.tar.gz
-    cd bison-2.7.1
+    tar xzf bison-${bison_version}.tar.gz
+    cd bison-${bison_version}
     ./configure
     make -j ${THREAD} && make install
     cd ..
-    rm -rf bison-2.7.1
+    rm -rf bison-${bison_version}
     cd ..
     ln -sf /usr/include/freetype2 /usr/include/freetype2/freetype
 elif [ "$Ubuntu_version" == '13' ];then

+ 1 - 3
include/ioncube.sh

@@ -14,11 +14,9 @@ cd $oneinstack_dir/src
 PHP_version=`$php_install_dir/bin/php -r 'echo PHP_VERSION;'`
 PHP_main_version=${PHP_version%.*}
 
-if [ "$OS_BIT" == '64' ] ;then
-    src_url=http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz && Download_src
+if [ "$OS_BIT" == '64' ];then
     tar xzf ioncube_loaders_lin_x86-64.tar.gz
 else
-    src_url=http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz && Download_src
     tar xzf ioncube_loaders_lin_x86.tar.gz
 fi
 

+ 0 - 6
include/jdk-1.6.sh

@@ -11,12 +11,6 @@
 Install-JDK-1-6() {
 cd $oneinstack_dir/src
 
-JDK_FILE="jdk-`echo $jdk_6_version | awk -F. '{print $2}'`u`echo $jdk_6_version | awk -F_ '{print $NF}'`-linux-$SYS_BIG_FLAG.bin"
-JAVA_dir=/usr/java
-JDK_NAME="jdk$jdk_6_version"
-JDK_PATH=$JAVA_dir/$JDK_NAME
-src_url=http://mirrors.linuxeye.com/jdk/$JDK_FILE && Download_src
-
 [ "$OS" == 'CentOS' ] && [ -n "`rpm -qa | grep jdk`" ] && rpm -e `rpm -qa | grep jdk`
 
 chmod +x $JDK_FILE

+ 0 - 1
include/jdk-1.7.sh

@@ -15,7 +15,6 @@ JDK_FILE="jdk-`echo $jdk_7_version | awk -F. '{print $2}'`u`echo $jdk_7_version
 JAVA_dir=/usr/java
 JDK_NAME="jdk$jdk_7_version"
 JDK_PATH=$JAVA_dir/$JDK_NAME
-src_url=http://mirrors.linuxeye.com/jdk/$JDK_FILE && Download_src
 
 [ "$OS" == 'CentOS' ] && [ -n "`rpm -qa | grep jdk`" ] && rpm -e `rpm -qa | grep jdk`
 

+ 0 - 1
include/jdk-1.8.sh

@@ -15,7 +15,6 @@ JDK_FILE="jdk-`echo $jdk_8_version | awk -F. '{print $2}'`u`echo $jdk_8_version
 JAVA_dir=/usr/java
 JDK_NAME="jdk$jdk_8_version"
 JDK_PATH=$JAVA_dir/$JDK_NAME
-src_url=http://mirrors.linuxeye.com/jdk/$JDK_FILE && Download_src
 
 [ "$OS" == 'CentOS' ] && [ -n "`rpm -qa | grep jdk`" ] && rpm -e `rpm -qa | grep jdk`
 

+ 0 - 2
include/jemalloc.sh

@@ -10,8 +10,6 @@
 
 Install_jemalloc() {
 cd $oneinstack_dir/src
-src_url=http://mirrors.linuxeye.com/oneinstack/src/jemalloc-$jemalloc_version.tar.bz2 && Download_src
-
 tar xjf jemalloc-$jemalloc_version.tar.bz2
 cd jemalloc-$jemalloc_version
 LDFLAGS="${LDFLAGS} -lrt" ./configure

+ 100 - 81
include/mariadb-10.0.sh

@@ -9,59 +9,78 @@
 #       https://github.com/lj2007331/oneinstack
 
 Install_MariaDB-10-0() {
-cd $oneinstack_dir/src
-
-FILE_NAME=mariadb-${mariadb_10_0_version}-${GLIBC_FLAG}-${SYS_BIT_b}.tar.gz
-
-if [ "$IPADDR_COUNTRY"x == "CN"x ];then
-    DOWN_ADDR_MARIADB=https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-${mariadb_10_0_version}/bintar-${GLIBC_FLAG}-$SYS_BIT_a
-    MARAIDB_TAR_MD5=`curl -Lk $DOWN_ADDR_MARIADB/md5sums.txt | grep $FILE_NAME | awk '{print $1}'`
-    [ -z "$MARAIDB_TAR_MD5" ] && { DOWN_ADDR_MARIADB=https://mirrors.ustc.edu.cn/mariadb/mariadb-${mariadb_10_0_version}/bintar-${GLIBC_FLAG}-$SYS_BIT_a; MARAIDB_TAR_MD5=`curl -Lk $DOWN_ADDR_MARIADB/md5sums.txt | grep $FILE_NAME | awk '{print $1}'`; }
-else
-    DOWN_ADDR_MARIADB=https://downloads.mariadb.org/interstitial/mariadb-${mariadb_10_0_version}/bintar-${GLIBC_FLAG}-$SYS_BIT_a
-    MARAIDB_TAR_MD5=`curl -Lk http://archive.mariadb.org/mariadb-${mariadb_10_0_version}/bintar-${GLIBC_FLAG}-$SYS_BIT_a/md5sums.txt |  grep $FILE_NAME | awk '{print $1}'`
-fi
-
-src_url=$DOWN_ADDR_MARIADB/$FILE_NAME && Download_src
-
-while [ "`md5sum $FILE_NAME | awk '{print $1}'`" != "$MARAIDB_TAR_MD5" ];
-do
-    wget -c --no-check-certificate $DOWN_ADDR_MARIADB/$FILE_NAME;sleep 1
-    [ "`md5sum $FILE_NAME | awk '{print $1}'`" == "$MARAIDB_TAR_MD5" ] && break || continue
-done
-
-id -u mysql >/dev/null 2>&1
-[ $? -ne 0 ] && useradd -M -s /sbin/nologin mysql
-
-mkdir -p $mariadb_data_dir;chown mysql.mysql -R $mariadb_data_dir
-tar zxf mariadb-${mariadb_10_0_version}-${GLIBC_FLAG}-${SYS_BIT_b}.tar.gz
-[ ! -d "$mariadb_install_dir" ] && mkdir -p $mariadb_install_dir
-mv mariadb-${mariadb_10_0_version}-*-${SYS_BIT_b}/* $mariadb_install_dir
-if [ "$je_tc_malloc" == '1' ];then
-    sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libjemalloc.so@' $mariadb_install_dir/bin/mysqld_safe
-elif [ "$je_tc_malloc" == '2' ];then
-    sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libtcmalloc.so@' $mariadb_install_dir/bin/mysqld_safe
-fi
-
-if [ -d "$mariadb_install_dir/support-files" ];then
+  pushd ${oneinstack_dir}/src
+
+  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}
+
+  if [ "${dbInstallMethods}" == "1" ];then
+    tar zxf mariadb-${mariadb_10_0_version}-${GLIBC_FLAG}-${SYS_BIT_b}.tar.gz
+    mv mariadb-${mariadb_10_0_version}-*-${SYS_BIT_b}/* ${mariadb_install_dir}
+
+    if [ "${je_tc_malloc}" == "1" ];then
+      sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libjemalloc.so@' ${mariadb_install_dir}/bin/mysqld_safe
+    elif [ "${je_tc_malloc}" == "2" ];then
+      sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libtcmalloc.so@' ${mariadb_install_dir}/bin/mysqld_safe
+    fi
+  elif [ "${dbInstallMethods}" == "2" ];then
+    tar xvf mariadb-${mariadb_10_0_version}.tar.gz
+    pushd mariadb-${mariadb_10_0_version}
+
+    if [ "${je_tc_malloc}" == "1" ];then
+      EXE_LINKER="-DCMAKE_EXE_LINKER_FLAGS='-ljemalloc'"
+    elif [ "${je_tc_malloc}" == "2" ];then
+      EXE_LINKER="-DCMAKE_EXE_LINKER_FLAGS='-ltcmalloc'"
+    fi
+
+    cmake . -DCMAKE_INSTALL_PREFIX=${mariadb_install_dir} \
+    -DMYSQL_DATADIR=${mariadb_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_EMBEDDED_SERVER=1 \
+    -DENABLE_DTRACE=0 \
+    -DENABLED_LOCAL_INFILE=1 \
+    -DDEFAULT_CHARSET=utf8mb4 \
+    -DDEFAULT_COLLATION=utf8mb4_general_ci \
+    -DEXTRA_CHARSETS=all \
+    ${EXE_LINKER}
+    make -j ${THREAD}
+    make install
+    popd
+  fi
+
+  if [ -d "${mariadb_install_dir}/support-files" ];then
     echo "${CSUCCESS}MariaDB installed successfully! ${CEND}"
-else
-    rm -rf $mariadb_install_dir
+    if [ "${dbInstallMethods}" == "1" ];then
+      rm -rf mariadb-${mariadb_10_0_version}-*-${SYS_BIT_b}
+    elif [ "${dbInstallMethods}" == "2" ];then
+      rm -rf mariadb-${mariadb_10_0_version}
+    fi
+  else
+    rm -rf ${mariadb_install_dir}
+    rm -rf mariadb-${mariadb_10_0_version}
     echo "${CFAILURE}MariaDB 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
-chmod +x /etc/init.d/mysqld
-[ "$OS" == 'CentOS' ] && { chkconfig --add mysqld; chkconfig mysqld on; }
-[[ $OS =~ ^Ubuntu$|^Debian$ ]] && update-rc.d mysqld defaults
-cd ..
-
-# my.cnf
-[ -d "/etc/mysql" ] && /bin/mv /etc/mysql{,_bk}
-cat > /etc/my.cnf << EOF
+  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
+  chmod +x /etc/init.d/mysqld
+  [ "${OS}" == "CentOS" ] && { chkconfig --add mysqld; chkconfig mysqld on; }
+  [[ "${OS}" =~ ^Ubuntu$|^Debian$ ]] && update-rc.d mysqld defaults
+  popd
+
+  # my.cnf
+  [ -d "/etc/mysql" ] && /bin/mv /etc/mysql{,_bk}
+  cat > /etc/my.cnf << EOF
 [client]
 port = 3306
 socket = /tmp/mysql.sock
@@ -71,9 +90,9 @@ default-character-set = utf8mb4
 port = 3306
 socket = /tmp/mysql.sock
 
-basedir = $mariadb_install_dir
-datadir = $mariadb_data_dir
-pid-file = $mariadb_data_dir/mysql.pid
+basedir = ${mariadb_install_dir}
+datadir = ${mariadb_data_dir}
+pid-file = ${mariadb_data_dir}/mysql.pid
 user = mysql
 bind-address = 0.0.0.0
 server-id = 1
@@ -112,10 +131,10 @@ log_bin = mysql-bin
 binlog_format = mixed
 expire_logs_days = 7
 
-log_error = $mariadb_data_dir/mysql-error.log
+log_error = ${mariadb_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 = ${mariadb_data_dir}/mysql-slow.log
 
 performance_schema = 0
 
@@ -157,8 +176,8 @@ read_buffer = 4M
 write_buffer = 4M
 EOF
 
-sed -i "s@max_connections.*@max_connections = $(($Mem/2))@" /etc/my.cnf
-if [ $Mem -gt 1500 -a $Mem -le 2500 ];then
+  sed -i "s@max_connections.*@max_connections = $((${Mem}/2))@" /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
@@ -166,7 +185,7 @@ if [ $Mem -gt 1500 -a $Mem -le 2500 ];then
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 128M@' /etc/my.cnf
     sed -i 's@^tmp_table_size.*@tmp_table_size = 32M@' /etc/my.cnf
     sed -i 's@^table_open_cache.*@table_open_cache = 256@' /etc/my.cnf
-elif [ $Mem -gt 2500 -a $Mem -le 3500 ];then
+  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
@@ -174,7 +193,7 @@ elif [ $Mem -gt 2500 -a $Mem -le 3500 ];then
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 512M@' /etc/my.cnf
     sed -i 's@^tmp_table_size.*@tmp_table_size = 64M@' /etc/my.cnf
     sed -i 's@^table_open_cache.*@table_open_cache = 512@' /etc/my.cnf
-elif [ $Mem -gt 3500 ];then
+  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
@@ -182,26 +201,26 @@ elif [ $Mem -gt 3500 ];then
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 1024M@' /etc/my.cnf
     sed -i 's@^tmp_table_size.*@tmp_table_size = 128M@' /etc/my.cnf
     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
-
-chown mysql.mysql -R $mariadb_data_dir
-[ -d '/etc/mysql' ] && 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
-. /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;"
-rm -rf /etc/ld.so.conf.d/{mysql,mariadb,percona}*.conf
-echo "$mariadb_install_dir/lib" > /etc/ld.so.conf.d/mariadb.conf
-ldconfig
-service mysqld stop
+  fi
+
+  ${mariadb_install_dir}/scripts/mysql_install_db --user=mysql --basedir=${mariadb_install_dir} --datadir=${mariadb_data_dir}
+
+  chown mysql.mysql -R ${mariadb_data_dir}
+  [ -d "/etc/mysql" ] && 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
+  . /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;"
+  rm -rf /etc/ld.so.conf.d/{mysql,mariadb,percona}*.conf
+  echo "${mariadb_install_dir}/lib" > /etc/ld.so.conf.d/mariadb.conf
+  ldconfig
+  service mysqld stop
 }

+ 100 - 81
include/mariadb-10.1.sh

@@ -9,59 +9,78 @@
 #       https://github.com/lj2007331/oneinstack
 
 Install_MariaDB-10-1() {
-cd $oneinstack_dir/src
-
-FILE_NAME=mariadb-${mariadb_10_1_version}-${GLIBC_FLAG}-${SYS_BIT_b}.tar.gz
-
-if [ "$IPADDR_COUNTRY"x == "CN"x ];then
-    DOWN_ADDR_MARIADB=https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-${mariadb_10_1_version}/bintar-${GLIBC_FLAG}-$SYS_BIT_a
-    MARAIDB_TAR_MD5=`curl -Lk $DOWN_ADDR_MARIADB/md5sums.txt | grep $FILE_NAME | awk '{print $1}'`
-    [ -z "$MARAIDB_TAR_MD5" ] && { DOWN_ADDR_MARIADB=https://mirrors.ustc.edu.cn/mariadb/mariadb-${mariadb_10_1_version}/bintar-${GLIBC_FLAG}-$SYS_BIT_a; MARAIDB_TAR_MD5=`curl -Lk $DOWN_ADDR_MARIADB/md5sums.txt | grep $FILE_NAME | awk '{print $1}'`; }
-else
-    DOWN_ADDR_MARIADB=https://downloads.mariadb.org/interstitial/mariadb-${mariadb_10_1_version}/bintar-${GLIBC_FLAG}-$SYS_BIT_a
-    MARAIDB_TAR_MD5=`curl -Lk http://archive.mariadb.org/mariadb-${mariadb_10_1_version}/bintar-${GLIBC_FLAG}-$SYS_BIT_a/md5sums.txt |  grep $FILE_NAME | awk '{print $1}'`
-fi
-
-src_url=$DOWN_ADDR_MARIADB/$FILE_NAME && Download_src
-
-while [ "`md5sum $FILE_NAME | awk '{print $1}'`" != "$MARAIDB_TAR_MD5" ];
-do
-    wget -c --no-check-certificate $DOWN_ADDR_MARIADB/$FILE_NAME;sleep 1
-    [ "`md5sum $FILE_NAME | awk '{print $1}'`" == "$MARAIDB_TAR_MD5" ] && break || continue
-done
-
-id -u mysql >/dev/null 2>&1
-[ $? -ne 0 ] && useradd -M -s /sbin/nologin mysql
-
-mkdir -p $mariadb_data_dir;chown mysql.mysql -R $mariadb_data_dir
-tar zxf mariadb-${mariadb_10_1_version}-${GLIBC_FLAG}-${SYS_BIT_b}.tar.gz
-[ ! -d "$mariadb_install_dir" ] && mkdir -p $mariadb_install_dir
-mv mariadb-${mariadb_10_1_version}-*-${SYS_BIT_b}/* $mariadb_install_dir
-if [ "$je_tc_malloc" == '1' ];then
-    sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libjemalloc.so@' $mariadb_install_dir/bin/mysqld_safe
-elif [ "$je_tc_malloc" == '2' ];then
-    sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libtcmalloc.so@' $mariadb_install_dir/bin/mysqld_safe
-fi
-
-if [ -d "$mariadb_install_dir/support-files" ];then
+  pushd ${oneinstack_dir}/src
+
+  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}
+
+  if [ "${dbInstallMethods}" == "1" ];then
+    tar zxf mariadb-${mariadb_10_1_version}-${GLIBC_FLAG}-${SYS_BIT_b}.tar.gz
+    mv mariadb-${mariadb_10_1_version}-*-${SYS_BIT_b}/* ${mariadb_install_dir}
+
+    if [ "${je_tc_malloc}" == "1" ];then
+      sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libjemalloc.so@' ${mariadb_install_dir}/bin/mysqld_safe
+    elif [ "${je_tc_malloc}" == "2" ];then
+      sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libtcmalloc.so@' ${mariadb_install_dir}/bin/mysqld_safe
+    fi
+  elif [ "${dbInstallMethods}" == "2" ];then
+    tar xvf mariadb-${mariadb_10_1_version}.tar.gz
+    pushd mariadb-${mariadb_10_1_version}
+
+    if [ "${je_tc_malloc}" == "1" ];then
+      EXE_LINKER="-DCMAKE_EXE_LINKER_FLAGS='-ljemalloc'"
+    elif [ "${je_tc_malloc}" == "2" ];then
+      EXE_LINKER="-DCMAKE_EXE_LINKER_FLAGS='-ltcmalloc'"
+    fi
+
+    cmake . -DCMAKE_INSTALL_PREFIX=${mariadb_install_dir} \
+    -DMYSQL_DATADIR=${mariadb_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_EMBEDDED_SERVER=1 \
+    -DENABLE_DTRACE=0 \
+    -DENABLED_LOCAL_INFILE=1 \
+    -DDEFAULT_CHARSET=utf8mb4 \
+    -DDEFAULT_COLLATION=utf8mb4_general_ci \
+    -DEXTRA_CHARSETS=all \
+    ${EXE_LINKER}
+    make -j ${THREAD}
+    make install
+    popd
+  fi
+
+  if [ -d "${mariadb_install_dir}/support-files" ];then
     echo "${CSUCCESS}MariaDB installed successfully! ${CEND}"
-else
-    rm -rf $mariadb_install_dir
+    if [ "${dbInstallMethods}" == "1" ];then
+      rm -rf mariadb-${mariadb_10_1_version}-*-${SYS_BIT_b}
+    elif [ "${dbInstallMethods}" == "2" ];then
+      rm -rf mariadb-${mariadb_10_1_version}
+    fi
+  else
+    rm -rf ${mariadb_install_dir}
+    rm -rf mariadb-${mariadb_10_1_version}
     echo "${CFAILURE}MariaDB 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
-chmod +x /etc/init.d/mysqld
-[ "$OS" == 'CentOS' ] && { chkconfig --add mysqld; chkconfig mysqld on; }
-[[ $OS =~ ^Ubuntu$|^Debian$ ]] && update-rc.d mysqld defaults
-cd ..
-
-# my.cnf
-[ -d "/etc/mysql" ] && /bin/mv /etc/mysql{,_bk}
-cat > /etc/my.cnf << EOF
+  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
+  chmod +x /etc/init.d/mysqld
+  [ "${OS}" == "CentOS" ] && { chkconfig --add mysqld; chkconfig mysqld on; }
+  [[ "${OS}" =~ ^Ubuntu$|^Debian$ ]] && update-rc.d mysqld defaults
+  popd
+
+  # my.cnf
+  [ -d "/etc/mysql" ] && /bin/mv /etc/mysql{,_bk}
+  cat > /etc/my.cnf << EOF
 [client]
 port = 3306
 socket = /tmp/mysql.sock
@@ -71,9 +90,9 @@ default-character-set = utf8mb4
 port = 3306
 socket = /tmp/mysql.sock
 
-basedir = $mariadb_install_dir
-datadir = $mariadb_data_dir
-pid-file = $mariadb_data_dir/mysql.pid
+basedir = ${mariadb_install_dir}
+datadir = ${mariadb_data_dir}
+pid-file = ${mariadb_data_dir}/mysql.pid
 user = mysql
 bind-address = 0.0.0.0
 server-id = 1
@@ -112,10 +131,10 @@ log_bin = mysql-bin
 binlog_format = mixed
 expire_logs_days = 7
 
-log_error = $mariadb_data_dir/mysql-error.log
+log_error = ${mariadb_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 = ${mariadb_data_dir}/mysql-slow.log
 
 performance_schema = 0
 
@@ -157,8 +176,8 @@ read_buffer = 4M
 write_buffer = 4M
 EOF
 
-sed -i "s@max_connections.*@max_connections = $(($Mem/2))@" /etc/my.cnf
-if [ $Mem -gt 1500 -a $Mem -le 2500 ];then
+  sed -i "s@max_connections.*@max_connections = $((${Mem}/2))@" /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
@@ -166,7 +185,7 @@ if [ $Mem -gt 1500 -a $Mem -le 2500 ];then
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 128M@' /etc/my.cnf
     sed -i 's@^tmp_table_size.*@tmp_table_size = 32M@' /etc/my.cnf
     sed -i 's@^table_open_cache.*@table_open_cache = 256@' /etc/my.cnf
-elif [ $Mem -gt 2500 -a $Mem -le 3500 ];then
+  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
@@ -174,7 +193,7 @@ elif [ $Mem -gt 2500 -a $Mem -le 3500 ];then
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 512M@' /etc/my.cnf
     sed -i 's@^tmp_table_size.*@tmp_table_size = 64M@' /etc/my.cnf
     sed -i 's@^table_open_cache.*@table_open_cache = 512@' /etc/my.cnf
-elif [ $Mem -gt 3500 ];then
+  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
@@ -182,26 +201,26 @@ elif [ $Mem -gt 3500 ];then
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 1024M@' /etc/my.cnf
     sed -i 's@^tmp_table_size.*@tmp_table_size = 128M@' /etc/my.cnf
     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
-
-chown mysql.mysql -R $mariadb_data_dir
-[ -d '/etc/mysql' ] && 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
-. /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;"
-rm -rf /etc/ld.so.conf.d/{mysql,mariadb,percona}*.conf
-echo "$mariadb_install_dir/lib" > /etc/ld.so.conf.d/mariadb.conf
-ldconfig
-service mysqld stop
+  fi
+
+  ${mariadb_install_dir}/scripts/mysql_install_db --user=mysql --basedir=${mariadb_install_dir} --datadir=${mariadb_data_dir}
+
+  chown mysql.mysql -R ${mariadb_data_dir}
+  [ -d "/etc/mysql" ] && 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
+  . /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;"
+  rm -rf /etc/ld.so.conf.d/{mysql,mariadb,percona}*.conf
+  echo "${mariadb_install_dir}/lib" > /etc/ld.so.conf.d/mariadb.conf
+  ldconfig
+  service mysqld stop
 }

+ 105 - 81
include/mariadb-5.5.sh

@@ -9,59 +9,83 @@
 #       https://github.com/lj2007331/oneinstack
 
 Install_MariaDB-5-5() {
-cd $oneinstack_dir/src
-
-FILE_NAME=mariadb-${mariadb_5_5_version}-${GLIBC_FLAG}-${SYS_BIT_b}.tar.gz
-
-if [ "$IPADDR_COUNTRY"x == "CN"x ];then
-    DOWN_ADDR_MARIADB=https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-${mariadb_5_5_version}/bintar-${GLIBC_FLAG}-$SYS_BIT_a
-    MARAIDB_TAR_MD5=`curl -Lk $DOWN_ADDR_MARIADB/md5sums.txt | grep $FILE_NAME | awk '{print $1}'`
-    [ -z "$MARAIDB_TAR_MD5" ] && { DOWN_ADDR_MARIADB=https://mirrors.ustc.edu.cn/mariadb/mariadb-${mariadb_5_5_version}/bintar-${GLIBC_FLAG}-$SYS_BIT_a; MARAIDB_TAR_MD5=`curl -Lk $DOWN_ADDR_MARIADB/md5sums.txt | grep $FILE_NAME | awk '{print $1}'`; }
-else
-    DOWN_ADDR_MARIADB=https://downloads.mariadb.org/interstitial/mariadb-${mariadb_5_5_version}/bintar-${GLIBC_FLAG}-$SYS_BIT_a
-    MARAIDB_TAR_MD5=`curl -Lk http://archive.mariadb.org/mariadb-${mariadb_5_5_version}/bintar-${GLIBC_FLAG}-$SYS_BIT_a/md5sums.txt |  grep $FILE_NAME | awk '{print $1}'`
-fi
-
-src_url=$DOWN_ADDR_MARIADB/$FILE_NAME && Download_src
-
-while [ "`md5sum $FILE_NAME | awk '{print $1}'`" != "$MARAIDB_TAR_MD5" ];
-do
-    wget -c --no-check-certificate $DOWN_ADDR_MARIADB/$FILE_NAME;sleep 1
-    [ "`md5sum $FILE_NAME | awk '{print $1}'`" == "$MARAIDB_TAR_MD5" ] && break || continue
-done
-
-id -u mysql >/dev/null 2>&1
-[ $? -ne 0 ] && useradd -M -s /sbin/nologin mysql
-
-mkdir -p $mariadb_data_dir;chown mysql.mysql -R $mariadb_data_dir
-tar zxf mariadb-${mariadb_5_5_version}-${GLIBC_FLAG}-${SYS_BIT_b}.tar.gz
-[ ! -d "$mariadb_install_dir" ] && mkdir -p $mariadb_install_dir
-mv mariadb-${mariadb_5_5_version}-*-${SYS_BIT_b}/* $mariadb_install_dir
-if [ "$je_tc_malloc" == '1' ];then
-     sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libjemalloc.so@' $mariadb_install_dir/bin/mysqld_safe
-elif [ "$je_tc_malloc" == '2' ];then
-    sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libtcmalloc.so@' $mariadb_install_dir/bin/mysqld_safe
-fi
-
-if [ -d "$mariadb_install_dir/support-files" ];then
+  pushd ${oneinstack_dir}/src
+
+  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}
+
+  if [ "${dbInstallMethods}" == "1" ];then
+    tar zxf mariadb-${mariadb_5_5_version}-${GLIBC_FLAG}-${SYS_BIT_b}.tar.gz
+    mv mariadb-${mariadb_5_5_version}-*-${SYS_BIT_b}/* ${mariadb_install_dir}
+
+    if [ "${je_tc_malloc}" == "1" ];then
+      sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libjemalloc.so@' ${mariadb_install_dir}/bin/mysqld_safe
+    elif [ "${je_tc_malloc}" == "2" ];then
+      sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libtcmalloc.so@' ${mariadb_install_dir}/bin/mysqld_safe
+    fi
+  elif [ "${dbInstallMethods}" == "2" ];then
+    tar xvf mariadb-${mariadb_5_5_version}.tar.gz
+    pushd mariadb-${mariadb_5_5_version}
+
+    if [ "${je_tc_malloc}" == "1" ];then
+      EXE_LINKER="-DCMAKE_EXE_LINKER_FLAGS='-ljemalloc'"
+    elif [ "${je_tc_malloc}" == "2" ];then
+      EXE_LINKER="-DCMAKE_EXE_LINKER_FLAGS='-ltcmalloc'"
+    fi
+    
+    if [ "${armTarget}" == "y" ];then
+      patch -p1 < ../mysql-5.5-fix-arm-client_plugin.patch
+    fi
+
+    cmake . -DCMAKE_INSTALL_PREFIX=${mariadb_install_dir} \
+    -DMYSQL_DATADIR=${mariadb_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_READLINE=1 \
+    -DWITH_EMBEDDED_SERVER=1 \
+    -DENABLE_DTRACE=0 \
+    -DENABLED_LOCAL_INFILE=1 \
+    -DDEFAULT_CHARSET=utf8mb4 \
+    -DDEFAULT_COLLATION=utf8mb4_general_ci \
+    -DEXTRA_CHARSETS=all \
+    ${EXE_LINKER}
+    make -j ${THREAD}
+    make install
+    popd
+  fi
+
+  if [ -d "${mariadb_install_dir}/support-files" ];then
     echo "${CSUCCESS}MariaDB installed successfully! ${CEND}"
-else
-    rm -rf $mariadb_install_dir
+    if [ "${dbInstallMethods}" == "1" ];then
+      rm -rf mariadb-${mariadb_5_5_version}-*-${SYS_BIT_b}
+    elif [ "${dbInstallMethods}" == "2" ];then
+      rm -rf mariadb-${mariadb_5_5_version}
+    fi
+  else
+    rm -rf ${mariadb_install_dir}
+    rm -rf mariadb-${mariadb_5_5_version}
     echo "${CFAILURE}MariaDB 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
-chmod +x /etc/init.d/mysqld
-[ "$OS" == 'CentOS' ] && { chkconfig --add mysqld; chkconfig mysqld on; }
-[[ $OS =~ ^Ubuntu$|^Debian$ ]] && update-rc.d mysqld defaults
-cd ..
-
-# my.cnf
-[ -d "/etc/mysql" ] && /bin/mv /etc/mysql{,_bk}
-cat > /etc/my.cnf << EOF
+  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
+  chmod +x /etc/init.d/mysqld
+  [ "${OS}" == "CentOS" ] && { chkconfig --add mysqld; chkconfig mysqld on; }
+  [[ "${OS}" =~ ^Ubuntu$|^Debian$ ]] && update-rc.d mysqld defaults
+  popd
+
+  # my.cnf
+  [ -d "/etc/mysql" ] && /bin/mv /etc/mysql{,_bk}
+  cat > /etc/my.cnf << EOF
 [client]
 port = 3306
 socket = /tmp/mysql.sock
@@ -71,9 +95,9 @@ default-character-set = utf8mb4
 port = 3306
 socket = /tmp/mysql.sock
 
-basedir = $mariadb_install_dir
-datadir = $mariadb_data_dir
-pid-file = $mariadb_data_dir/mysql.pid
+basedir = ${mariadb_install_dir}
+datadir = ${mariadb_data_dir}
+pid-file = ${mariadb_data_dir}/mysql.pid
 user = mysql
 bind-address = 0.0.0.0
 server-id = 1
@@ -112,10 +136,10 @@ log_bin = mysql-bin
 binlog_format = mixed
 expire_logs_days = 30
 
-log_error = $mariadb_data_dir/mysql-error.log
+log_error = ${mariadb_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 = ${mariadb_data_dir}/mysql-slow.log
 
 performance_schema = 0
 
@@ -158,8 +182,8 @@ read_buffer = 4M
 write_buffer = 4M
 EOF
 
-sed -i "s@max_connections.*@max_connections = $(($Mem/2))@" /etc/my.cnf
-if [ $Mem -gt 1500 -a $Mem -le 2500 ];then
+  sed -i "s@max_connections.*@max_connections = $((${Mem}/2))@" /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
@@ -167,7 +191,7 @@ if [ $Mem -gt 1500 -a $Mem -le 2500 ];then
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 128M@' /etc/my.cnf
     sed -i 's@^tmp_table_size.*@tmp_table_size = 32M@' /etc/my.cnf
     sed -i 's@^table_open_cache.*@table_open_cache = 256@' /etc/my.cnf
-elif [ $Mem -gt 2500 -a $Mem -le 3500 ];then
+  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
@@ -175,7 +199,7 @@ elif [ $Mem -gt 2500 -a $Mem -le 3500 ];then
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 512M@' /etc/my.cnf
     sed -i 's@^tmp_table_size.*@tmp_table_size = 64M@' /etc/my.cnf
     sed -i 's@^table_open_cache.*@table_open_cache = 512@' /etc/my.cnf
-elif [ $Mem -gt 3500 ];then
+  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
@@ -183,26 +207,26 @@ elif [ $Mem -gt 3500 ];then
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 1024M@' /etc/my.cnf
     sed -i 's@^tmp_table_size.*@tmp_table_size = 128M@' /etc/my.cnf
     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
-
-chown mysql.mysql -R $mariadb_data_dir
-[ -d '/etc/mysql' ] && 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
-. /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;"
-rm -rf /etc/ld.so.conf.d/{mysql,mariadb,percona}*.conf
-echo "$mariadb_install_dir/lib" > /etc/ld.so.conf.d/mariadb.conf
-ldconfig
-service mysqld stop
+  fi
+
+  ${mariadb_install_dir}/scripts/mysql_install_db --user=mysql --basedir=${mariadb_install_dir} --datadir=${mariadb_data_dir}
+
+  chown mysql.mysql -R ${mariadb_data_dir}
+  [ -d "/etc/mysql" ] && 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
+  . /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;"
+  rm -rf /etc/ld.so.conf.d/{mysql,mariadb,percona}*.conf
+  echo "${mariadb_install_dir}/lib" > /etc/ld.so.conf.d/mariadb.conf
+  ldconfig
+  service mysqld stop
 }

+ 0 - 6
include/memcached.sh

@@ -10,7 +10,6 @@
 
 Install_memcached() {
 cd $oneinstack_dir/src
-src_url=http://www.memcached.org/files/memcached-$memcached_version.tar.gz && Download_src
 
 # memcached server
 id -u memcached >/dev/null 2>&1
@@ -47,11 +46,9 @@ if [ -e "$php_install_dir/bin/phpize" ];then
     if [ "`$php_install_dir/bin/php -r 'echo PHP_VERSION;' | awk -F. '{print $1}'`" == '7' ];then
         #git clone https://github.com/websupport-sk/pecl-memcache.git
         #cd pecl-memcache
-        src_url=http://mirrors.linuxeye.com/oneinstack/src/pecl-memcache-php7.tgz && Download_src
         tar xzf pecl-memcache-php7.tgz
         cd pecl-memcache-php7
     else
-        src_url=http://pecl.php.net/get/memcache-$memcache_pecl_version.tgz && Download_src
         tar xzf memcache-$memcache_pecl_version.tgz
         cd memcache-$memcache_pecl_version
     fi
@@ -77,7 +74,6 @@ cd ..
 Install_php-memcached() {
 cd $oneinstack_dir/src
 if [ -e "$php_install_dir/bin/phpize" ];then
-    src_url=https://launchpad.net/libmemcached/1.0/$libmemcached_version/+download/libmemcached-$libmemcached_version.tar.gz && Download_src
     # php memcached extension
     tar xzf libmemcached-$libmemcached_version.tar.gz
     cd libmemcached-$libmemcached_version
@@ -91,11 +87,9 @@ if [ -e "$php_install_dir/bin/phpize" ];then
     if [ "`$php_install_dir/bin/php -r 'echo PHP_VERSION;' | awk -F. '{print $1}'`" == '7' ];then
         #git clone -b php7 https://github.com/php-memcached-dev/php-memcached.git
         #cd php-memcached
-        src_url=http://mirrors.linuxeye.com/oneinstack/src/php-memcached-php7.tgz && Download_src
         tar xzf php-memcached-php7.tgz
         cd php-memcached-php7
     else
-        src_url=http://pecl.php.net/get/memcached-$memcached_pecl_version.tgz && Download_src
         tar xzf memcached-$memcached_pecl_version.tgz
         cd memcached-$memcached_pecl_version
     fi

+ 1 - 1
include/memory.sh

@@ -46,7 +46,7 @@ EOF
 }
 
 # add swapfile
-if [ "$Swap" == '0' ] ;then
+if [ "$Swap" == '0' ];then
     if [ $Mem -le 1024 ];then
         COUNT=1024
         Make-swapfile

+ 103 - 95
include/mysql-5.5.sh

@@ -9,73 +9,81 @@
 #       https://github.com/lj2007331/oneinstack
 
 Install_MySQL-5-5() {
-cd $oneinstack_dir/src
-
-if [ "$IPADDR_COUNTRY"x == "CN"x -a "$IPADDR_ISP" == 'aliyun' -a "`../include/check_port.py aliyun-oss.linuxeye.com 80`" == 'True' ];then
-    DOWN_ADDR_MYSQL=http://aliyun-oss.linuxeye.com/mysql/MySQL-5.5
-else
-    if [ "$IPADDR_COUNTRY"x == "CN"x ];then
-        if [ "`../include/check_port.py mirrors.tuna.tsinghua.edu.cn 443`" == 'True' ];then
-            DOWN_ADDR_MYSQL=https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.5
-        else
-            DOWN_ADDR_MYSQL=http://mirrors.sohu.com/mysql/MySQL-5.5
-            DOWN_ADDR_MYSQL_BK=$DOWN_ADDR_MYSQL
-        fi
-    else
-        if [ "`../include/check_port.py cdn.mysql.com 80`" == 'True' ];then
-            DOWN_ADDR_MYSQL=http://cdn.mysql.com/Downloads/MySQL-5.5
-        else
-            DOWN_ADDR_MYSQL=http://mysql.he.net/Downloads/MySQL-5.5
-            DOWN_ADDR_MYSQL_BK=$DOWN_ADDR_MYSQL
-        fi
+  pushd ${oneinstack_dir}/src
+
+  id -u mysql >/dev/null 2>&1
+  [ $? -ne 0 ] && useradd -M -s /sbin/nologin mysql
+
+  [ ! -d "${mysql_install_dir}" ] && mkdir -p ${mysql_install_dir}
+  mkdir -p ${mysql_data_dir};chown mysql.mysql -R ${mysql_data_dir}
+
+  if [ "${dbInstallMethods}" == "1" ];then
+    tar xvf mysql-${mysql_5_5_version}-linux2.6-${SYS_BIT_b}.tar.gz
+    mv mysql-${mysql_5_5_version}-linux2.6-${SYS_BIT_b}/* ${mysql_install_dir}
+
+    if [ "${je_tc_malloc}" == "1" ];then
+      sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libjemalloc.so@' ${mysql_install_dir}/bin/mysqld_safe
+    elif [ "${je_tc_malloc}" == "2" ];then
+      sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libtcmalloc.so@' ${mysql_install_dir}/bin/mysqld_safe
+    fi
+  elif [ "${dbInstallMethods}" == "2" ];then
+    tar xvf mysql-${mysql_5_5_version}.tar.gz
+    pushd mysql-${mysql_5_5_version}
+
+    if [ "${je_tc_malloc}" == "1" ];then
+      EXE_LINKER="-DCMAKE_EXE_LINKER_FLAGS='-ljemalloc'"
+    elif [ "${je_tc_malloc}" == "2" ];then
+      EXE_LINKER="-DCMAKE_EXE_LINKER_FLAGS='-ltcmalloc'"
     fi
-fi
-
-FILE_NAME=mysql-${mysql_5_5_version}-linux2.6-${SYS_BIT_b}.tar.gz
-wget --tries=6 -c --no-check-certificate $DOWN_ADDR_MYSQL/$FILE_NAME
-src_url=$DOWN_ADDR_MYSQL/$FILE_NAME.md5 && Download_src
-MYSQL_TAR_MD5=`awk '{print $1}' $FILE_NAME.md5`
-while [ "`md5sum $FILE_NAME | awk '{print $1}'`" != "$MYSQL_TAR_MD5" ];
-do
-    wget -4c --no-check-certificate $DOWN_ADDR_MYSQL_BK/$FILE_NAME;sleep 1
-    [ "`md5sum $FILE_NAME | awk '{print $1}'`" == "$MYSQL_TAR_MD5" ] && break || continue
-done
-
-id -u mysql >/dev/null 2>&1
-[ $? -ne 0 ] && useradd -M -s /sbin/nologin mysql
-
-[ ! -d "$mysql_install_dir" ] && mkdir -p $mysql_install_dir
-mkdir -p $mysql_data_dir;chown mysql.mysql -R $mysql_data_dir
-
-tar xzf mysql-${mysql_5_5_version}-linux2.6-${SYS_BIT_b}.tar.gz
-mv mysql-${mysql_5_5_version}-linux2.6-${SYS_BIT_b}/* $mysql_install_dir
-if [ "$je_tc_malloc" == '1' ];then
-    sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libjemalloc.so@' $mysql_install_dir/bin/mysqld_safe
-elif [ "$je_tc_malloc" == '2' ];then
-    sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libtcmalloc.so@' $mysql_install_dir/bin/mysqld_safe
-fi
-
-if [ -d "$mysql_install_dir/support-files" ];then
+    
+    [ "${armTarget}" == "y" ] && patch -p1 < ../mysql-5.5-fix-arm-client_plugin.patch
+
+    cmake . -DCMAKE_INSTALL_PREFIX=${mysql_install_dir} \
+    -DMYSQL_DATADIR=${mysql_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_READLINE=1 \
+    -DWITH_EMBEDDED_SERVER=1 \
+    -DENABLE_DTRACE=0 \
+    -DENABLED_LOCAL_INFILE=1 \
+    -DDEFAULT_CHARSET=utf8mb4 \
+    -DDEFAULT_COLLATION=utf8mb4_general_ci \
+    -DEXTRA_CHARSETS=all \
+    ${EXE_LINKER}
+    make -j ${THREAD}
+    make install
+    popd
+  fi
+
+  if [ -d "${mysql_install_dir}/support-files" ];then
     echo "${CSUCCESS}MySQL installed successfully! ${CEND}"
-    cd ..
-    rm -rf mysql-$mysql_5_6_version
-else
-    rm -rf $mysql_install_dir
+    if [ "${dbInstallMethods}" == "1" ];then
+      rm -rf mysql-${mysql_5_5_version}-*-${SYS_BIT_b}
+    elif [ "${dbInstallMethods}" == "2" ];then
+      rm -rf mysql-${mysql_5_5_version}
+    fi
+  else
+    rm -rf ${mysql_install_dir}
+    rm -rf mysql-${mysql_5_5_version}
     echo "${CFAILURE}MySQL install failed, Please contact the author! ${CEND}"
     kill -9 $$
-fi
-
-/bin/cp $mysql_install_dir/support-files/mysql.server /etc/init.d/mysqld
-sed -i "s@^basedir=.*@basedir=$mysql_install_dir@" /etc/init.d/mysqld
-sed -i "s@^datadir=.*@datadir=$mysql_data_dir@" /etc/init.d/mysqld
-chmod +x /etc/init.d/mysqld
-[ "$OS" == 'CentOS' ] && { chkconfig --add mysqld; chkconfig mysqld on; }
-[[ $OS =~ ^Ubuntu$|^Debian$ ]] && update-rc.d mysqld defaults
-cd ..
-
-# my.cnf
-[ -d "/etc/mysql" ] && /bin/mv /etc/mysql{,_bk}
-cat > /etc/my.cnf << EOF
+  fi
+
+  /bin/cp ${mysql_install_dir}/support-files/mysql.server /etc/init.d/mysqld
+  sed -i "s@^basedir=.*@basedir=${mysql_install_dir}@" /etc/init.d/mysqld
+  sed -i "s@^datadir=.*@datadir=${mysql_data_dir}@" /etc/init.d/mysqld
+  chmod +x /etc/init.d/mysqld
+  [ "${OS}" == "CentOS" ] && { chkconfig --add mysqld; chkconfig mysqld on; }
+  [[ "${OS}" =~ ^Ubuntu$|^Debian$ ]] && update-rc.d mysqld defaults
+  popd
+
+  # my.cnf
+  [ -d "/etc/mysql" ] && /bin/mv /etc/mysql{,_bk}
+  cat > /etc/my.cnf << EOF
 [client]
 port = 3306
 socket = /tmp/mysql.sock
@@ -89,9 +97,9 @@ no-auto-rehash
 port = 3306
 socket = /tmp/mysql.sock
 
-basedir = $mysql_install_dir
-datadir = $mysql_data_dir
-pid-file = $mysql_data_dir/mysql.pid
+basedir = ${mysql_install_dir}
+datadir = ${mysql_data_dir}
+pid-file = ${mysql_data_dir}/mysql.pid
 user = mysql
 bind-address = 0.0.0.0
 server-id = 1
@@ -130,10 +138,10 @@ log_bin = mysql-bin
 binlog_format = mixed
 expire_logs_days = 7
 
-log_error = $mysql_data_dir/mysql-error.log
+log_error = ${mysql_data_dir}/mysql-error.log
 slow_query_log = 1
 long_query_time = 1
-slow_query_log_file = $mysql_data_dir/mysql-slow.log
+slow_query_log_file = ${mysql_data_dir}/mysql-slow.log
 
 performance_schema = 0
 
@@ -175,8 +183,8 @@ read_buffer = 4M
 write_buffer = 4M
 EOF
 
-sed -i "s@max_connections.*@max_connections = $(($Mem/2))@" /etc/my.cnf
-if [ $Mem -gt 1500 -a $Mem -le 2500 ];then
+  sed -i "s@max_connections.*@max_connections = $((${Mem}/2))@" /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
@@ -184,7 +192,7 @@ if [ $Mem -gt 1500 -a $Mem -le 2500 ];then
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 128M@' /etc/my.cnf
     sed -i 's@^tmp_table_size.*@tmp_table_size = 32M@' /etc/my.cnf
     sed -i 's@^table_open_cache.*@table_open_cache = 256@' /etc/my.cnf
-elif [ $Mem -gt 2500 -a $Mem -le 3500 ];then
+  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
@@ -192,7 +200,7 @@ elif [ $Mem -gt 2500 -a $Mem -le 3500 ];then
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 512M@' /etc/my.cnf
     sed -i 's@^tmp_table_size.*@tmp_table_size = 64M@' /etc/my.cnf
     sed -i 's@^table_open_cache.*@table_open_cache = 512@' /etc/my.cnf
-elif [ $Mem -gt 3500 ];then
+  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
@@ -200,27 +208,27 @@ elif [ $Mem -gt 3500 ];then
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 1024M@' /etc/my.cnf
     sed -i 's@^tmp_table_size.*@tmp_table_size = 128M@' /etc/my.cnf
     sed -i 's@^table_open_cache.*@table_open_cache = 1024@' /etc/my.cnf
-fi
-
-$mysql_install_dir/scripts/mysql_install_db --user=mysql --basedir=$mysql_install_dir --datadir=$mysql_data_dir
-
-chown mysql.mysql -R $mysql_data_dir
-[ -d '/etc/mysql' ] && mv /etc/mysql{,_bk}
-service mysqld start
-[ -z "`grep ^'export PATH=' /etc/profile`" ] && echo "export PATH=$mysql_install_dir/bin:\$PATH" >> /etc/profile
-[ -n "`grep ^'export PATH=' /etc/profile`" -a -z "`grep $mysql_install_dir /etc/profile`" ] && sed -i "s@^export PATH=\(.*\)@export PATH=$mysql_install_dir/bin:\1@" /etc/profile
-. /etc/profile
-
-$mysql_install_dir/bin/mysql -e "grant all privileges on *.* to root@'127.0.0.1' identified by \"$dbrootpwd\" with grant option;"
-$mysql_install_dir/bin/mysql -e "grant all privileges on *.* to root@'localhost' identified by \"$dbrootpwd\" with grant option;"
-$mysql_install_dir/bin/mysql -uroot -p$dbrootpwd -e "delete from mysql.user where Password='';"
-$mysql_install_dir/bin/mysql -uroot -p$dbrootpwd -e "delete from mysql.db where User='';"
-$mysql_install_dir/bin/mysql -uroot -p$dbrootpwd -e "delete from mysql.proxies_priv where Host!='localhost';"
-$mysql_install_dir/bin/mysql -uroot -p$dbrootpwd -e "drop database test;"
-$mysql_install_dir/bin/mysql -uroot -p$dbrootpwd -e "reset master;"
-rm -rf /etc/ld.so.conf.d/{mysql,mariadb,percona}*.conf
-[ -e "$mysql_install_dir/my.cnf" ] && rm -rf $mysql_install_dir/my.cnf
-echo "$mysql_install_dir/lib" > /etc/ld.so.conf.d/mysql.conf
-ldconfig
-service mysqld stop
+  fi
+
+  ${mysql_install_dir}/scripts/mysql_install_db --user=mysql --basedir=${mysql_install_dir} --datadir=${mysql_data_dir}
+
+  chown mysql.mysql -R ${mysql_data_dir}
+  [ -d "/etc/mysql" ] && mv /etc/mysql{,_bk}
+  service mysqld start
+  [ -z "$(grep ^'export PATH=' /etc/profile)" ] && echo "export PATH=${mysql_install_dir}/bin:\$PATH" >> /etc/profile
+  [ -n "$(grep ^'export PATH=' /etc/profile)" -a -z "$(grep ${mysql_install_dir} /etc/profile)" ] && sed -i "s@^export PATH=\(.*\)@export PATH=${mysql_install_dir}/bin:\1@" /etc/profile
+  . /etc/profile
+
+  ${mysql_install_dir}/bin/mysql -e "grant all privileges on *.* to root@'127.0.0.1' identified by \"${dbrootpwd}\" with grant option;"
+  ${mysql_install_dir}/bin/mysql -e "grant all privileges on *.* to root@'localhost' identified by \"${dbrootpwd}\" with grant option;"
+  ${mysql_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "delete from mysql.user where Password='';"
+  ${mysql_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "delete from mysql.db where User='';"
+  ${mysql_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "delete from mysql.proxies_priv where Host!='localhost';"
+  ${mysql_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "drop database test;"
+  ${mysql_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "reset master;"
+  rm -rf /etc/ld.so.conf.d/{mysql,mariadb,percona}*.conf
+  [ -e "${mysql_install_dir}/my.cnf" ] && rm -rf ${mysql_install_dir}/my.cnf
+  echo "${mysql_install_dir}/lib" > /etc/ld.so.conf.d/mysql.conf
+  ldconfig
+  service mysqld stop
 }

+ 100 - 95
include/mysql-5.6.sh

@@ -9,73 +9,78 @@
 #       https://github.com/lj2007331/oneinstack
 
 Install_MySQL-5-6() {
-cd $oneinstack_dir/src
-
-if [ "$IPADDR_COUNTRY"x == "CN"x -a "$IPADDR_ISP" == 'aliyun' -a "`../include/check_port.py aliyun-oss.linuxeye.com 80`" == 'True' ];then
-    DOWN_ADDR_MYSQL=http://aliyun-oss.linuxeye.com/mysql/MySQL-5.6
-else
-    if [ "$IPADDR_COUNTRY"x == "CN"x ];then
-        if [ "`../include/check_port.py mirrors.tuna.tsinghua.edu.cn 443`" == 'True' ];then
-            DOWN_ADDR_MYSQL=https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.6
-        else
-            DOWN_ADDR_MYSQL=http://mirrors.sohu.com/mysql/MySQL-5.6
-            DOWN_ADDR_MYSQL_BK=$DOWN_ADDR_MYSQL
-        fi
-    else
-        if [ "`../include/check_port.py cdn.mysql.com 80`" == 'True' ];then
-            DOWN_ADDR_MYSQL=http://cdn.mysql.com/Downloads/MySQL-5.6
-        else
-            DOWN_ADDR_MYSQL=http://mysql.he.net/Downloads/MySQL-5.6
-            DOWN_ADDR_MYSQL_BK=$DOWN_ADDR_MYSQL
-        fi
+  pushd ${oneinstack_dir}/src
+
+  id -u mysql >/dev/null 2>&1
+  [ $? -ne 0 ] && useradd -M -s /sbin/nologin mysql
+
+  [ ! -d "${mysql_install_dir}" ] && mkdir -p ${mysql_install_dir}
+  mkdir -p ${mysql_data_dir};chown mysql.mysql -R ${mysql_data_dir}
+
+  if [ "${dbInstallMethods}" == "1" ];then
+    tar xvf mysql-${mysql_5_6_version}-linux-glibc2.5-${SYS_BIT_b}.tar.gz
+    mv mysql-${mysql_5_6_version}-linux-glibc2.5-${SYS_BIT_b}/* ${mysql_install_dir}
+
+    if [ "${je_tc_malloc}" == "1" ];then
+      sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libjemalloc.so@' ${mysql_install_dir}/bin/mysqld_safe
+    elif [ "${je_tc_malloc}" == "2" ];then
+      sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libtcmalloc.so@' ${mysql_install_dir}/bin/mysqld_safe
     fi
-fi
-
-FILE_NAME=mysql-${mysql_5_6_version}-linux-glibc2.5-${SYS_BIT_b}.tar.gz
-wget --tries=6 -c --no-check-certificate $DOWN_ADDR_MYSQL/$FILE_NAME
-src_url=$DOWN_ADDR_MYSQL/$FILE_NAME.md5 && Download_src
-MYSQL_TAR_MD5=`awk '{print $1}' $FILE_NAME.md5`
-while [ "`md5sum $FILE_NAME | awk '{print $1}'`" != "$MYSQL_TAR_MD5" ];
-do
-    wget -4c --no-check-certificate $DOWN_ADDR_MYSQL_BK/$FILE_NAME;sleep 1
-    [ "`md5sum $FILE_NAME | awk '{print $1}'`" == "$MYSQL_TAR_MD5" ] && break || continue
-done
-
-id -u mysql >/dev/null 2>&1
-[ $? -ne 0 ] && useradd -M -s /sbin/nologin mysql
-
-[ ! -d "$mysql_install_dir" ] && mkdir -p $mysql_install_dir
-mkdir -p $mysql_data_dir;chown mysql.mysql -R $mysql_data_dir
-
-tar zxf mysql-${mysql_5_6_version}-linux-glibc2.5-${SYS_BIT_b}.tar.gz
-mv mysql-${mysql_5_6_version}-linux-glibc2.5-${SYS_BIT_b}/* $mysql_install_dir
-if [ "$je_tc_malloc" == '1' ];then
-    sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libjemalloc.so@' $mysql_install_dir/bin/mysqld_safe
-elif [ "$je_tc_malloc" == '2' ];then
-    sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libtcmalloc.so@' $mysql_install_dir/bin/mysqld_safe
-fi
-
-if [ -d "$mysql_install_dir/support-files" ];then
+  elif [ "${dbInstallMethods}" == "2" ];then
+    tar xvf mysql-${mysql_5_6_version}.tar.gz
+    pushd mysql-${mysql_5_6_version}
+
+    if [ "${je_tc_malloc}" == "1" ];then
+      EXE_LINKER="-DCMAKE_EXE_LINKER_FLAGS='-ljemalloc'"
+    elif [ "${je_tc_malloc}" == "2" ];then
+      EXE_LINKER="-DCMAKE_EXE_LINKER_FLAGS='-ltcmalloc'"
+    fi
+
+    cmake . -DCMAKE_INSTALL_PREFIX=${mysql_install_dir} \
+    -DMYSQL_DATADIR=${mysql_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_EMBEDDED_SERVER=1 \
+    -DENABLE_DTRACE=0 \
+    -DENABLED_LOCAL_INFILE=1 \
+    -DDEFAULT_CHARSET=utf8mb4 \
+    -DDEFAULT_COLLATION=utf8mb4_general_ci \
+    -DEXTRA_CHARSETS=all \
+    ${EXE_LINKER}
+    make -j ${THREAD}
+    make install
+    popd
+  fi
+
+  if [ -d "${mysql_install_dir}/support-files" ];then
     echo "${CSUCCESS}MySQL installed successfully! ${CEND}"
-    cd ..
-    rm -rf mysql-$mysql_5_6_version
-else
-    rm -rf $mysql_install_dir
+    if [ "${dbInstallMethods}" == "1" ];then
+      rm -rf mysql-${mysql_5_6_version}-*-${SYS_BIT_b}
+    elif [ "${dbInstallMethods}" == "2" ];then
+      rm -rf mysql-${mysql_5_6_version}
+    fi
+  else
+    rm -rf ${mysql_install_dir}
+    rm -rf mysql-${mysql_5_6_version}
     echo "${CFAILURE}MySQL install failed, Please contact the author! ${CEND}"
     kill -9 $$
-fi
-
-/bin/cp $mysql_install_dir/support-files/mysql.server /etc/init.d/mysqld
-sed -i "s@^basedir=.*@basedir=$mysql_install_dir@" /etc/init.d/mysqld
-sed -i "s@^datadir=.*@datadir=$mysql_data_dir@" /etc/init.d/mysqld
-chmod +x /etc/init.d/mysqld
-[ "$OS" == 'CentOS' ] && { chkconfig --add mysqld; chkconfig mysqld on; }
-[[ $OS =~ ^Ubuntu$|^Debian$ ]] && update-rc.d mysqld defaults
-cd ..
-
-# my.cnf
-[ -d "/etc/mysql" ] && /bin/mv /etc/mysql{,_bk}
-cat > /etc/my.cnf << EOF
+  fi
+
+  /bin/cp ${mysql_install_dir}/support-files/mysql.server /etc/init.d/mysqld
+  sed -i "s@^basedir=.*@basedir=${mysql_install_dir}@" /etc/init.d/mysqld
+  sed -i "s@^datadir=.*@datadir=${mysql_data_dir}@" /etc/init.d/mysqld
+  chmod +x /etc/init.d/mysqld
+  [ "${OS}" == "CentOS" ] && { chkconfig --add mysqld; chkconfig mysqld on; }
+  [[ "${OS}" =~ ^Ubuntu$|^Debian$ ]] && update-rc.d mysqld defaults
+  popd
+
+  # my.cnf
+  [ -d "/etc/mysql" ] && /bin/mv /etc/mysql{,_bk}
+  cat > /etc/my.cnf << EOF
 [client]
 port = 3306
 socket = /tmp/mysql.sock
@@ -89,9 +94,9 @@ no-auto-rehash
 port = 3306
 socket = /tmp/mysql.sock
 
-basedir = $mysql_install_dir
-datadir = $mysql_data_dir
-pid-file = $mysql_data_dir/mysql.pid
+basedir = ${mysql_install_dir}
+datadir = ${mysql_data_dir}
+pid-file = ${mysql_data_dir}/mysql.pid
 user = mysql
 bind-address = 0.0.0.0
 server-id = 1
@@ -130,10 +135,10 @@ log_bin = mysql-bin
 binlog_format = mixed
 expire_logs_days = 7
 
-log_error = $mysql_data_dir/mysql-error.log
+log_error = ${mysql_data_dir}/mysql-error.log
 slow_query_log = 1
 long_query_time = 1
-slow_query_log_file = $mysql_data_dir/mysql-slow.log
+slow_query_log_file = ${mysql_data_dir}/mysql-slow.log
 
 performance_schema = 0
 explicit_defaults_for_timestamp
@@ -176,8 +181,8 @@ read_buffer = 4M
 write_buffer = 4M
 EOF
 
-sed -i "s@max_connections.*@max_connections = $(($Mem/2))@" /etc/my.cnf
-if [ $Mem -gt 1500 -a $Mem -le 2500 ];then
+  sed -i "s@max_connections.*@max_connections = $((${Mem}/2))@" /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
@@ -185,7 +190,7 @@ if [ $Mem -gt 1500 -a $Mem -le 2500 ];then
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 128M@' /etc/my.cnf
     sed -i 's@^tmp_table_size.*@tmp_table_size = 32M@' /etc/my.cnf
     sed -i 's@^table_open_cache.*@table_open_cache = 256@' /etc/my.cnf
-elif [ $Mem -gt 2500 -a $Mem -le 3500 ];then
+  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
@@ -193,7 +198,7 @@ elif [ $Mem -gt 2500 -a $Mem -le 3500 ];then
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 512M@' /etc/my.cnf
     sed -i 's@^tmp_table_size.*@tmp_table_size = 64M@' /etc/my.cnf
     sed -i 's@^table_open_cache.*@table_open_cache = 512@' /etc/my.cnf
-elif [ $Mem -gt 3500 ];then
+  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
@@ -201,27 +206,27 @@ elif [ $Mem -gt 3500 ];then
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 1024M@' /etc/my.cnf
     sed -i 's@^tmp_table_size.*@tmp_table_size = 128M@' /etc/my.cnf
     sed -i 's@^table_open_cache.*@table_open_cache = 1024@' /etc/my.cnf
-fi
-
-$mysql_install_dir/scripts/mysql_install_db --user=mysql --basedir=$mysql_install_dir --datadir=$mysql_data_dir
-
-chown mysql.mysql -R $mysql_data_dir
-[ -d '/etc/mysql' ] && mv /etc/mysql{,_bk}
-service mysqld start
-[ -z "`grep ^'export PATH=' /etc/profile`" ] && echo "export PATH=$mysql_install_dir/bin:\$PATH" >> /etc/profile
-[ -n "`grep ^'export PATH=' /etc/profile`" -a -z "`grep $mysql_install_dir /etc/profile`" ] && sed -i "s@^export PATH=\(.*\)@export PATH=$mysql_install_dir/bin:\1@" /etc/profile
-. /etc/profile
-
-$mysql_install_dir/bin/mysql -e "grant all privileges on *.* to root@'127.0.0.1' identified by \"$dbrootpwd\" with grant option;"
-$mysql_install_dir/bin/mysql -e "grant all privileges on *.* to root@'localhost' identified by \"$dbrootpwd\" with grant option;"
-$mysql_install_dir/bin/mysql -uroot -p$dbrootpwd -e "delete from mysql.user where Password='';"
-$mysql_install_dir/bin/mysql -uroot -p$dbrootpwd -e "delete from mysql.db where User='';"
-$mysql_install_dir/bin/mysql -uroot -p$dbrootpwd -e "delete from mysql.proxies_priv where Host!='localhost';"
-$mysql_install_dir/bin/mysql -uroot -p$dbrootpwd -e "drop database test;"
-$mysql_install_dir/bin/mysql -uroot -p$dbrootpwd -e "reset master;"
-rm -rf /etc/ld.so.conf.d/{mysql,mariadb,percona}*.conf
-echo "$mysql_install_dir/lib" > /etc/ld.so.conf.d/mysql.conf
-[ -e "$mysql_install_dir/my.cnf" ] && rm -rf $mysql_install_dir/my.cnf
-ldconfig
-service mysqld stop
+  fi
+
+  ${mysql_install_dir}/scripts/mysql_install_db --user=mysql --basedir=${mysql_install_dir} --datadir=${mysql_data_dir}
+
+  chown mysql.mysql -R ${mysql_data_dir}
+  [ -d "/etc/mysql" ] && mv /etc/mysql{,_bk}
+  service mysqld start
+  [ -z "$(grep ^'export PATH=' /etc/profile)" ] && echo "export PATH=${mysql_install_dir}/bin:\$PATH" >> /etc/profile
+  [ -n "$(grep ^'export PATH=' /etc/profile)" -a -z "$(grep ${mysql_install_dir} /etc/profile)" ] && sed -i "s@^export PATH=\(.*\)@export PATH=${mysql_install_dir}/bin:\1@" /etc/profile
+  . /etc/profile
+
+  ${mysql_install_dir}/bin/mysql -e "grant all privileges on *.* to root@'127.0.0.1' identified by \"${dbrootpwd}\" with grant option;"
+  ${mysql_install_dir}/bin/mysql -e "grant all privileges on *.* to root@'localhost' identified by \"${dbrootpwd}\" with grant option;"
+  ${mysql_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "delete from mysql.user where Password='';"
+  ${mysql_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "delete from mysql.db where User='';"
+  ${mysql_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "delete from mysql.proxies_priv where Host!='localhost';"
+  ${mysql_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "drop database test;"
+  ${mysql_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "reset master;"
+  rm -rf /etc/ld.so.conf.d/{mysql,mariadb,percona}*.conf
+  [ -e "${mysql_install_dir}/my.cnf" ] && rm -rf ${mysql_install_dir}/my.cnf
+  echo "${mysql_install_dir}/lib" > /etc/ld.so.conf.d/mysql.conf
+  ldconfig
+  service mysqld stop
 }

+ 96 - 91
include/mysql-5.7.sh

@@ -9,73 +9,78 @@
 #       https://github.com/lj2007331/oneinstack
 
 Install_MySQL-5-7() {
-cd $oneinstack_dir/src
-
-if [ "$IPADDR_COUNTRY"x == "CN"x -a "$IPADDR_ISP" == 'aliyun' -a "`../include/check_port.py aliyun-oss.linuxeye.com 80`" == 'True' ];then
-    DOWN_ADDR_MYSQL=http://aliyun-oss.linuxeye.com/mysql/MySQL-5.7
-else
-    if [ "$IPADDR_COUNTRY"x == "CN"x ];then
-        if [ "`../include/check_port.py mirrors.tuna.tsinghua.edu.cn 443`" == 'True' ];then
-            DOWN_ADDR_MYSQL=https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.7
-        else
-            DOWN_ADDR_MYSQL=http://mirrors.sohu.com/mysql/MySQL-5.7
-            DOWN_ADDR_MYSQL_BK=$DOWN_ADDR_MYSQL
-        fi
-    else
-        if [ "`../include/check_port.py cdn.mysql.com 80`" == 'True' ];then
-            DOWN_ADDR_MYSQL=http://cdn.mysql.com/Downloads/MySQL-5.7
-        else
-            DOWN_ADDR_MYSQL=http://mysql.he.net/Downloads/MySQL-5.7
-            DOWN_ADDR_MYSQL_BK=$DOWN_ADDR_MYSQL
-        fi
+  pushd ${oneinstack_dir}/src
+
+  id -u mysql >/dev/null 2>&1
+  [ $? -ne 0 ] && useradd -M -s /sbin/nologin mysql
+
+  [ ! -d "${mysql_install_dir}" ] && mkdir -p ${mysql_install_dir}
+  mkdir -p ${mysql_data_dir};chown mysql.mysql -R ${mysql_data_dir}
+
+  if [ "${dbInstallMethods}" == "1" ];then
+    tar xvf mysql-${mysql_5_7_version}-linux-glibc2.5-${SYS_BIT_b}.tar.gz
+    mv mysql-${mysql_5_7_version}-linux-glibc2.5-${SYS_BIT_b}/* ${mysql_install_dir}
+
+    if [ "${je_tc_malloc}" == "1" ];then
+      sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libjemalloc.so@' ${mysql_install_dir}/bin/mysqld_safe
+    elif [ "${je_tc_malloc}" == "2" ];then
+      sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libtcmalloc.so@' ${mysql_install_dir}/bin/mysqld_safe
     fi
-fi
-
-FILE_NAME=mysql-${mysql_5_7_version}-linux-glibc2.5-${SYS_BIT_b}.tar.gz
-wget --tries=6 -c --no-check-certificate $DOWN_ADDR_MYSQL/$FILE_NAME
-src_url=$DOWN_ADDR_MYSQL/$FILE_NAME.md5 && Download_src
-MYSQL_TAR_MD5=`awk '{print $1}' $FILE_NAME.md5`
-while [ "`md5sum $FILE_NAME | awk '{print $1}'`" != "$MYSQL_TAR_MD5" ];
-do
-    wget -4c --no-check-certificate $DOWN_ADDR_MYSQL_BK/$FILE_NAME;sleep 1
-    [ "`md5sum $FILE_NAME | awk '{print $1}'`" == "$MYSQL_TAR_MD5" ] && break || continue
-done
-
-id -u mysql >/dev/null 2>&1
-[ $? -ne 0 ] && useradd -M -s /sbin/nologin mysql
-
-[ ! -d "$mysql_install_dir" ] && mkdir -p $mysql_install_dir
-mkdir -p $mysql_data_dir;chown mysql.mysql -R $mysql_data_dir
-
-tar zxf mysql-${mysql_5_7_version}-linux-glibc2.5-${SYS_BIT_b}.tar.gz
-mv mysql-${mysql_5_7_version}-linux-glibc2.5-${SYS_BIT_b}/* $mysql_install_dir
-if [ "$je_tc_malloc" == '1' ];then
-    sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libjemalloc.so@' $mysql_install_dir/bin/mysqld_safe
-elif [ "$je_tc_malloc" == '2' ];then
-    sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libtcmalloc.so@' $mysql_install_dir/bin/mysqld_safe
-fi
-
-if [ -d "$mysql_install_dir/support-files" ];then
+  elif [ "${dbInstallMethods}" == "2" ];then
+    tar xvf mysql-${mysql_5_7_version}.tar.gz
+    pushd mysql-${mysql_5_7_version}
+
+    if [ "${je_tc_malloc}" == "1" ];then
+      EXE_LINKER="-DCMAKE_EXE_LINKER_FLAGS='-ljemalloc'"
+    elif [ "${je_tc_malloc}" == "2" ];then
+      EXE_LINKER="-DCMAKE_EXE_LINKER_FLAGS='-ltcmalloc'"
+    fi
+
+    cmake . -DCMAKE_INSTALL_PREFIX=${mysql_install_dir} \
+    -DMYSQL_DATADIR=${mysql_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_EMBEDDED_SERVER=1 \
+    -DENABLE_DTRACE=0 \
+    -DENABLED_LOCAL_INFILE=1 \
+    -DDEFAULT_CHARSET=utf8mb4 \
+    -DDEFAULT_COLLATION=utf8mb4_general_ci \
+    -DEXTRA_CHARSETS=all \
+    ${EXE_LINKER}
+    make -j ${THREAD}
+    make install
+    popd
+  fi
+
+  if [ -d "${mysql_install_dir}/support-files" ];then
     echo "${CSUCCESS}MySQL installed successfully! ${CEND}"
-    cd ..
-    rm -rf mysql-$mysql_5_7_version
-else
-    rm -rf $mysql_install_dir
+    if [ "${dbInstallMethods}" == "1" ];then
+      rm -rf mysql-${mysql_5_7_version}-*-${SYS_BIT_b}
+    elif [ "${dbInstallMethods}" == "2" ];then
+      rm -rf mysql-${mysql_5_7_version}
+    fi
+  else
+    rm -rf ${mysql_install_dir}
+    rm -rf mysql-${mysql_5_7_version}
     echo "${CFAILURE}MySQL install failed, Please contact the author! ${CEND}"
     kill -9 $$
-fi
-
-/bin/cp $mysql_install_dir/support-files/mysql.server /etc/init.d/mysqld
-sed -i "s@^basedir=.*@basedir=$mysql_install_dir@" /etc/init.d/mysqld
-sed -i "s@^datadir=.*@datadir=$mysql_data_dir@" /etc/init.d/mysqld
-chmod +x /etc/init.d/mysqld
-[ "$OS" == 'CentOS' ] && { chkconfig --add mysqld; chkconfig mysqld on; }
-[[ $OS =~ ^Ubuntu$|^Debian$ ]] && update-rc.d mysqld defaults
-cd ..
-
-# my.cnf
-[ -d "/etc/mysql" ] && /bin/mv /etc/mysql{,_bk}
-cat > /etc/my.cnf << EOF
+  fi
+
+  /bin/cp ${mysql_install_dir}/support-files/mysql.server /etc/init.d/mysqld
+  sed -i "s@^basedir=.*@basedir=${mysql_install_dir}@" /etc/init.d/mysqld
+  sed -i "s@^datadir=.*@datadir=${mysql_data_dir}@" /etc/init.d/mysqld
+  chmod +x /etc/init.d/mysqld
+  [ "${OS}" == "CentOS" ] && { chkconfig --add mysqld; chkconfig mysqld on; }
+  [[ "${OS}" =~ ^Ubuntu$|^Debian$ ]] && update-rc.d mysqld defaults
+  popd
+
+  # my.cnf
+  [ -d "/etc/mysql" ] && /bin/mv /etc/mysql{,_bk}
+  cat > /etc/my.cnf << EOF
 [client]
 port = 3306
 socket = /tmp/mysql.sock
@@ -89,9 +94,9 @@ no-auto-rehash
 port = 3306
 socket = /tmp/mysql.sock
 
-basedir = $mysql_install_dir
-datadir = $mysql_data_dir
-pid-file = $mysql_data_dir/mysql.pid
+basedir = ${mysql_install_dir}
+datadir = ${mysql_data_dir}
+pid-file = ${mysql_data_dir}/mysql.pid
 user = mysql
 bind-address = 0.0.0.0
 server-id = 1
@@ -130,10 +135,10 @@ log_bin = mysql-bin
 binlog_format = mixed
 expire_logs_days = 7
 
-log_error = $mysql_data_dir/mysql-error.log
+log_error = ${mysql_data_dir}/mysql-error.log
 slow_query_log = 1
 long_query_time = 1
-slow_query_log_file = $mysql_data_dir/mysql-slow.log
+slow_query_log_file = ${mysql_data_dir}/mysql-slow.log
 
 performance_schema = 0
 explicit_defaults_for_timestamp
@@ -177,8 +182,8 @@ read_buffer = 4M
 write_buffer = 4M
 EOF
 
-sed -i "s@max_connections.*@max_connections = $(($Mem/2))@" /etc/my.cnf
-if [ $Mem -gt 1500 -a $Mem -le 2500 ];then
+  sed -i "s@max_connections.*@max_connections = $((${Mem}/2))@" /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
@@ -186,7 +191,7 @@ if [ $Mem -gt 1500 -a $Mem -le 2500 ];then
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 128M@' /etc/my.cnf
     sed -i 's@^tmp_table_size.*@tmp_table_size = 32M@' /etc/my.cnf
     sed -i 's@^table_open_cache.*@table_open_cache = 256@' /etc/my.cnf
-elif [ $Mem -gt 2500 -a $Mem -le 3500 ];then
+  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
@@ -194,7 +199,7 @@ elif [ $Mem -gt 2500 -a $Mem -le 3500 ];then
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 512M@' /etc/my.cnf
     sed -i 's@^tmp_table_size.*@tmp_table_size = 64M@' /etc/my.cnf
     sed -i 's@^table_open_cache.*@table_open_cache = 512@' /etc/my.cnf
-elif [ $Mem -gt 3500 ];then
+  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
@@ -202,23 +207,23 @@ elif [ $Mem -gt 3500 ];then
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 1024M@' /etc/my.cnf
     sed -i 's@^tmp_table_size.*@tmp_table_size = 128M@' /etc/my.cnf
     sed -i 's@^table_open_cache.*@table_open_cache = 1024@' /etc/my.cnf
-fi
-
-$mysql_install_dir/bin/mysqld --initialize-insecure --user=mysql --basedir=$mysql_install_dir --datadir=$mysql_data_dir
-
-chown mysql.mysql -R $mysql_data_dir
-[ -d '/etc/mysql' ] && mv /etc/mysql{,_bk}
-service mysqld start
-[ -z "`grep ^'export PATH=' /etc/profile`" ] && echo "export PATH=$mysql_install_dir/bin:\$PATH" >> /etc/profile
-[ -n "`grep ^'export PATH=' /etc/profile`" -a -z "`grep $mysql_install_dir /etc/profile`" ] && sed -i "s@^export PATH=\(.*\)@export PATH=$mysql_install_dir/bin:\1@" /etc/profile
-. /etc/profile
-
-$mysql_install_dir/bin/mysql -e "grant all privileges on *.* to root@'127.0.0.1' identified by \"$dbrootpwd\" with grant option;"
-$mysql_install_dir/bin/mysql -e "grant all privileges on *.* to root@'localhost' identified by \"$dbrootpwd\" with grant option;"
-$mysql_install_dir/bin/mysql -uroot -p$dbrootpwd -e "reset master;"
-rm -rf /etc/ld.so.conf.d/{mysql,mariadb,percona}*.conf
-[ -e "$mysql_install_dir/my.cnf" ] && rm -rf $mysql_install_dir/my.cnf
-echo "$mysql_install_dir/lib" > /etc/ld.so.conf.d/mysql.conf
-ldconfig
-service mysqld stop
+  fi
+
+  ${mysql_install_dir}/bin/mysqld --initialize-insecure --user=mysql --basedir=${mysql_install_dir} --datadir=${mysql_data_dir}
+
+  chown mysql.mysql -R ${mysql_data_dir}
+  [ -d "/etc/mysql" ] && mv /etc/mysql{,_bk}
+  service mysqld start
+  [ -z "$(grep ^'export PATH=' /etc/profile)" ] && echo "export PATH=${mysql_install_dir}/bin:\$PATH" >> /etc/profile
+  [ -n "$(grep ^'export PATH=' /etc/profile)" -a -z "$(grep ${mysql_install_dir} /etc/profile)" ] && sed -i "s@^export PATH=\(.*\)@export PATH=${mysql_install_dir}/bin:\1@" /etc/profile
+  . /etc/profile
+
+  ${mysql_install_dir}/bin/mysql -e "grant all privileges on *.* to root@'127.0.0.1' identified by \"${dbrootpwd}\" with grant option;"
+  ${mysql_install_dir}/bin/mysql -e "grant all privileges on *.* to root@'localhost' identified by \"${dbrootpwd}\" with grant option;"
+  ${mysql_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "reset master;"
+  rm -rf /etc/ld.so.conf.d/{mysql,mariadb,percona}*.conf
+  [ -e "${mysql_install_dir}/my.cnf" ] && rm -rf ${mysql_install_dir}/my.cnf
+  echo "${mysql_install_dir}/lib" > /etc/ld.so.conf.d/mysql.conf
+  ldconfig
+  service mysqld stop
 }

+ 0 - 3
include/nginx.sh

@@ -10,9 +10,6 @@
 
 Install_Nginx() {
 cd $oneinstack_dir/src
-src_url=http://mirrors.linuxeye.com/oneinstack/src/pcre-$pcre_version.tar.gz && Download_src
-src_url=http://nginx.org/download/nginx-$nginx_version.tar.gz && Download_src
-src_url=https://www.openssl.org/source/openssl-$openssl_version.tar.gz && Download_src
 
 id -u $run_user >/dev/null 2>&1
 [ $? -ne 0 ] && useradd -M -s /sbin/nologin $run_user

+ 0 - 3
include/openresty.sh

@@ -10,9 +10,6 @@
 
 Install_OpenResty() {
 cd $oneinstack_dir/src
-src_url=http://mirrors.linuxeye.com/oneinstack/src/pcre-$pcre_version.tar.gz && Download_src
-src_url=https://openresty.org/download/openresty-$openresty_version.tar.gz && Download_src
-src_url=https://www.openssl.org/source/openssl-$openssl_version.tar.gz && Download_src
 
 id -u $run_user >/dev/null 2>&1
 [ $? -ne 0 ] && useradd -M -s /sbin/nologin $run_user

+ 106 - 81
include/percona-5.5.sh

@@ -9,59 +9,84 @@
 #       https://github.com/lj2007331/oneinstack
 
 Install_Percona-5-5() {
-cd $oneinstack_dir/src
-src_url=https://www.percona.com/downloads/Percona-Server-5.5/Percona-Server-$percona_5_5_version/source/tarball/percona-server-$percona_5_5_version.tar.gz && Download_src
-
-id -u mysql >/dev/null 2>&1
-[ $? -ne 0 ] && useradd -M -s /sbin/nologin mysql
-
-mkdir -p $percona_data_dir;chown mysql.mysql -R $percona_data_dir
-tar zxf percona-server-$percona_5_5_version.tar.gz
-cd percona-server-$percona_5_5_version
-if [ "$je_tc_malloc" == '1' ];then
-    EXE_LINKER="-DCMAKE_EXE_LINKER_FLAGS='-ljemalloc'"
-elif [ "$je_tc_malloc" == '2' ];then
-    EXE_LINKER="-DCMAKE_EXE_LINKER_FLAGS='-ltcmalloc'"
-fi
-make clean
-[ ! -d "$percona_install_dir" ] && mkdir -p $percona_install_dir
-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 \
-$EXE_LINKER
-make -j ${THREAD}
-make install
-
-if [ -d "$percona_install_dir/support-files" ];then
+  pushd ${oneinstack_dir}/src
+
+  id -u mysql >/dev/null 2>&1
+  [ $? -ne 0 ] && useradd -M -s /sbin/nologin mysql
+
+  [ ! -d "${percona_install_dir}" ] && mkdir -p ${percona_install_dir}
+  mkdir -p ${percona_data_dir};chown mysql.mysql -R ${percona_data_dir}
+
+  if [ "${dbInstallMethods}" == "1" ];then
+    perconaVerStr1=$(echo ${percona_5_5_version} | sed "s@-@-rel@")
+    tar xvf Percona-Server-${perconaVerStr1}-Linux.${SYS_BIT_b}.${sslLibVer}.tar.gz
+    mv Percona-Server-${perconaVerStr1}-Linux.${SYS_BIT_b}.${sslLibVer}/* ${percona_install_dir}
+
+    if [ "${je_tc_malloc}" == "1" ];then
+      sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libjemalloc.so@' ${percona_install_dir}/bin/mysqld_safe
+    elif [ "${je_tc_malloc}" == "2" ];then
+      sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libtcmalloc.so@' ${percona_install_dir}/bin/mysqld_safe
+    fi
+  elif [ "${dbInstallMethods}" == "2" ];then
+    tar xvf percona-server-${percona_5_5_version}.tar.gz
+    pushd percona-server-${percona_5_5_version}
+
+    if [ "${je_tc_malloc}" == "1" ];then
+      EXE_LINKER="-DCMAKE_EXE_LINKER_FLAGS='-ljemalloc'"
+    elif [ "${je_tc_malloc}" == "2" ];then
+      EXE_LINKER="-DCMAKE_EXE_LINKER_FLAGS='-ltcmalloc'"
+    fi
+
+    if [ "${armTarget}" == "y" ];then
+      patch -p1 < ../mysql-5.5-fix-arm-client_plugin.patch
+    fi
+
+    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 \
+    -DEXTRA_CHARSETS=all \
+    ${EXE_LINKER}
+    make -j ${THREAD}
+    make install
+    popd
+  fi
+
+  if [ -d "${percona_install_dir}/support-files" ];then
     echo "${CSUCCESS}Percona installed successfully! ${CEND}"
-    cd ..
-    rm -rf percona-server-$percona_5_5_version
-else
-    rm -rf $percona_install_dir
+    if [ "${dbInstallMethods}" == "1" ];then
+      rm -rf Percona-Server-${perconaVerStr1}-Linux.${SYS_BIT_b}.${sslLibVer}
+    elif [ "${dbInstallMethods}" == "2" ];then
+    rm -rf percona-server-${percona_5_5_version}
+    fi
+  else
+    rm -rf ${percona_install_dir}
+    rm -rf percona-server-${percona_5_5_version}
     echo "${CFAILURE}Percona install failed, Please contact the author! ${CEND}"
     kill -9 $$
-fi
-
-/bin/cp $percona_install_dir/support-files/mysql.server /etc/init.d/mysqld
-chmod +x /etc/init.d/mysqld
-[ "$OS" == 'CentOS' ] && { chkconfig --add mysqld; chkconfig mysqld on; }
-[[ $OS =~ ^Ubuntu$|^Debian$ ]] && update-rc.d mysqld defaults
-cd ..
-
-# my.cnf
-[ -d "/etc/mysql" ] && /bin/mv /etc/mysql{,_bk}
-cat > /etc/my.cnf << EOF
+  fi
+
+  /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
+  [ "${OS}" == "CentOS" ] && { chkconfig --add mysqld; chkconfig mysqld on; }
+  [[ "${OS}" =~ ^Ubuntu$|^Debian$ ]] && update-rc.d mysqld defaults
+  popd
+
+  # my.cnf
+  [ -d "/etc/mysql" ] && /bin/mv /etc/mysql{,_bk}
+  cat > /etc/my.cnf << EOF
 [client]
 port = 3306
 socket = /tmp/mysql.sock
@@ -75,9 +100,9 @@ no-auto-rehash
 port = 3306
 socket = /tmp/mysql.sock
 
-basedir = $percona_install_dir
-datadir = $percona_data_dir
-pid-file = $percona_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
@@ -116,10 +141,10 @@ log_bin = mysql-bin
 binlog_format = mixed
 expire_logs_days = 7
 
-log_error = $percona_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 = $percona_data_dir/mysql-slow.log
+slow_query_log_file = ${percona_data_dir}/mysql-slow.log
 
 performance_schema = 0
 
@@ -161,8 +186,8 @@ read_buffer = 4M
 write_buffer = 4M
 EOF
 
-sed -i "s@max_connections.*@max_connections = $(($Mem/2))@" /etc/my.cnf
-if [ $Mem -gt 1500 -a $Mem -le 2500 ];then
+  sed -i "s@max_connections.*@max_connections = $((${Mem}/2))@" /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
@@ -170,7 +195,7 @@ if [ $Mem -gt 1500 -a $Mem -le 2500 ];then
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 128M@' /etc/my.cnf
     sed -i 's@^tmp_table_size.*@tmp_table_size = 32M@' /etc/my.cnf
     sed -i 's@^table_open_cache.*@table_open_cache = 256@' /etc/my.cnf
-elif [ $Mem -gt 2500 -a $Mem -le 3500 ];then
+  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
@@ -178,7 +203,7 @@ elif [ $Mem -gt 2500 -a $Mem -le 3500 ];then
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 512M@' /etc/my.cnf
     sed -i 's@^tmp_table_size.*@tmp_table_size = 64M@' /etc/my.cnf
     sed -i 's@^table_open_cache.*@table_open_cache = 512@' /etc/my.cnf
-elif [ $Mem -gt 3500 ];then
+  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
@@ -186,26 +211,26 @@ elif [ $Mem -gt 3500 ];then
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 1024M@' /etc/my.cnf
     sed -i 's@^tmp_table_size.*@tmp_table_size = 128M@' /etc/my.cnf
     sed -i 's@^table_open_cache.*@table_open_cache = 1024@' /etc/my.cnf
-fi
-
-$percona_install_dir/scripts/mysql_install_db --user=mysql --basedir=$percona_install_dir --datadir=$percona_data_dir
-
-chown mysql.mysql -R $percona_data_dir
-[ -d '/etc/mysql' ] && mv /etc/mysql{,_bk}
-service mysqld start
-[ -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
-
-$percona_install_dir/bin/mysql -e "grant all privileges on *.* to root@'127.0.0.1' identified by \"$dbrootpwd\" with grant option;"
-$percona_install_dir/bin/mysql -e "grant all privileges on *.* to root@'localhost' identified by \"$dbrootpwd\" with grant option;"
-$percona_install_dir/bin/mysql -uroot -p$dbrootpwd -e "delete from mysql.user where Password='';"
-$percona_install_dir/bin/mysql -uroot -p$dbrootpwd -e "delete from mysql.db where User='';"
-$percona_install_dir/bin/mysql -uroot -p$dbrootpwd -e "delete from mysql.proxies_priv where Host!='localhost';"
-$percona_install_dir/bin/mysql -uroot -p$dbrootpwd -e "drop database test;"
-$percona_install_dir/bin/mysql -uroot -p$dbrootpwd -e "reset master;"
-rm -rf /etc/ld.so.conf.d/{mysql,mariadb,percona}*.conf
-echo "$percona_install_dir/lib" > /etc/ld.so.conf.d/percona.conf
-ldconfig
-service mysqld stop
+  fi
+
+  ${percona_install_dir}/scripts/mysql_install_db --user=mysql --basedir=${percona_install_dir} --datadir=${percona_data_dir}
+
+  chown mysql.mysql -R ${percona_data_dir}
+  [ -d "/etc/mysql" ] && mv /etc/mysql{,_bk}
+  service mysqld start
+  [ -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
+
+  ${percona_install_dir}/bin/mysql -e "grant all privileges on *.* to root@'127.0.0.1' identified by \"${dbrootpwd}\" with grant option;"
+  ${percona_install_dir}/bin/mysql -e "grant all privileges on *.* to root@'localhost' identified by \"${dbrootpwd}\" with grant option;"
+  ${percona_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "delete from mysql.user where Password='';"
+  ${percona_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "delete from mysql.db where User='';"
+  ${percona_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "delete from mysql.proxies_priv where Host!='localhost';"
+  ${percona_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "drop database test;"
+  ${percona_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "reset master;"
+  rm -rf /etc/ld.so.conf.d/{mysql,mariadb,percona}*.conf
+  echo "${percona_install_dir}/lib" > /etc/ld.so.conf.d/percona.conf
+  ldconfig
+  service mysqld stop
 }

+ 102 - 80
include/percona-5.6.sh

@@ -9,58 +9,80 @@
 #       https://github.com/lj2007331/oneinstack
 
 Install_Percona-5-6() {
-cd $oneinstack_dir/src
-src_url=https://www.percona.com/downloads/Percona-Server-5.6/Percona-Server-$percona_5_6_version/source/tarball/percona-server-$percona_5_6_version.tar.gz && Download_src
-
-id -u mysql >/dev/null 2>&1
-[ $? -ne 0 ] && useradd -M -s /sbin/nologin mysql
-
-mkdir -p $percona_data_dir;chown mysql.mysql -R $percona_data_dir
-tar zxf percona-server-$percona_5_6_version.tar.gz
-cd percona-server-$percona_5_6_version
-if [ "$je_tc_malloc" == '1' ];then
-    EXE_LINKER="-DCMAKE_EXE_LINKER_FLAGS='-ljemalloc'"
-elif [ "$je_tc_malloc" == '2' ];then
-    EXE_LINKER="-DCMAKE_EXE_LINKER_FLAGS='-ltcmalloc'"
-fi
-make clean
-[ ! -d "$percona_install_dir" ] && mkdir -p $percona_install_dir
-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 \
-$EXE_LINKER
-make -j ${THREAD}
-make install
-
-if [ -d "$percona_install_dir/support-files" ];then
+  pushd ${oneinstack_dir}/src
+
+  id -u mysql >/dev/null 2>&1
+  [ $? -ne 0 ] && useradd -M -s /sbin/nologin mysql
+
+  [ ! -d "${percona_install_dir}" ] && mkdir -p ${percona_install_dir}
+  mkdir -p ${percona_data_dir};chown mysql.mysql -R ${percona_data_dir}
+
+  if [ "${dbInstallMethods}" == "1" ];then
+    perconaVerStr1=$(echo ${percona_5_6_version} | sed "s@-@-rel@")
+    tar xvf Percona-Server-${perconaVerStr1}-Linux.${SYS_BIT_b}.${sslLibVer}.tar.gz
+    mv Percona-Server-${perconaVerStr1}-Linux.${SYS_BIT_b}.${sslLibVer}/* ${percona_install_dir}
+
+    if [ "${je_tc_malloc}" == "1" ];then
+      sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libjemalloc.so@' ${percona_install_dir}/bin/mysqld_safe
+    elif [ "${je_tc_malloc}" == "2" ];then
+      sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libtcmalloc.so@' ${percona_install_dir}/bin/mysqld_safe
+    fi
+  elif [ "${dbInstallMethods}" == "2" ];then
+    tar xvf percona-server-${percona_5_6_version}.tar.gz
+    pushd percona-server-${percona_5_6_version}
+
+    if [ "${je_tc_malloc}" == "1" ];then
+      EXE_LINKER="-DCMAKE_EXE_LINKER_FLAGS='-ljemalloc'"
+    elif [ "${je_tc_malloc}" == "2" ];then
+      EXE_LINKER="-DCMAKE_EXE_LINKER_FLAGS='-ltcmalloc'"
+    fi
+
+    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_EMBEDDED_SERVER=1 \
+    -DENABLE_DTRACE=0 \
+    -DENABLED_LOCAL_INFILE=1 \
+    -DDEFAULT_CHARSET=utf8mb4 \
+    -DDEFAULT_COLLATION=utf8mb4_general_ci \
+    -DEXTRA_CHARSETS=all \
+    ${EXE_LINKER}
+    make -j ${THREAD}
+    make install
+    popd
+  fi
+
+  if [ -d "${percona_install_dir}/support-files" ];then
     echo "${CSUCCESS}Percona installed successfully! ${CEND}"
-    cd ..
-    rm -rf percona-server-$percona_5_6_version
-else
-    rm -rf $percona_install_dir
+    if [ "${dbInstallMethods}" == "1" ];then
+      rm -rf Percona-Server-${perconaVerStr1}-Linux.${SYS_BIT_b}.${sslLibVer}
+    elif [ "${dbInstallMethods}" == "2" ];then
+      rm -rf percona-server-${percona_5_6_version}
+    fi
+  else
+    rm -rf ${percona_install_dir}
+    rm -rf percona-server-${percona_5_6_version}
     echo "${CFAILURE}Percona install failed, Please contact the author! ${CEND}"
     kill -9 $$
-fi
-
-/bin/cp $percona_install_dir/support-files/mysql.server /etc/init.d/mysqld
-chmod +x /etc/init.d/mysqld
-[ "$OS" == 'CentOS' ] && { chkconfig --add mysqld; chkconfig mysqld on; }
-[[ $OS =~ ^Ubuntu$|^Debian$ ]] && update-rc.d mysqld defaults
-cd ..
-
-# my.cnf
-[ -d "/etc/mysql" ] && /bin/mv /etc/mysql{,_bk}
-cat > /etc/my.cnf << EOF
+  fi
+
+  /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
+  [ "${OS}" == "CentOS" ] && { chkconfig --add mysqld; chkconfig mysqld on; }
+  [[ "${OS}" =~ ^Ubuntu$|^Debian$ ]] && update-rc.d mysqld defaults
+  popd
+
+  # my.cnf
+  [ -d "/etc/mysql" ] && /bin/mv /etc/mysql{,_bk}
+  cat > /etc/my.cnf << EOF
 [client]
 port = 3306
 socket = /tmp/mysql.sock
@@ -74,9 +96,9 @@ no-auto-rehash
 port = 3306
 socket = /tmp/mysql.sock
 
-basedir = $percona_install_dir
-datadir = $percona_data_dir
-pid-file = $percona_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
@@ -115,10 +137,10 @@ log_bin = mysql-bin
 binlog_format = mixed
 expire_logs_days = 7
 
-log_error = $percona_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 = $percona_data_dir/mysql-slow.log
+slow_query_log_file = ${percona_data_dir}/mysql-slow.log
 
 performance_schema = 0
 explicit_defaults_for_timestamp
@@ -161,8 +183,8 @@ read_buffer = 4M
 write_buffer = 4M
 EOF
 
-sed -i "s@max_connections.*@max_connections = $(($Mem/2))@" /etc/my.cnf
-if [ $Mem -gt 1500 -a $Mem -le 2500 ];then
+  sed -i "s@max_connections.*@max_connections = $((${Mem}/2))@" /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
@@ -170,7 +192,7 @@ if [ $Mem -gt 1500 -a $Mem -le 2500 ];then
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 128M@' /etc/my.cnf
     sed -i 's@^tmp_table_size.*@tmp_table_size = 32M@' /etc/my.cnf
     sed -i 's@^table_open_cache.*@table_open_cache = 256@' /etc/my.cnf
-elif [ $Mem -gt 2500 -a $Mem -le 3500 ];then
+  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
@@ -178,7 +200,7 @@ elif [ $Mem -gt 2500 -a $Mem -le 3500 ];then
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 512M@' /etc/my.cnf
     sed -i 's@^tmp_table_size.*@tmp_table_size = 64M@' /etc/my.cnf
     sed -i 's@^table_open_cache.*@table_open_cache = 512@' /etc/my.cnf
-elif [ $Mem -gt 3500 ];then
+  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
@@ -186,26 +208,26 @@ elif [ $Mem -gt 3500 ];then
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 1024M@' /etc/my.cnf
     sed -i 's@^tmp_table_size.*@tmp_table_size = 128M@' /etc/my.cnf
     sed -i 's@^table_open_cache.*@table_open_cache = 1024@' /etc/my.cnf
-fi
-
-$percona_install_dir/scripts/mysql_install_db --user=mysql --basedir=$percona_install_dir --datadir=$percona_data_dir
-
-chown mysql.mysql -R $percona_data_dir
-[ -d '/etc/mysql' ] && mv /etc/mysql{,_bk}
-service mysqld start
-[ -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
-
-$percona_install_dir/bin/mysql -e "grant all privileges on *.* to root@'127.0.0.1' identified by \"$dbrootpwd\" with grant option;"
-$percona_install_dir/bin/mysql -e "grant all privileges on *.* to root@'localhost' identified by \"$dbrootpwd\" with grant option;"
-$percona_install_dir/bin/mysql -uroot -p$dbrootpwd -e "delete from mysql.user where Password='';"
-$percona_install_dir/bin/mysql -uroot -p$dbrootpwd -e "delete from mysql.db where User='';"
-$percona_install_dir/bin/mysql -uroot -p$dbrootpwd -e "delete from mysql.proxies_priv where Host!='localhost';"
-$percona_install_dir/bin/mysql -uroot -p$dbrootpwd -e "drop database test;"
-$percona_install_dir/bin/mysql -uroot -p$dbrootpwd -e "reset master;"
-rm -rf /etc/ld.so.conf.d/{mysql,mariadb,percona}*.conf
-echo "$percona_install_dir/lib" > /etc/ld.so.conf.d/percona.conf
-ldconfig
-service mysqld stop
+  fi
+
+  ${percona_install_dir}/scripts/mysql_install_db --user=mysql --basedir=${percona_install_dir} --datadir=${percona_data_dir}
+
+  chown mysql.mysql -R ${percona_data_dir}
+  [ -d "/etc/mysql" ] && mv /etc/mysql{,_bk}
+  service mysqld start
+  [ -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
+
+  ${percona_install_dir}/bin/mysql -e "grant all privileges on *.* to root@'127.0.0.1' identified by \"${dbrootpwd}\" with grant option;"
+  ${percona_install_dir}/bin/mysql -e "grant all privileges on *.* to root@'localhost' identified by \"${dbrootpwd}\" with grant option;"
+  ${percona_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "delete from mysql.user where Password='';"
+  ${percona_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "delete from mysql.db where User='';"
+  ${percona_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "delete from mysql.proxies_priv where Host!='localhost';"
+  ${percona_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "drop database test;"
+  ${percona_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "reset master;"
+  rm -rf /etc/ld.so.conf.d/{mysql,mariadb,percona}*.conf
+  echo "${percona_install_dir}/lib" > /etc/ld.so.conf.d/percona.conf
+  ldconfig
+  service mysqld stop
 }

+ 99 - 93
include/percona-5.7.sh

@@ -9,73 +9,80 @@
 #       https://github.com/lj2007331/oneinstack
 
 Install_Percona-5-7() {
-cd $oneinstack_dir/src
-[ "$IPADDR_COUNTRY"x == "CN"x ] && DOWN_ADDR_BOOST=http://mirrors.linuxeye.com/oneinstack/src || DOWN_ADDR_BOOST=http://downloads.sourceforge.net/project/boost/boost/1.59.0
-
-if [ ! -e "/usr/local/lib/libboost_system.so" ];then
-    src_url=$DOWN_ADDR_BOOST/boost_1_59_0.tar.gz && Download_src
-    tar xzf boost_1_59_0.tar.gz
-    cd boost_1_59_0
-    ./bootstrap.sh
-    ./bjam --prefix=/usr/local
-    ./b2 install
-    cd ..
-fi
-echo '/usr/local/lib' > /etc/ld.so.conf.d/local.conf
-ldconfig
-
-src_url=http://mirrors.linuxeye.com/oneinstack/src/percona-server-$percona_5_7_version.tar.gz && Download_src
-
-id -u mysql >/dev/null 2>&1
-[ $? -ne 0 ] && useradd -M -s /sbin/nologin mysql
-
-mkdir -p $percona_data_dir;chown mysql.mysql -R $percona_data_dir
-tar zxf percona-server-$percona_5_7_version.tar.gz
-cd percona-server-$percona_5_7_version
-if [ "$je_tc_malloc" == '1' ];then
-    EXE_LINKER="-DCMAKE_EXE_LINKER_FLAGS='-ljemalloc'"
-elif [ "$je_tc_malloc" == '2' ];then
-    EXE_LINKER="-DCMAKE_EXE_LINKER_FLAGS='-ltcmalloc'"
-fi
-make clean
-[ ! -d "$percona_install_dir" ] && mkdir -p $percona_install_dir
-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 \
--DWITH_ZLIB=system \
--DENABLE_DTRACE=0 \
--DDEFAULT_CHARSET=utf8mb4 \
--DDEFAULT_COLLATION=utf8mb4_general_ci \
-$EXE_LINKER
-make -j ${THREAD}
-make install
-
-if [ -d "$percona_install_dir/support-files" ];then
+  pushd ${oneinstack_dir}/src
+
+  id -u mysql >/dev/null 2>&1
+  [ $? -ne 0 ] && useradd -M -s /sbin/nologin mysql
+
+  [ ! -d "${percona_install_dir}" ] && mkdir -p ${percona_install_dir}
+  mkdir -p ${percona_data_dir};chown mysql.mysql -R ${percona_data_dir}
+
+  if [ "${dbInstallMethods}" == "1" ];then
+    tar xvf Percona-Server-${percona_5_7_version}-Linux.${SYS_BIT_b}.${sslLibVer}.tar.gz
+    mv Percona-Server-${percona_5_7_version}-Linux.${SYS_BIT_b}.${sslLibVer}/* ${percona_install_dir}
+
+    if [ "${je_tc_malloc}" == "1" ];then
+      sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libjemalloc.so@' ${percona_install_dir}/bin/mysqld_safe
+    elif [ "${je_tc_malloc}" == "2" ];then
+      sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libtcmalloc.so@' ${percona_install_dir}/bin/mysqld_safe
+    fi
+  elif [ "${dbInstallMethods}" == "2" ];then
+    tar xvf percona-server-${percona_5_7_version}.tar.gz
+    pushd percona-server-${percona_5_7_version}
+
+    if [ "${je_tc_malloc}" == "1" ];then
+      EXE_LINKER="-DCMAKE_EXE_LINKER_FLAGS='-ljemalloc'"
+    elif [ "${je_tc_malloc}" == "2" ];then
+      EXE_LINKER="-DCMAKE_EXE_LINKER_FLAGS='-ltcmalloc'"
+    fi
+
+    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_EMBEDDED_SERVER=1 \
+    -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
+    -DWITH_ZLIB=system \
+    -DENABLE_DTRACE=0 \
+    -DENABLED_LOCAL_INFILE=1 \
+    -DDEFAULT_CHARSET=utf8mb4 \
+    -DDEFAULT_COLLATION=utf8mb4_general_ci \
+    -DEXTRA_CHARSETS=all \
+    ${EXE_LINKER}
+    make -j ${THREAD}
+    make install
+    popd
+  fi
+
+  if [ -d "${percona_install_dir}/support-files" ];then
     echo "${CSUCCESS}Percona installed successfully! ${CEND}"
-    cd ..
-    rm -rf percona-server-$percona_5_7_version
-else
-    rm -rf $percona_install_dir
+    if [ "${dbInstallMethods}" == "1" ];then
+      rm -rf Percona-Server-${percona_5_7_version}-Linux.${SYS_BIT_b}.${sslLibVer}
+    elif [ "${dbInstallMethods}" == "2" ];then
+      rm -rf percona-server-${percona_5_7_version}
+    fi
+  else
+    rm -rf ${percona_install_dir}
+    rm -rf percona-server-${percona_5_7_version}
     echo "${CFAILURE}Percona install failed, Please contact the author! ${CEND}"
     kill -9 $$
-fi
-
-/bin/cp $percona_install_dir/support-files/mysql.server /etc/init.d/mysqld
-chmod +x /etc/init.d/mysqld
-[ "$OS" == 'CentOS' ] && { chkconfig --add mysqld; chkconfig mysqld on; }
-[[ $OS =~ ^Ubuntu$|^Debian$ ]] && update-rc.d mysqld defaults
-cd ..
-
-# my.cnf
-[ -d "/etc/mysql" ] && /bin/mv /etc/mysql{,_bk}
-cat > /etc/my.cnf << EOF
+  fi
+
+  /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
+  [ "${OS}" == "CentOS" ] && { chkconfig --add mysqld; chkconfig mysqld on; }
+  [[ "${OS}" =~ ^Ubuntu$|^Debian$ ]] && update-rc.d mysqld defaults
+  popd
+
+  # my.cnf
+  [ -d "/etc/mysql" ] && /bin/mv /etc/mysql{,_bk}
+  cat > /etc/my.cnf << EOF
 [client]
 port = 3306
 socket = /tmp/mysql.sock
@@ -89,9 +96,9 @@ no-auto-rehash
 port = 3306
 socket = /tmp/mysql.sock
 
-basedir = $percona_install_dir
-datadir = $percona_data_dir
-pid-file = $percona_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
@@ -130,10 +137,10 @@ log_bin = mysql-bin
 binlog_format = mixed
 expire_logs_days = 7
 
-log_error = $percona_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 = $percona_data_dir/mysql-slow.log
+slow_query_log_file = ${percona_data_dir}/mysql-slow.log
 
 performance_schema = 0
 explicit_defaults_for_timestamp
@@ -176,8 +183,8 @@ read_buffer = 4M
 write_buffer = 4M
 EOF
 
-sed -i "s@max_connections.*@max_connections = $(($Mem/2))@" /etc/my.cnf
-if [ $Mem -gt 1500 -a $Mem -le 2500 ];then
+  sed -i "s@max_connections.*@max_connections = $((${Mem}/2))@" /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
@@ -185,7 +192,7 @@ if [ $Mem -gt 1500 -a $Mem -le 2500 ];then
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 128M@' /etc/my.cnf
     sed -i 's@^tmp_table_size.*@tmp_table_size = 32M@' /etc/my.cnf
     sed -i 's@^table_open_cache.*@table_open_cache = 256@' /etc/my.cnf
-elif [ $Mem -gt 2500 -a $Mem -le 3500 ];then
+  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
@@ -193,7 +200,7 @@ elif [ $Mem -gt 2500 -a $Mem -le 3500 ];then
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 512M@' /etc/my.cnf
     sed -i 's@^tmp_table_size.*@tmp_table_size = 64M@' /etc/my.cnf
     sed -i 's@^table_open_cache.*@table_open_cache = 512@' /etc/my.cnf
-elif [ $Mem -gt 3500 ];then
+  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
@@ -201,24 +208,23 @@ elif [ $Mem -gt 3500 ];then
     sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 1024M@' /etc/my.cnf
     sed -i 's@^tmp_table_size.*@tmp_table_size = 128M@' /etc/my.cnf
     sed -i 's@^table_open_cache.*@table_open_cache = 1024@' /etc/my.cnf
-fi
-
-$percona_install_dir/bin/mysqld --initialize-insecure --user=mysql --basedir=$percona_install_dir --datadir=$percona_data_dir
-
-chown mysql.mysql -R $percona_data_dir
-[ -d '/etc/mysql' ] && mv /etc/mysql{,_bk}
-service mysqld start
-[ -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
-
-$percona_install_dir/bin/mysql -e "grant all privileges on *.* to root@'127.0.0.1' identified by \"$dbrootpwd\" with grant option;"
-$percona_install_dir/bin/mysql -e "grant all privileges on *.* to root@'localhost' identified by \"$dbrootpwd\" with grant option;"
-$percona_install_dir/bin/mysql -uroot -p$dbrootpwd -e "reset master;"
-rm -rf /etc/ld.so.conf.d/{mysql,mariadb,percona}*.conf
-[ -e "$percona_install_dir/my.cnf" ] && rm -rf $percona_install_dir/my.cnf
-echo "$percona_install_dir/lib" > /etc/ld.so.conf.d/mysql.conf
-ldconfig
-service mysqld stop
+  fi
+
+  ${percona_install_dir}/bin/mysqld --initialize-insecure --user=mysql --basedir=${percona_install_dir} --datadir=${percona_data_dir}
+
+  chown mysql.mysql -R ${percona_data_dir}
+  [ -d "/etc/mysql" ] && mv /etc/mysql{,_bk}
+  service mysqld start
+  [ -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
+
+  ${percona_install_dir}/bin/mysql -e "grant all privileges on *.* to root@'127.0.0.1' identified by \"${dbrootpwd}\" with grant option;"
+  ${percona_install_dir}/bin/mysql -e "grant all privileges on *.* to root@'localhost' identified by \"${dbrootpwd}\" with grant option;"
+  ${percona_install_dir}/bin/mysql -uroot -p${dbrootpwd} -e "reset master;"
+  rm -rf /etc/ld.so.conf.d/{mysql,mariadb,percona}*.conf
+  [ -e "${percona_install_dir}/my.cnf" ] && rm -rf ${percona_install_dir}/my.cnf
+  echo "${percona_install_dir}/lib" > /etc/ld.so.conf.d/mysql.conf
+  ldconfig
+  service mysqld stop
 }

+ 0 - 11
include/php-5.3.sh

@@ -10,16 +10,6 @@
 
 Install_PHP-5-3() {
 cd $oneinstack_dir/src
-src_url=http://ftp.gnu.org/pub/gnu/libiconv/libiconv-$libiconv_version.tar.gz && Download_src
-src_url=https://curl.haxx.se/download/curl-$curl_version.tar.gz && Download_src
-src_url=http://downloads.sourceforge.net/project/mcrypt/Libmcrypt/$libmcrypt_version/libmcrypt-$libmcrypt_version.tar.gz && Download_src
-src_url=http://downloads.sourceforge.net/project/mhash/mhash/$mhash_version/mhash-$mhash_version.tar.gz && Download_src
-src_url=http://downloads.sourceforge.net/project/mcrypt/MCrypt/$mcrypt_version/mcrypt-$mcrypt_version.tar.gz && Download_src
-src_url=http://mirrors.linuxeye.com/oneinstack/src/fpm-race-condition.patch && Download_src
-src_url=http://mirrors.linuxeye.com/oneinstack/src/debian_patches_disable_SSLv2_for_openssl_1_0_0.patch && Download_src
-src_url=http://mirrors.linuxeye.com/oneinstack/src/libiconv-glibc-2.16.patch && Download_src
-src_url=http://mirrors.linuxeye.com/oneinstack/src/php5.3patch && Download_src
-src_url=http://www.php.net/distributions/php-$php_3_version.tar.gz && Download_src
 
 tar xzf libiconv-$libiconv_version.tar.gz
 patch -d libiconv-$libiconv_version -p0 < libiconv-glibc-2.16.patch
@@ -32,7 +22,6 @@ rm -rf libiconv-$libiconv_version
 # Problem building php-5.3 with openssl
 if [ "$Debian_version" == '8' -o "$Ubuntu_version" == '16' ];then
     if [ ! -e '/usr/local/openssl/lib/libcrypto.a' ];then
-        src_url=http://mirrors.linuxeye.com/oneinstack/src/openssl-1.0.0s.tar.gz && Download_src
         tar xzf openssl-1.0.0s.tar.gz
         cd openssl-1.0.0s
         ./config --prefix=/usr/local/openssl -fPIC shared zlib

+ 0 - 8
include/php-5.4.sh

@@ -10,14 +10,6 @@
 
 Install_PHP-5-4() {
 cd $oneinstack_dir/src
-src_url=http://ftp.gnu.org/pub/gnu/libiconv/libiconv-$libiconv_version.tar.gz && Download_src
-src_url=https://curl.haxx.se/download/curl-$curl_version.tar.gz && Download_src
-src_url=http://downloads.sourceforge.net/project/mcrypt/Libmcrypt/$libmcrypt_version/libmcrypt-$libmcrypt_version.tar.gz && Download_src
-src_url=http://downloads.sourceforge.net/project/mhash/mhash/$mhash_version/mhash-$mhash_version.tar.gz && Download_src
-src_url=http://downloads.sourceforge.net/project/mcrypt/MCrypt/$mcrypt_version/mcrypt-$mcrypt_version.tar.gz && Download_src
-src_url=http://mirrors.linuxeye.com/oneinstack/src/fpm-race-condition.patch && Download_src
-src_url=http://mirrors.linuxeye.com/oneinstack/src/libiconv-glibc-2.16.patch && Download_src
-src_url=http://www.php.net/distributions/php-$php_4_version.tar.gz && Download_src
 
 tar xzf libiconv-$libiconv_version.tar.gz
 patch -d libiconv-$libiconv_version -p0 < libiconv-glibc-2.16.patch

+ 0 - 8
include/php-5.5.sh

@@ -10,14 +10,6 @@
 
 Install_PHP-5-5() {
 cd $oneinstack_dir/src
-src_url=http://ftp.gnu.org/pub/gnu/libiconv/libiconv-$libiconv_version.tar.gz && Download_src
-src_url=https://curl.haxx.se/download/curl-$curl_version.tar.gz && Download_src
-src_url=http://downloads.sourceforge.net/project/mcrypt/Libmcrypt/$libmcrypt_version/libmcrypt-$libmcrypt_version.tar.gz && Download_src
-src_url=http://downloads.sourceforge.net/project/mhash/mhash/$mhash_version/mhash-$mhash_version.tar.gz && Download_src
-src_url=http://downloads.sourceforge.net/project/mcrypt/MCrypt/$mcrypt_version/mcrypt-$mcrypt_version.tar.gz && Download_src
-src_url=http://mirrors.linuxeye.com/oneinstack/src/fpm-race-condition.patch && Download_src
-src_url=http://mirrors.linuxeye.com/oneinstack/src/libiconv-glibc-2.16.patch && Download_src
-src_url=http://www.php.net/distributions/php-$php_5_version.tar.gz && Download_src
 
 tar xzf libiconv-$libiconv_version.tar.gz
 patch -d libiconv-$libiconv_version -p0 < libiconv-glibc-2.16.patch

+ 0 - 7
include/php-5.6.sh

@@ -10,13 +10,6 @@
 
 Install_PHP-5-6() {
 cd $oneinstack_dir/src
-src_url=http://ftp.gnu.org/pub/gnu/libiconv/libiconv-$libiconv_version.tar.gz && Download_src
-src_url=https://curl.haxx.se/download/curl-$curl_version.tar.gz && Download_src
-src_url=http://downloads.sourceforge.net/project/mcrypt/Libmcrypt/$libmcrypt_version/libmcrypt-$libmcrypt_version.tar.gz && Download_src
-src_url=http://downloads.sourceforge.net/project/mhash/mhash/$mhash_version/mhash-$mhash_version.tar.gz && Download_src
-src_url=http://downloads.sourceforge.net/project/mcrypt/MCrypt/$mcrypt_version/mcrypt-$mcrypt_version.tar.gz && Download_src
-src_url=http://mirrors.linuxeye.com/oneinstack/src/libiconv-glibc-2.16.patch && Download_src
-src_url=http://www.php.net/distributions/php-$php_6_version.tar.gz && Download_src
 
 tar xzf libiconv-$libiconv_version.tar.gz
 patch -d libiconv-$libiconv_version -p0 < libiconv-glibc-2.16.patch

+ 0 - 7
include/php-7.sh

@@ -10,13 +10,6 @@
 
 Install_PHP-7() {
 cd $oneinstack_dir/src
-src_url=http://ftp.gnu.org/pub/gnu/libiconv/libiconv-$libiconv_version.tar.gz && Download_src
-src_url=https://curl.haxx.se/download/curl-$curl_version.tar.gz && Download_src
-src_url=http://downloads.sourceforge.net/project/mcrypt/Libmcrypt/$libmcrypt_version/libmcrypt-$libmcrypt_version.tar.gz && Download_src
-src_url=http://downloads.sourceforge.net/project/mhash/mhash/$mhash_version/mhash-$mhash_version.tar.gz && Download_src
-src_url=http://downloads.sourceforge.net/project/mcrypt/MCrypt/$mcrypt_version/mcrypt-$mcrypt_version.tar.gz && Download_src
-src_url=http://mirrors.linuxeye.com/oneinstack/src/libiconv-glibc-2.16.patch && Download_src
-src_url=http://www.php.net/distributions/php-$php_7_version.tar.gz && Download_src
 
 tar xzf libiconv-$libiconv_version.tar.gz
 patch -d libiconv-$libiconv_version -p0 < libiconv-glibc-2.16.patch

+ 0 - 2
include/phpmyadmin.sh

@@ -10,8 +10,6 @@
 
 Install_phpMyAdmin() {
 cd $oneinstack_dir/src
-src_url=https://files.phpmyadmin.net/phpMyAdmin/${phpMyAdmin_version}/phpMyAdmin-${phpMyAdmin_version}-all-languages.tar.gz && Download_src
-
 tar xzf phpMyAdmin-${phpMyAdmin_version}-all-languages.tar.gz
 /bin/mv phpMyAdmin-${phpMyAdmin_version}-all-languages $wwwroot_dir/default/phpMyAdmin
 /bin/cp $wwwroot_dir/default/phpMyAdmin/{config.sample.inc.php,config.inc.php}

+ 1 - 3
include/pureftpd.sh

@@ -10,13 +10,11 @@
 
 Install_PureFTPd() {
 cd $oneinstack_dir/src
-src_url=http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-$pureftpd_version.tar.gz && Download_src
-
-tar xzf pure-ftpd-$pureftpd_version.tar.gz
 
 id -u $run_user >/dev/null 2>&1
 [ $? -ne 0 ] && useradd -M -s /sbin/nologin $run_user
 
+tar xzf pure-ftpd-$pureftpd_version.tar.gz
 cd pure-ftpd-$pureftpd_version
 [ ! -d "$pureftpd_install_dir" ] && mkdir -p $pureftpd_install_dir
 ./configure --prefix=$pureftpd_install_dir CFLAGS=-O2 --with-puredb --with-quotas --with-cookie --with-virtualhosts --with-virtualchroot --with-diraliases --with-sysquotas --with-ratios --with-altlog --with-paranoidmsg --with-shadow --with-welcomemsg  --with-throttling --with-uploadscript --with-language=english --with-rfc2640

+ 2 - 7
include/redis.sh

@@ -10,8 +10,6 @@
 
 Install_redis-server() {
 cd $oneinstack_dir/src
-src_url=http://download.redis.io/releases/redis-$redis_version.tar.gz && Download_src
-
 tar xzf redis-$redis_version.tar.gz
 cd redis-$redis_version
 if [ "$OS_BIT" == '32' ];then
@@ -41,7 +39,6 @@ if [ -f "src/redis-server" ];then
     chown -R redis:redis $redis_install_dir/var
     /bin/cp ../init.d/Redis-server-init /etc/init.d/redis-server
     if [ "$OS" == 'CentOS' ];then
-        src_url=http://mirrors.linuxeye.com/oneinstack/src/start-stop-daemon.c && Download_src
         cc start-stop-daemon.c -o /sbin/start-stop-daemon
         chkconfig --add redis-server
         chkconfig redis-server on
@@ -64,11 +61,9 @@ Install_php-redis() {
 cd $oneinstack_dir/src
 if [ -e "$php_install_dir/bin/phpize" ];then
     if [ "`$php_install_dir/bin/php -r 'echo PHP_VERSION;' | awk -F. '{print $1}'`" == '7' ];then
-        src_url=http://pecl.php.net/get/redis-3.0.0.tgz && Download_src
-        tar xzf redis-3.0.0.tgz
-        cd redis-3.0.0
+        tar xzf redis-${redis_pecl_for_php7_version}.tgz
+        cd redis-${redis_pecl_for_php7_version}
     else
-        src_url=http://pecl.php.net/get/redis-$redis_pecl_version.tgz && Download_src
         tar xzf redis-$redis_pecl_version.tgz
         cd redis-$redis_pecl_version
     fi

+ 0 - 1
include/tcmalloc.sh

@@ -10,7 +10,6 @@
 
 Install_tcmalloc() {
 cd $oneinstack_dir/src
-src_url=http://mirrors.linuxeye.com/oneinstack/src/gperftools-$tcmalloc_version.tar.gz && Download_src
 
 tar xzf gperftools-$tcmalloc_version.tar.gz
 cd gperftools-$tcmalloc_version

+ 0 - 3
include/tengine.sh

@@ -10,9 +10,6 @@
 
 Install_Tengine() {
 cd $oneinstack_dir/src
-src_url=http://mirrors.linuxeye.com/oneinstack/src/pcre-$pcre_version.tar.gz && Download_src
-src_url=http://tengine.taobao.org/download/tengine-$tengine_version.tar.gz && Download_src
-src_url=https://www.openssl.org/source/openssl-$openssl_version.tar.gz && Download_src
 
 id -u $run_user >/dev/null 2>&1
 [ $? -ne 0 ] && useradd -M -s /sbin/nologin $run_user

+ 0 - 3
include/tomcat-6.sh

@@ -12,9 +12,6 @@ Install_tomcat-6() {
 cd $oneinstack_dir/src
 . /etc/profile
 
-src_url=http://mirrors.linuxeye.com/apache/tomcat/v$tomcat_6_version/apache-tomcat-$tomcat_6_version.tar.gz && Download_src
-src_url=http://mirrors.linuxeye.com/apache/tomcat/v$tomcat_6_version/catalina-jmx-remote.jar && Download_src
-
 id -u $run_user >/dev/null 2>&1
 [ $? -ne 0 ] && useradd -M -s /bin/bash $run_user || { [ -z "`grep ^$run_user /etc/passwd | grep '/bin/bash'`" ] && usermod -s /bin/bash $run_user; }
 

+ 0 - 3
include/tomcat-7.sh

@@ -12,9 +12,6 @@ Install_tomcat-7() {
 cd $oneinstack_dir/src
 . /etc/profile
 
-src_url=http://mirrors.linuxeye.com/apache/tomcat/v$tomcat_7_version/apache-tomcat-$tomcat_7_version.tar.gz && Download_src
-src_url=http://mirrors.linuxeye.com/apache/tomcat/v$tomcat_7_version/catalina-jmx-remote.jar && Download_src
-
 id -u $run_user >/dev/null 2>&1
 [ $? -ne 0 ] && useradd -M -s /bin/bash $run_user || { [ -z "`grep ^$run_user /etc/passwd | grep '/bin/bash'`" ] && usermod -s /bin/bash $run_user; }
 

+ 0 - 3
include/tomcat-8.sh

@@ -12,9 +12,6 @@ Install_tomcat-8() {
 cd $oneinstack_dir/src
 . /etc/profile
 
-src_url=http://mirrors.linuxeye.com/apache/tomcat/v$tomcat_8_version/apache-tomcat-$tomcat_8_version.tar.gz && Download_src
-src_url=http://mirrors.linuxeye.com/apache/tomcat/v$tomcat_8_version/catalina-jmx-remote.jar && Download_src
-
 id -u $run_user >/dev/null 2>&1
 [ $? -ne 0 ] && useradd -M -s /bin/bash $run_user || { [ -z "`grep ^$run_user /etc/passwd | grep '/bin/bash'`" ] && usermod -s /bin/bash $run_user; }
 

+ 1 - 1
include/upgrade_db.sh

@@ -59,7 +59,7 @@ echo "Current $DB Version: ${CMSG}$OLD_DB_version${CEND}"
 
 while :; do echo
     read -p "Please input upgrade $DB Version(example: $OLD_DB_version): " NEW_DB_version
-    if [ `echo $NEW_DB_version | awk -F. '{print $1"."$2}'` == `echo $OLD_DB_version | awk -F. '{print $1"."$2}'` ]; then
+    if [ `echo $NEW_DB_version | awk -F. '{print $1"."$2}'` == `echo $OLD_DB_version | awk -F. '{print $1"."$2}'` ];then
         if [ "$DB" == 'MariaDB' ];then
             DB_name=mariadb-${NEW_DB_version}-${GLIBC_FLAG}-${SYS_BIT_b}
             DB_URL=$DOWN_ADDR/mariadb-${NEW_DB_version}/bintar-${GLIBC_FLAG}-$SYS_BIT_a/$DB_name.tar.gz

+ 1 - 1
include/upgrade_php.sh

@@ -16,7 +16,7 @@ OLD_PHP_version=`$php_install_dir/bin/php -r 'echo PHP_VERSION;'`
 echo "Current PHP Version: ${CMSG}$OLD_PHP_version${CEND}"
 while :; do echo
     read -p "Please input upgrade PHP Version: " NEW_PHP_version
-    if [ "${NEW_PHP_version%.*}" == "${OLD_PHP_version%.*}" ]; then
+    if [ "${NEW_PHP_version%.*}" == "${OLD_PHP_version%.*}" ];then
         [ ! -e "php-$NEW_PHP_version.tar.gz" ] && wget --no-check-certificate -c http://www.php.net/distributions/php-$NEW_PHP_version.tar.gz > /dev/null 2>&1
         if [ -e "php-$NEW_PHP_version.tar.gz" ];then
             echo "Download [${CMSG}php-$NEW_PHP_version.tar.gz${CEND}] successfully! "

+ 1 - 4
include/xcache.sh

@@ -8,11 +8,8 @@
 #       https://oneinstack.com
 #       https://github.com/lj2007331/oneinstack
 
-Install_XCache()
-{
+Install_XCache() {
 cd $oneinstack_dir/src
-src_url=http://xcache.lighttpd.net/pub/Releases/$xcache_version/xcache-$xcache_version.tar.gz && Download_src
-
 tar xzf xcache-$xcache_version.tar.gz
 cd xcache-$xcache_version
 make clean

+ 1 - 4
include/zendopcache.sh

@@ -8,11 +8,8 @@
 #       https://oneinstack.com
 #       https://github.com/lj2007331/oneinstack
 
-Install_ZendOPcache()
-{
+Install_ZendOPcache() {
 cd $oneinstack_dir/src
-src_url=https://pecl.php.net/get/zendopcache-$zendopcache_version.tgz && Download_src
-
 tar xzf zendopcache-$zendopcache_version.tgz
 cd zendopcache-$zendopcache_version
 make clean

+ 33 - 3
install.sh

@@ -185,6 +185,20 @@ while :; do echo
                         [ -n "`echo $dbrootpwd | grep '[+|&]'`" ] && { echo "${CWARNING}input error,not contain a plus sign (+) and & ${CEND}"; continue; }
                         (( ${#dbrootpwd} >= 5 )) && sed -i "s+^dbrootpwd.*+dbrootpwd='$dbrootpwd'+" ./options.conf && break || echo "${CWARNING}database root password least 5 characters! ${CEND}"
                     done
+                    # choose install methods
+                    while :; do echo
+                        echo "Please choose installation of the database:"
+                        echo -e "\t${CMSG}1${CEND}. Install database from binary package."
+                        echo -e "\t${CMSG}2${CEND}. Install database from source package."
+                        read -p "Please input a number:(Default 1 press Enter) " dbInstallMethods
+                        [ -z "$dbInstallMethods" ] && dbInstallMethods=1
+                        if [[ ! $dbInstallMethods =~ ^[1-2]$ ]];then
+                            echo "${CWARNING}input error! Please only input number 1,2${CEND}"
+                        else
+                            break
+                        fi
+                    done
+
                     break
                 fi
             done
@@ -455,15 +469,19 @@ IPADDR_COUNTRY_ISP=`./include/get_ipaddr_state.py $PUBLIC_IPADDR`
 IPADDR_COUNTRY=`echo $IPADDR_COUNTRY_ISP | awk '{print $1}'`
 [ "`echo $IPADDR_COUNTRY_ISP | awk '{print $2}'`"x == '1000323'x ] && IPADDR_ISP=aliyun
 
+# check download src
+. ./include/check_download.sh
+checkDownload 2>&1 | tee $oneinstack_dir/install.log
+
 # init
 . ./include/memory.sh
 if [ "$OS" == 'CentOS' ];then
-    . include/init_CentOS.sh 2>&1 | tee $oneinstack_dir/install.log
+    . include/init_CentOS.sh 2>&1 | tee -a $oneinstack_dir/install.log
     [ -n "`gcc --version | head -n1 | grep '4\.1\.'`" ] && export CC="gcc44" CXX="g++44"
 elif [ "$OS" == 'Debian' ];then
-    . include/init_Debian.sh 2>&1 | tee $oneinstack_dir/install.log
+    . include/init_Debian.sh 2>&1 | tee -a $oneinstack_dir/install.log
 elif [ "$OS" == 'Ubuntu' ];then
-    . include/init_Ubuntu.sh 2>&1 | tee $oneinstack_dir/install.log
+    . include/init_Ubuntu.sh 2>&1 | tee -a $oneinstack_dir/install.log
 fi
 
 # jemalloc or tcmalloc
@@ -482,6 +500,10 @@ fi
 
 # Database
 if [ "$DB_version" == '1' ];then
+    if [ "${dbInstallMethods}" == "2" ]; then
+      . include/boost.sh
+      installBoost 2>&1 | tee -a $oneinstack_dir/install.log
+    fi
     . include/mysql-5.7.sh
     Install_MySQL-5-7 2>&1 | tee -a $oneinstack_dir/install.log
 elif [ "$DB_version" == '2' ];then
@@ -491,6 +513,10 @@ elif [ "$DB_version" == '3' ];then
     . include/mysql-5.5.sh
     Install_MySQL-5-5 2>&1 | tee -a $oneinstack_dir/install.log
 elif [ "$DB_version" == '4' ];then
+    if [ "${dbInstallMethods}" == "2" ]; then
+      . include/boost.sh
+      installBoost 2>&1 | tee -a $oneinstack_dir/install.log
+    fi
     . include/mariadb-10.1.sh
     Install_MariaDB-10-1 2>&1 | tee -a $oneinstack_dir/install.log
 elif [ "$DB_version" == '5' ];then
@@ -500,6 +526,10 @@ elif [ "$DB_version" == '6' ];then
     . include/mariadb-5.5.sh
     Install_MariaDB-5-5 2>&1 | tee -a $oneinstack_dir/install.log
 elif [ "$DB_version" == '7' ];then
+    if [ "${dbInstallMethods}" == "2" ]; then
+      . include/boost.sh
+      installBoost 2>&1 | tee -a $oneinstack_dir/install.log
+    fi
     . include/percona-5.7.sh
     Install_Percona-5-7 2>&1 | tee -a $oneinstack_dir/install.log
 elif [ "$DB_version" == '8' ];then

+ 12 - 0
versions.txt

@@ -45,19 +45,23 @@ xcache_version=3.2.0
 apcu_version=4.0.10
 ImageMagick_version=6.9.5-9
 imagick_version=3.4.1
+imagick_for_php53_version=3.3.0
 GraphicsMagick_version=1.3.24
+gmagick_for_php7_version=2.0.4RC1
 gmagick_version=1.1.7RC3
 libiconv_version=1.14
 curl_version=7.35.0
 libmcrypt_version=2.5.8
 mcrypt_version=2.6.8
 mhash_version=0.9.9.9
+eaccelerator_version=0.9.6.1
 
 # Ftp
 pureftpd_version=1.0.43
 
 # Redis
 redis_version=3.2.3
+redis_pecl_for_php7_version=3.0.0
 redis_pecl_version=2.2.8
 
 # Memcached
@@ -74,3 +78,11 @@ jemalloc_version=4.2.1
 
 # tcmalloc
 tcmalloc_version=2.5
+
+# boost
+boost_version=1.60.0
+
+# Others
+libevent_version=2.0.22-stable
+tmux_version=2.2
+htop_version=2.0.2