#!/bin/bash ###----------------------------------------### ### ### Barracuda-Octopus-Nginx-Drupal Tuner ### ### Copyright (C) 2010-2014 Omega8.cc ### noc@omega8.cc www.omega8.cc ### ### This program is free software. You can ### redistribute it and/or modify it under ### the terms of the GNU GPL as published by ### the Free Software Foundation, version 2 ### or later. ### ### This program is distributed in the hope ### that it will be useful, but WITHOUT ANY ### WARRANTY; without even the implied ### warranty of MERCHANTABILITY or FITNESS ### FOR A PARTICULAR PURPOSE. See the GNU GPL ### for more details. ### ### You should have received a copy of the ### GNU GPL along with this program. ### If not, see http://www.gnu.org/licenses/ ### ### Code: https://code.aegir.cc/aegir ### ###----------------------------------------### ###----------------------------------------### ### HOW-TO: run it with bash, not with sh ### ###----------------------------------------### ### ### $ bash BOND.sh.txt ### ### Note: to restore default values it is ### enough to start this script with ### any values defined below and answer ### NO when it prompts for confirmation ### "Are you ready to tune your Aegir". ### ###----------------------------------------### ### EDITME ### ###----------------------------------------### ### ### Enter below the settings you wish to use. ### ###----------------------------------------### ### Hostmaster root directory - /var/aegir ### ### Note: most of values tuned by this script ### are server-vide, while some, like ### mod_evasive settings will affect ### only sites hosted on the Aegir ### Satellite Instance defined below. ### _TUNE_HOSTMASTER=/data/disk/o1 ###----------------------------------------### ### Nginx server mod_evasive - default ON ### ### Note: running verify task on any SITE ### will restore default value ON ### for that site only, while TUNER ### will turn OFF/ON this feature ### for all sites hosted on the ### Hostmaster defined above. ### _TUNE_NGINX_CONNECT=OFF ###----------------------------------------### ### Nginx server fastcgi timeout - default 180 ### ### Note: running verify task on the SERVER ### in the Hostmaster created ### by Barracuda (not Octopus!) ### will restore default value ### for the server and all existing ### Aegir Satellite Instances. ### _TUNE_NGINX_TIMEOUT=3600 ###----------------------------------------### ### Nginx server firewall limit - default 300 ### ### Note: don't change the default value ### if you are the only visitor, or ### you will lock yourself easily. ### ### The default value 300 means the ### firewall limit is OFF because ### it scans only the last 300 lines ### of your web server log file. ### ### If you will set this value to 100 ### then every visitor IP with more ### than 100 out of the last 300 ### requests will be locked. ### ### Only dynamic requests (pages) are ### counted because static files like ### images are generally not logged. ### _TUNE_NGINX_FIREWALL=300 ###----------------------------------------### ### Database server timeout - default 3600 ### _TUNE_SQL_TIMEOUT=3600 ###----------------------------------------### ### PHP-FPM server timeout - default 180 ### _TUNE_PHP_FPM_TIMEOUT=3600 ###----------------------------------------### ### PHP-CLI server timeout - default 3600 ### _TUNE_PHP_CLI_TIMEOUT=7200 ###----------------------------------------### ### TUNER VERSION ### ###----------------------------------------### ### ### _AEGIR_VERSION=HEAD ### _AEGIR_VERSION=BOA-2.2.5 ### _AEGIR_VERSION=HEAD ###----------------------------------------### ### DON'T EDIT ANYTHING BELOW THIS LINE ### ###----------------------------------------### _INSTALLER_VERSION=BOA-2.2.6-dev _NOW=`date +%y%m%d-%H%M` _RAM=`free -mto | grep Mem: | awk '{ print $2 }'` _THISHOST=`uname -n` _SPINNER=YES PATH=/usr/local/bin:/usr/local/sbin:/opt/local/bin:/usr/bin:/usr/sbin:/bin:/sbin SHELL=/bin/bash if [ -n "${STY+x}" ]; then _SPINNER=NO fi _PHP52_API=20060613 _PHP52_VERSION=5.2.17 _PHP53_API=20090626 _PHP53_VERSION=5.3.28 _PHP54_API=20100525 _PHP54_VERSION=5.4.29 _PHP55_API=20121212 _PHP55_VERSION=5.5.13 ###---### Functions # # Noticeable messages. msg () { echo "Tuner [`date`] ==> $*" } # Simple prompt. prompt_yes_no () { if [ "$_AUTOPILOT" = "YES" ] ; then return 0 else while true ; do printf "$* [Y/n] " read answer if [ -z "$answer" ] ; then return 0 fi case $answer in [Yy]|[Yy][Ee][Ss]) return 0 ;; [Nn]|[Nn][Oo]) return 1 ;; *) echo "Please answer yes or no" ;; esac done fi } # # Silent runner. st_runner () { CMD="$1" touch busy if [ "$_SPINNER" = "YES" ] ; then bash $_SRCDIR/spinner busy & fi if $CMD >> $_LOG; then rm busy sleep 1 return 0 else rm busy sleep 1 echo "$CMD failed. Error (if any): $?" echo " " echo "Displaying the last 15 lines of $_LOG to help troubleshoot this problem" echo "If you see any error with advice to run 'dpkg --configure -a', run this" echo "command first and choose default answer, then run this installer again" echo " " tail -15 $_LOG return 1 fi } # # Small spinner. mrun () { CMD="$1" touch busy if [ "$_SPINNER" = "YES" ] ; then bash $_SRCDIR/spinner busy & fi if $CMD >> $_LOG; then rm busy sleep 1 return 0 fi } # # Find correct IP. find_correct_ip () { _LOC_IP=`echo $(getent ahostsv4 $_LOC_DOM) | cut -d: -f2 | awk '{ print $1}'` } # # Fix php.ini files to remove suhosin.so fix_php_ini_suhosin () { if [ -e "$_THIS_FILE" ] ; then _SUHOSIN_INI_TEST=$(grep "extension=suhosin.so" $_THIS_FILE) if [[ "$_SUHOSIN_INI_TEST" =~ "extension=suhosin.so" ]] ; then sed -i "s/.*suhosin.*//g" $_THIS_FILE &> /dev/null fi fi } # # Fix php.ini files to add mailparse.so fix_php_ini_mailparse () { if [ -e "$_THIS_FILE" ] ; then _MAILPARSE_INI_TEST=$(grep "extension=mailparse.so" $_THIS_FILE) if [[ "$_MAILPARSE_INI_TEST" =~ "extension=mailparse.so" ]] ; then _DO_NOTHING=YES else echo "extension=mailparse.so" >> $_THIS_FILE fi fi } # # Fix php.ini files to add jsmin.so fix_php_ini_jsmin () { if [ -e "$_THIS_FILE" ] ; then _JSMIN_INI_TEST=$(grep "extension=jsmin.so" $_THIS_FILE) if [[ "$_JSMIN_INI_TEST" =~ "extension=jsmin.so" ]] ; then _DO_NOTHING=YES else echo "extension=jsmin.so" >> $_THIS_FILE fi fi } # # Fix php.ini files to add redis.so fix_php_ini_redis () { if [ -e "$_THIS_FILE" ] ; then _REDIS_INI_TEST=$(grep "extension=redis.so" $_THIS_FILE) if [[ "$_REDIS_INI_TEST" =~ "extension=redis.so" ]] ; then _DO_NOTHING=YES else echo "extension=redis.so" >> $_THIS_FILE fi fi } # # Fix php.ini file to add newrelic.ini fix_php_ini_newrelic () { _NR_TPL="/opt/tmp/$_BOA_REPO_NAME/aegir/conf/newrelic.ini" if [ -e "$_THIS_FILE" ] ; then _NEWRELIC_INI_TEST_A=$(grep "extension=newrelic.so" $_THIS_FILE) if [[ "$_NEWRELIC_INI_TEST_A" =~ "extension=newrelic.so" ]] ; then _DO_NOTHING=YES else cat $_NR_TPL >> $_THIS_FILE fi _NEWRELIC_INI_TEST_B=$(grep "newrelic.framework.drupal.modules" $_THIS_FILE) if [[ "$_NEWRELIC_INI_TEST_B" =~ "newrelic.framework.drupal.modules" ]] ; then _DO_NOTHING=YES else echo "newrelic.framework.drupal.modules = 1" >> $_THIS_FILE fi sed -i "s/REPLACE_WITH_REAL_KEY/$_NEWRELIC_KEY/g" $_THIS_FILE &> /dev/null sed -i "s/license_key=//g" $_THIS_FILE &> /dev/null fi } # # Fix all php.ini files to add newrelic.ini fix_php_ini_newrelic_all () { if [ -e "/etc/newrelic/newrelic.cfg" ] ; then if [ -z "$_NEWRELIC_KEY" ] ; then _NEWRELIC_KEY=`grep license_key /etc/newrelic/newrelic.cfg` _NEWRELIC_KEY=`echo -n $_NEWRELIC_KEY | tr -d "\n"` fi _THIS_FILE=/opt/php52/etc/php52.ini fix_php_ini_newrelic _THIS_FILE=/opt/php52/lib/php.ini fix_php_ini_newrelic _THIS_FILE=/opt/php53/etc/php53.ini fix_php_ini_newrelic _THIS_FILE=/opt/php53/lib/php.ini fix_php_ini_newrelic _THIS_FILE=/opt/php54/etc/php54.ini fix_php_ini_newrelic _THIS_FILE=/opt/php54/lib/php.ini fix_php_ini_newrelic _THIS_FILE=/opt/php55/etc/php55.ini fix_php_ini_newrelic _THIS_FILE=/opt/php55/lib/php.ini fix_php_ini_newrelic fi } # # Fix FMP php.ini file to add opcache.so fix_php_ini_opcache () { if [ -e "$_THIS_FILE" ] ; then if [ "$1" = "55" ] ; then if [[ "$_ZEND_OPCACHE_VERSION" =~ "master" ]] ; then _OPCACHE_SRC=YES else _OPCACHE_SRC=NO fi fi _OPCACHE_INI_TEST=$(grep "opcache.so" $_THIS_FILE) if [[ "$_OPCACHE_INI_TEST" =~ "opcache.so" ]] ; then _DO_NOTHING=YES else echo ";" >> $_THIS_FILE echo "; Zend OPcache" >> $_THIS_FILE if [ "$1" = "55" ] && [ "$_OPCACHE_SRC" = "NO" ] ; then echo "extension=opcache.so" >> $_THIS_FILE else echo "zend_extension=\"$_OPCACHE_SO\"" >> $_THIS_FILE fi echo "opcache.enable=1" >> $_THIS_FILE echo "opcache.memory_consumption=181" >> $_THIS_FILE echo "opcache.interned_strings_buffer=8" >> $_THIS_FILE echo "opcache.max_accelerated_files=64000" >> $_THIS_FILE echo "opcache.revalidate_freq=60" >> $_THIS_FILE echo "opcache.enable_file_override=1" >> $_THIS_FILE echo "opcache.inherited_hack=1" >> $_THIS_FILE echo "opcache.dups_fix=1" >> $_THIS_FILE echo "opcache.log_verbosity_level=0" >> $_THIS_FILE echo "opcache.fast_shutdown=1" >> $_THIS_FILE echo ";" >> $_THIS_FILE fi fi } # # Fix all FMP php.ini files to add Zend OPcache fix_php_ini_opcache_all () { _THIS_FILE=/opt/php52/etc/php52.ini _OPCACHE_SO="/opt/php52/lib/php/extensions/no-debug-non-zts-$_PHP52_API/opcache.so" fix_php_ini_opcache "52" _THIS_FILE=/opt/php53/etc/php53.ini _OPCACHE_SO="/opt/php53/lib/php/extensions/no-debug-non-zts-$_PHP53_API/opcache.so" fix_php_ini_opcache "53" _THIS_FILE=/opt/php54/etc/php54.ini _OPCACHE_SO="/opt/php54/lib/php/extensions/no-debug-non-zts-$_PHP54_API/opcache.so" fix_php_ini_opcache "54" _THIS_FILE=/opt/php55/etc/php55.ini _OPCACHE_SO="/opt/php55/lib/php/extensions/no-debug-non-zts-$_PHP55_API/opcache.so" fix_php_ini_opcache "55" } # # Fix php.ini file to add geos.so fix_php_ini_geos () { if [ -e "$_THIS_FILE" ] ; then _GEOS_INI_TEST=$(grep "extension=geos.so" $_THIS_FILE) if [[ "$_GEOS_INI_TEST" =~ "extension=geos.so" ]] ; then _DO_NOTHING=YES else echo "extension=geos.so" >> $_THIS_FILE fi fi } # # Fix 5.3 php.ini files to add geos.so fix_php_ini_geos_all () { if [ "$_PHP_GEOS" = "YES" ] || [[ "$_XTRAS_LIST" =~ "GEO" ]] ; then _THIS_FILE=/opt/php53/etc/php53.ini fix_php_ini_geos _THIS_FILE=/opt/php53/lib/php.ini fix_php_ini_geos fi } # # Fix php.ini file to add mongo.so fix_php_ini_mongo () { if [ -e "$_THIS_FILE" ] ; then _MONGODB_INI_TEST=$(grep "extension=mongo.so" $_THIS_FILE) if [[ "$_MONGODB_INI_TEST" =~ "extension=mongo.so" ]] ; then _DO_NOTHING=YES else echo "extension=mongo.so" >> $_THIS_FILE fi fi } # # Fix 5.3 php.ini files to add mongo.so fix_php_ini_mongo_all () { if [ "$_PHP_MONGODB" = "YES" ] || [[ "$_XTRAS_LIST" =~ "MNG" ]] ; then _THIS_FILE=/opt/php53/etc/php53.ini fix_php_ini_mongo _THIS_FILE=/opt/php53/lib/php.ini fix_php_ini_mongo fi } # # Update PHP Config. update_php_conf () { if [ -z "$_THISHTIP" ] ; then _LOC_DOM="$_THISHOST" find_correct_ip _THISHTIP="$_LOC_IP" fi if [ ! -e "/opt/etc/fpm" ] || [ ! -e "/opt/etc/fpm/fpm-pool-common.conf" ] ; then mkdir -p /opt/etc/fpm fi cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/fpm-pool-common.conf /opt/etc/fpm/fpm-pool-common.conf if [ ! -e "/var/www/www55" ] ; then adduser --system --group --home /var/www/www55 www55 &> /dev/null usermod -aG www-data www55 &> /dev/null fi if [ ! -e "/opt/php55/etc/php55.ini" ] || [ ! -e "/opt/php55/etc/pool.d/www55.conf" ] ; then mkdir -p /opt/php55/etc/pool.d cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/php55.ini /opt/php55/etc/php55.ini fi cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/fpm55-pool-www.conf /opt/php55/etc/pool.d/www55.conf if [ ! -e "/var/www/www54" ] ; then adduser --system --group --home /var/www/www54 www54 &> /dev/null usermod -aG www-data www54 &> /dev/null fi if [ ! -e "/opt/php54/etc/php54.ini" ] || [ ! -e "/opt/php54/etc/pool.d/www54.conf" ] ; then mkdir -p /opt/php54/etc/pool.d cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/php54.ini /opt/php54/etc/php54.ini fi cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/fpm54-pool-www.conf /opt/php54/etc/pool.d/www54.conf if [ ! -e "/var/www/www53" ] ; then adduser --system --group --home /var/www/www53 www53 &> /dev/null usermod -aG www-data www53 &> /dev/null fi if [ ! -e "/opt/php53/etc/php53.ini" ] || [ ! -e "/opt/php53/etc/pool.d/www53.conf" ] ; then mkdir -p /opt/php53/etc/pool.d cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/php53.ini /opt/php53/etc/php53.ini fi cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/fpm53-pool-www.conf /opt/php53/etc/pool.d/www53.conf if [ ! -e "/opt/php52/etc/php52.ini" ] ; then mkdir -p /opt/php52/etc cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/php52.ini /opt/php52/etc/php52.ini fi if [ ! -e "/opt/php55/lib/php.ini" ] ; then mkdir -p /opt/php55/lib cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/php55-cli.ini /opt/php55/lib/php.ini fi if [ ! -e "/opt/php54/lib/php.ini" ] ; then mkdir -p /opt/php54/lib cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/php54-cli.ini /opt/php54/lib/php.ini fi if [ ! -e "/opt/php53/lib/php.ini" ] ; then mkdir -p /opt/php53/lib cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/php53-cli.ini /opt/php53/lib/php.ini fi if [ ! -e "/opt/php52/lib/php.ini" ] ; then mkdir -p /opt/php52/lib cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/php52-cli.ini /opt/php52/lib/php.ini fi if [ "$_CUSTOM_CONFIG_PHP55" = "NO" ] || [[ "$_THISHOST" =~ ".host8." ]] || [ "$_VMFAMILY" = "VS" ] ; then cp -af /opt/php55/etc/php55.ini /var/backups/dragon/t/etc-php55.ini-pre-$_INSTALLER_VERSION-$_NOW &> /dev/null cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/php55.ini /opt/php55/etc/php55.ini &> /dev/null cp -af /opt/php55/lib/php.ini /var/backups/dragon/t/lib-php55.ini-pre-$_INSTALLER_VERSION-$_NOW &> /dev/null cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/php55-cli.ini /opt/php55/lib/php.ini &> /dev/null fi if [ "$_CUSTOM_CONFIG_PHP54" = "NO" ] || [[ "$_THISHOST" =~ ".host8." ]] || [ "$_VMFAMILY" = "VS" ] ; then cp -af /opt/php54/etc/php54.ini /var/backups/dragon/t/etc-php54.ini-pre-$_INSTALLER_VERSION-$_NOW &> /dev/null cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/php54.ini /opt/php54/etc/php54.ini &> /dev/null cp -af /opt/php54/lib/php.ini /var/backups/dragon/t/lib-php54.ini-pre-$_INSTALLER_VERSION-$_NOW &> /dev/null cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/php54-cli.ini /opt/php54/lib/php.ini &> /dev/null fi if [ "$_CUSTOM_CONFIG_PHP53" = "NO" ] || [[ "$_THISHOST" =~ ".host8." ]] || [ "$_VMFAMILY" = "VS" ] ; then cp -af /opt/php53/etc/php53.ini /var/backups/dragon/t/etc-php53.ini-pre-$_INSTALLER_VERSION-$_NOW &> /dev/null cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/php53.ini /opt/php53/etc/php53.ini &> /dev/null cp -af /opt/php53/lib/php.ini /var/backups/dragon/t/lib-php53.ini-pre-$_INSTALLER_VERSION-$_NOW &> /dev/null cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/php53-cli.ini /opt/php53/lib/php.ini &> /dev/null fi if [ "$_CUSTOM_CONFIG_PHP52" = "NO" ] || [[ "$_THISHOST" =~ ".host8." ]] || [ "$_VMFAMILY" = "VS" ] ; then cp -af /opt/php52/etc/php52.ini /var/backups/dragon/t/etc-php52.ini-pre-$_INSTALLER_VERSION-$_NOW &> /dev/null cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/php52.ini /opt/php52/etc/php52.ini &> /dev/null cp -af /opt/php52/lib/php.ini /var/backups/dragon/t/lib-php52.ini-pre-$_INSTALLER_VERSION-$_NOW &> /dev/null cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/php52-cli.ini /opt/php52/lib/php.ini &> /dev/null fi ### cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/php55-fpm.conf /opt/php55/etc/php55-fpm.conf &> /dev/null cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/php54-fpm.conf /opt/php54/etc/php54-fpm.conf &> /dev/null cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/php53-fpm.conf /opt/php53/etc/php53-fpm.conf &> /dev/null cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/php52-fpm.conf /opt/php52/etc/php52-fpm.conf &> /dev/null ### sed -i "s/listen.allowed_clients =.*/listen.allowed_clients = 127.0.0.1,$_THISHTIP/g" /opt/etc/fpm/fpm-pool-common.conf &> /dev/null sed -i "s/>127.0.0.1127.0.0.1,$_THISHTIP\ /dev/null sed -i "s/listen.mode =.*/listen.mode = 0660/g" /opt/etc/fpm/fpm-pool-common.conf &> /dev/null ### _THIS_FILE=/opt/php55/etc/php55.ini fix_php_ini_redis fix_php_ini_jsmin fix_php_ini_suhosin fix_php_ini_mailparse _THIS_FILE=/opt/php55/lib/php.ini fix_php_ini_redis fix_php_ini_jsmin fix_php_ini_suhosin fix_php_ini_mailparse _THIS_FILE=/opt/php54/etc/php54.ini fix_php_ini_redis fix_php_ini_jsmin fix_php_ini_suhosin fix_php_ini_mailparse _THIS_FILE=/opt/php54/lib/php.ini fix_php_ini_redis fix_php_ini_jsmin fix_php_ini_suhosin fix_php_ini_mailparse _THIS_FILE=/opt/php53/etc/php53.ini fix_php_ini_redis fix_php_ini_jsmin fix_php_ini_suhosin fix_php_ini_mailparse _THIS_FILE=/opt/php53/lib/php.ini fix_php_ini_redis fix_php_ini_jsmin fix_php_ini_suhosin fix_php_ini_mailparse _THIS_FILE=/opt/php52/etc/php52.ini fix_php_ini_redis fix_php_ini_jsmin fix_php_ini_suhosin fix_php_ini_mailparse _THIS_FILE=/opt/php52/lib/php.ini fix_php_ini_redis fix_php_ini_jsmin fix_php_ini_suhosin fix_php_ini_mailparse rm -f /etc/php5/conf.d/{opcache.ini,apc.ini,imagick.ini,memcached.ini,redis.ini,suhosin.ini,newrelic.ini} &> /dev/null fix_php_ini_newrelic_all fix_php_ini_geos_all fix_php_ini_mongo_all fix_php_ini_opcache_all ### sed -i "s/^zlib.output_compression.*/zlib.output_compression = Off/g" /opt/php52/etc/php52.ini &> /dev/null sed -i "s/^zlib.output_compression.*/zlib.output_compression = Off/g" /opt/php52/lib/php.ini &> /dev/null sed -i "s/^zlib.output_compression.*/zlib.output_compression = Off/g" /opt/php53/etc/php53.ini &> /dev/null sed -i "s/^zlib.output_compression.*/zlib.output_compression = Off/g" /opt/php53/lib/php.ini &> /dev/null ### sed -i "s/.*zlib.output_compression_level/;zlib.output_compression_level/g" /opt/php52/etc/php52.ini &> /dev/null sed -i "s/.*zlib.output_compression_level/;zlib.output_compression_level/g" /opt/php52/lib/php.ini &> /dev/null sed -i "s/.*zlib.output_compression_level/;zlib.output_compression_level/g" /opt/php53/etc/php53.ini &> /dev/null sed -i "s/.*zlib.output_compression_level/;zlib.output_compression_level/g" /opt/php53/lib/php.ini &> /dev/null ### } # restore_default_php () { msg "INFO: Restoring default PHP configuration" cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/php53-cli.ini /opt/php53/lib/php.ini &> /dev/null cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/php53.ini /opt/php53/etc/php53.ini &> /dev/null cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/php54-cli.ini /opt/php54/lib/php.ini &> /dev/null cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/php54.ini /opt/php54/etc/php54.ini &> /dev/null cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/php55-cli.ini /opt/php55/lib/php.ini &> /dev/null cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/php55.ini /opt/php55/etc/php55.ini &> /dev/null } # tune_php () { msg "INFO: Tuning PHP configuration" if [ "$_TUNE_PHP_FPM_TIMEOUT" -lt "60" ] ; then _TUNE_PHP_FPM_TIMEOUT=60 fi # PHP-FPM pools sed -i "s/180s/${_TUNE_PHP_FPM_TIMEOUT}s/g" /opt/php*/etc/pool.d/*.conf &> /dev/null sed -i "s/180s/${_TUNE_PHP_FPM_TIMEOUT}s/g" /opt/php*/etc/php*-fpm.conf &> /dev/null sed -i "s/180/$_TUNE_PHP_FPM_TIMEOUT/g" /opt/etc/fpm/fpm-pool-common.conf &> /dev/null # PHP-FPM INI sed -i "s/^default_socket_timeout =.*/default_socket_timeout = $_TUNE_PHP_FPM_TIMEOUT/g" /opt/php*/etc/php*.ini &> /dev/null sed -i "s/^max_execution_time =.*/max_execution_time = $_TUNE_PHP_FPM_TIMEOUT/g" /opt/php*/etc/php*.ini &> /dev/null sed -i "s/^max_input_time =.*/max_input_time = $_TUNE_PHP_FPM_TIMEOUT/g" /opt/php*/etc/php*.ini &> /dev/null # Redis config should sync with PHP-FPM sed -i "s/^timeout .*/timeout $_TUNE_PHP_FPM_TIMEOUT/g" /etc/redis/redis.conf &> /dev/null # PHP-CLI INI sed -i "s/^max_execution_time =.*/max_execution_time = $_TUNE_PHP_CLI_TIMEOUT/g" /opt/php*/lib/php.ini &> /dev/null sed -i "s/^max_input_time =.*/max_input_time = $_TUNE_PHP_CLI_TIMEOUT/g" /opt/php*/lib/php.ini &> /dev/null sed -i "s/^default_socket_timeout =.*/default_socket_timeout = $_TUNE_PHP_CLI_TIMEOUT/g" /opt/php*/lib/php.ini &> /dev/null } # restore_default_sql () { msg "INFO: Restoring default SQL configuration" sed -i "s/.*check_for_crashed_tables/#check_for_crashed_tables/g" /etc/mysql/debian-start &> /dev/null if [ "$_CUSTOM_CONFIG_SQL" = "NO" ] || [[ "$_THISHOST" =~ ".host8." ]] || [ "$_VMFAMILY" = "VS" ] ; then if [ "$_CUSTOM_CONFIG_SQL" = "YES" ] ; then _DO_NOTHING=YES else cp -af /etc/mysql/my.cnf /var/backups/dragon/t/my.cnf-pre-$_INSTALLER_VERSION-$_NOW &> /dev/null cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/my.cnf.txt /etc/mysql/my.cnf sed -i "s/.*slow_query_log/#slow_query_log/g" /etc/mysql/my.cnf &> /dev/null sed -i "s/.*long_query_time/#long_query_time/g" /etc/mysql/my.cnf &> /dev/null sed -i "s/.*slow_query_log_file/#slow_query_log_file/g" /etc/mysql/my.cnf &> /dev/null if [ ! -e "/etc/mysql/skip-name-resolve.txt" ] ; then sed -i "s/.*skip-name-resolve/#skip-name-resolve/g" /etc/mysql/my.cnf &> /dev/null fi fi fi mv -f /etc/mysql/my.cnf-pre* /var/backups/dragon/t/ &> /dev/null sed -i "s/.*default-table-type/#default-table-type/g" /etc/mysql/my.cnf &> /dev/null sed -i "s/.*language/#language/g" /etc/mysql/my.cnf &> /dev/null _THIS_DB_SERVER_TEST=`mysql -V 2>&1` if [[ "$_THIS_DB_SERVER_TEST" =~ "5.5." ]] || [[ "$_THIS_DB_SERVER_TEST" =~ "10.0" ]] ; then _DO_NOTHING=YES else sed -i "s/.*lc_messages_dir /#lc_messages_dir /g" /etc/mysql/my.cnf &> /dev/null sed -i "s/.*lc_messages /#lc_messages /g" /etc/mysql/my.cnf &> /dev/null fi if [[ "$_THIS_DB_SERVER_TEST" =~ "MariaDB" ]] ; then sed -i "s/.*innodb_lazy_drop_table /#innodb_lazy_drop_table /g" /etc/mysql/my.cnf &> /dev/null fi if [ "$_CUSTOM_CONFIG_SQL" = "NO" ] ; then if [ "$_DB_BINARY_LOG" = "NO" ] ; then bash /var/xdrago/purge_binlogs.sh &> /dev/null sed -i "s/.*purge_binlogs.*//g" /var/spool/cron/crontabs/root &> /dev/null sed -i "/^$/d" /var/spool/cron/crontabs/root &> /dev/null sed -i "s/^log_bin/#log_bin/g" /etc/mysql/my.cnf &> /dev/null sed -i "s/^expire_logs_days/#expire_logs_days/g" /etc/mysql/my.cnf &> /dev/null sed -i "s/^max_binlog_size/#max_binlog_size/g" /etc/mysql/my.cnf &> /dev/null elif [ "$_DB_BINARY_LOG" = "YES" ] ; then sed -i "s/.*log_bin/log_bin/g" /etc/mysql/my.cnf &> /dev/null sed -i "s/.*expire_logs_days/expire_logs_days/g" /etc/mysql/my.cnf &> /dev/null sed -i "s/.*max_binlog_size/max_binlog_size/g" /etc/mysql/my.cnf &> /dev/null fi if [ "$_DB_ENGINE" = "MyISAM" ] || [ "$_DB_ENGINE" = "InnoDB" ] ; then sed -i "s/^default_storage_engine.*/default_storage_engine = $_DB_ENGINE/g" /etc/mysql/my.cnf &> /dev/null fi fi } # tune_sql () { msg "INFO: Tuning SQL configuration" sed -i "s/3600/$_TUNE_SQL_TIMEOUT/g" /etc/mysql/my.cnf &> /dev/null sed -i "s/3600/$_TUNE_SQL_TIMEOUT/g" /var/xdrago/minute.sh &> /dev/null } # restore_default_nginx () { msg "INFO: Restoring default Nginx configuration" cd /var/xdrago/monitor/check cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/tools/system/monitor/check/scan_nginx ./ if [ -d "$_TUNE_HOSTMASTER" ] ; then for Files in `find $_TUNE_HOSTMASTER/config/server_master/nginx/vhost.d -type f` do sed -i "s/#limit_conn /limit_conn /g" $Files &> /dev/null done fi su -s /bin/bash - aegir -c "drush @server_master provision-verify &> /dev/null" mrun "sleep 8" } # tune_nginx () { msg "INFO: Tuning Nginx configuration" sed -i "s/ = 300/ = $_TUNE_NGINX_FIREWALL/g" /var/xdrago/monitor/check/scan_nginx &> /dev/null sed -i "s/60/$_TUNE_NGINX_TIMEOUT/g" /var/aegir/config/server_master/nginx.conf &> /dev/null sed -i "s/300/$_TUNE_NGINX_TIMEOUT/g" /var/aegir/config/server_master/nginx.conf &> /dev/null sed -i "s/180/$_TUNE_NGINX_TIMEOUT/g" /var/aegir/config/server_master/nginx.conf &> /dev/null if [ "$_TUNE_NGINX_CONNECT" = "OFF" ] ; then sed -i "s/limit_conn /#limit_conn /g" /var/aegir/config/server_master/nginx.conf &> /dev/null if [ -d "$_TUNE_HOSTMASTER" ] ; then for Files in `find $_TUNE_HOSTMASTER/config/server_master/nginx/vhost.d -type f` do sed -i "s/limit_conn /#limit_conn /g" $Files &> /dev/null done fi fi } # restart_services () { msg "INFO: Reloading services" if [ -e "/etc/init.d/php55-fpm" ] ; then mrun "service php55-fpm reload" &> /dev/null fi if [ -e "/etc/init.d/php54-fpm" ] ; then mrun "service php54-fpm reload" &> /dev/null fi if [ -e "/etc/init.d/php53-fpm" ] ; then mrun "service php53-fpm reload" &> /dev/null fi if [ -e "/etc/init.d/php52-fpm" ] ; then mrun "service php52-fpm reload" &> /dev/null fi mrun "service mysql restart" &> /dev/null mrun "service nginx reload" &> /dev/null mrun "service redis-server restart" &> /dev/null if [ -e "/usr/sbin/csf" ] && [ -e "/etc/csf/csf.deny" ] ; then mrun "csf -q" &> /dev/null fi } # tune_web_server_config () { _LIM_FPM="$_L_PHP_FPM_WORKERS" if [ "$_LIM_FPM" -lt "24" ] ; then if [[ "$_THISHOST" =~ ".host8." ]] || [ "$_VMFAMILY" = "VS" ] ; then _LIM_FPM=24 fi fi let "_PROCESS_MAX_FPM = (($_LIM_FPM * 5))" let "_CHILD_MAX_FPM = (($_LIM_FPM * 2))" if [ "$_PHP_FPM_WORKERS" = "AUTO" ] ; then _DO_NOTHING=YES else _PHP_FPM_WORKERS=${_PHP_FPM_WORKERS//[^0-9]/} if [ ! -z "$_PHP_FPM_WORKERS" ] && [ "$_PHP_FPM_WORKERS" -gt "0" ] ; then _CHILD_MAX_FPM="$_PHP_FPM_WORKERS" fi fi let "_START_LEGACY_FPM = (($_LIM_FPM - 21))" if [ "$_START_LEGACY_FPM" -lt "3" ] ; then _START_LEGACY_FPM=3 fi sed -i "s/process.max =.*/process.max = $_PROCESS_MAX_FPM/g" /opt/php55/etc/php55-fpm.conf &> /dev/null sed -i "s/process.max =.*/process.max = $_PROCESS_MAX_FPM/g" /opt/php54/etc/php54-fpm.conf &> /dev/null sed -i "s/process.max =.*/process.max = $_PROCESS_MAX_FPM/g" /opt/php53/etc/php53-fpm.conf &> /dev/null sed -i "s/pm.max_children =.*/pm.max_children = $_CHILD_MAX_FPM/g" /opt/php55/etc/pool.d/www55.conf &> /dev/null sed -i "s/pm.max_children =.*/pm.max_children = $_CHILD_MAX_FPM/g" /opt/php54/etc/pool.d/www54.conf &> /dev/null sed -i "s/pm.max_children =.*/pm.max_children = $_CHILD_MAX_FPM/g" /opt/php53/etc/pool.d/www53.conf &> /dev/null sed -i "s/max_children\">.*$_START_LEGACY_FPM /dev/null if [ ! -z "$_PHP_FPM_DENY" ] ; then sed -i "s/passthru,/$_PHP_FPM_DENY,/g" /opt/php55/etc/pool.d/www55.conf &> /dev/null sed -i "s/passthru,/$_PHP_FPM_DENY,/g" /opt/php54/etc/pool.d/www54.conf &> /dev/null sed -i "s/passthru,/$_PHP_FPM_DENY,/g" /opt/php53/etc/pool.d/www53.conf &> /dev/null fi if [ ! -z "$_L_NGINX_WORKERS" ] ; then sed -i "s/worker_processes.*/worker_processes $_L_NGINX_WORKERS;/g" /etc/nginx/nginx.conf &> /dev/null else sed -i "s/worker_processes.*/worker_processes 4;/g" /etc/nginx/nginx.conf &> /dev/null fi } # tune_sql_memory_limits () { if [ ! -e "/var/opt/mysqltuner-$_INSTALLER_VERSION-$_NOW.txt" ] ; then msg "INFO: Running MySQLTuner check on all databases..." msg "NOTE! This step may take a LONG time, please wait..." rm -f /var/opt/mysqltuner* ### curl -L --max-redirs 10 -k -s --retry 10 --retry-delay 15 -A iCab "https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl" -o /var/opt/mysqltuner.pl curl -L --max-redirs 10 -k -s --retry 10 --retry-delay 15 -A iCab "http://files.aegir.cc/dev/mysqltuner.pl" -o /var/opt/mysqltuner.pl if [ ! -e "/var/opt/mysqltuner.pl" ] ; then mrun "sleep 60" curl -L --max-redirs 10 -k -s --retry 10 --retry-delay 15 -A iCab "http://files.aegir.cc/dev/mysqltuner.pl" -o /var/opt/mysqltuner.pl fi if [ -e "/var/opt/mysqltuner.pl" ] ; then perl /var/opt/mysqltuner.pl > /var/opt/mysqltuner-$_INSTALLER_VERSION-$_NOW.txt 2>&1 fi fi if [ -e "/var/opt/mysqltuner.pl" ] && [ -e "/var/opt/mysqltuner-$_INSTALLER_VERSION-$_NOW.txt" ] ; then _REC_MYISAM_MEM=`cat /var/opt/mysqltuner-$_INSTALLER_VERSION-$_NOW.txt | grep "Data in MyISAM tables" | cut -d: -f2 | awk '{ print $1}'` _REC_INNODB_MEM=`cat /var/opt/mysqltuner-$_INSTALLER_VERSION-$_NOW.txt | grep "Data in InnoDB tables" | cut -d: -f2 | awk '{ print $1}'` ###--------------------### if [ ! -z "$_REC_MYISAM_MEM" ] ; then _RAW_MYISAM_MEM=`echo $_REC_MYISAM_MEM | sed "s/[A-Z]//g"` if [[ "$_REC_MYISAM_MEM" =~ "G" ]] ; then let "_RAW_MYISAM_MEM = (($_RAW_MYISAM_MEM * 1024))" fi if [ "$_RAW_MYISAM_MEM" -gt "$_USE_SQL" ] ; then _USE_MYISAM_MEM="$_USE_SQL" else _USE_MYISAM_MEM="$_RAW_MYISAM_MEM" fi _USE_MYISAM_MEM="${_USE_MYISAM_MEM}M" sed -i "s/^key_buffer_size.*/key_buffer_size = $_USE_MYISAM_MEM/g" /etc/mysql/my.cnf &> /dev/null else _USE_MYISAM_MEM="64M" sed -i "s/^key_buffer_size.*/key_buffer_size = $_USE_MYISAM_MEM/g" /etc/mysql/my.cnf &> /dev/null fi ###--------------------### if [ ! -z "$_REC_INNODB_MEM" ] ; then _RAW_INNODB_MEM=`echo $_REC_INNODB_MEM | sed "s/[A-Z]//g"` if [[ "$_REC_INNODB_MEM" =~ "G" ]] ; then let "_RAW_INNODB_MEM = (($_RAW_INNODB_MEM * 1024))" fi if [ "$_RAW_INNODB_MEM" -gt "$_USE_SQL" ] ; then _USE_INNODB_MEM="$_USE_SQL" else _USE_INNODB_MEM="$_RAW_INNODB_MEM" fi _INNODB_BPI="0" _INNODB_BPI=`echo "scale=0; $_USE_INNODB_MEM/1024" | bc`; if [ "$_INNODB_BPI" -gt "1" ] ; then sed -i "s/innodb_file_per_table = 1/innodb_file_per_table = 1\ninnodb_buffer_pool_instances = $_INNODB_BPI/g" /etc/mysql/my.cnf &> /dev/null fi _USE_INNODB_MEM="${_USE_INNODB_MEM}M" sed -i "s/^innodb_buffer_pool_size.*/innodb_buffer_pool_size = $_USE_INNODB_MEM/g" /etc/mysql/my.cnf &> /dev/null else _USE_INNODB_MEM="64M" sed -i "s/^innodb_buffer_pool_size.*/innodb_buffer_pool_size = $_USE_INNODB_MEM/g" /etc/mysql/my.cnf &> /dev/null fi else sed -i "s/= 181/= $_USE_SQL/g" /etc/mysql/my.cnf &> /dev/null fi } # tune_memory_limits () { msg "INFO: Default Memory Tuning" _AWS_TEST_A=$(grep cloudimg /etc/fstab) _AWS_TEST_B=$(grep cloudconfig /etc/fstab) _ETH_TEST=`ifconfig 2>&1` _VM_TEST=`uname -a 2>&1` if [[ "$_ETH_TEST" =~ "venet0" ]] ; then _VMFAMILY="VZ" elif [ -e "/proc/bean_counters" ] ; then _VMFAMILY="VZ" elif [[ "$_THISHOST" =~ ".host8." ]] && [ -e "/boot/grub/menu.lst" ] ; then _VMFAMILY="TG" elif [[ "$_THISHOST" =~ ".host8." ]] && [ -e "/boot/grub/grub.cfg" ] ; then _VMFAMILY="TG" else _VMFAMILY="XEN" fi if [[ "$_VM_TEST" =~ beng ]] ; then _VMFAMILY="VS" fi if [[ "$_AWS_TEST_A" =~ "cloudimg" ]] || [[ "$_AWS_TEST_B" =~ "cloudconfig" ]] ; then _VMFAMILY="AWS" fi _CPU_INFO=$(grep -c processor /proc/cpuinfo) _CPU_INFO=${_CPU_INFO//[^0-9]/} _NPROC_TEST=$(which nproc) if [ -z "$_NPROC_TEST" ] ; then _CPU_NR="$_CPU_INFO" else _CPU_NR=`nproc` fi _CPU_NR=${_CPU_NR//[^0-9]/} if [ ! -z "$_CPU_NR" ] && [ ! -z "$_CPU_INFO" ] && [ "$_CPU_NR" -gt "$_CPU_INFO" ] && [ "$_CPU_INFO" -gt "0" ] ; then _CPU_NR="$_CPU_INFO" fi if [ -z "$_CPU_NR" ] || [ "$_CPU_NR" -lt "1" ] ; then _CPU_NR=1 fi let "_CPU_MX = (($_CPU_NR * 2))" if [ "$_CPU_MX" -lt "4" ] ; then _CPU_MX=4 fi let "_CPU_TG = (($_CPU_NR / 2))" if [ "$_CPU_TG" -lt "4" ] ; then _CPU_TG=4 fi let "_CPU_VS = (($_CPU_NR / 12))" if [ "$_CPU_VS" -lt "2" ] ; then _CPU_VS=2 fi _RAM=`free -mto | grep Mem: | awk '{ print $2 }'` if [ "$_RESERVED_RAM" -gt "0" ] ; then let "_RAM = (($_RAM - $_RESERVED_RAM))" fi let "_USE = (($_RAM / 4))" if [ "$_VMFAMILY" = "VS" ] || [[ "$_THISHOST" =~ ".host8." ]] ; then if [ "$_VMFAMILY" = "VS" ] ; then if [ -e "/root/.tg.cnf" ] ; then let "_USE_SQL = (($_RAM / 12))" else let "_USE_SQL = (($_RAM / 24))" fi else let "_USE_SQL = (($_RAM / 8))" fi else let "_USE_SQL = (($_RAM / 8))" fi _TMP_SQL="${_USE_SQL}M" let "_SRT_SQL = (($_USE_SQL * 2))" _SRT_SQL="${_SRT_SQL}K" if [ "$_USE" -ge "512" ] && [ "$_USE" -lt "1024" ] ; then _USE_PHP=512 _USE_OPC=512 _PRC_SQL=20 _QCE_SQL=128M _RND_SQL=8M _JBF_SQL=4M if [ "$_PHP_FPM_WORKERS" = "AUTO" ] ; then _L_PHP_FPM_WORKERS=12 else _L_PHP_FPM_WORKERS=$_PHP_FPM_WORKERS fi if [ "$_NGINX_WORKERS" = "AUTO" ] ; then _L_NGINX_WORKERS=$_CPU_MX else _L_NGINX_WORKERS=$_NGINX_WORKERS fi elif [ "$_USE" -ge "1024" ] ; then if [ "$_VMFAMILY" = "XEN" ] || [ "$_VMFAMILY" = "AWS" ] ; then _USE_PHP=512 _USE_OPC=1024 _PRC_SQL=30 _QCE_SQL=128M _RND_SQL=8M _JBF_SQL=4M if [ "$_PHP_FPM_WORKERS" = "AUTO" ] ; then _L_PHP_FPM_WORKERS=24 else _L_PHP_FPM_WORKERS=$_PHP_FPM_WORKERS fi if [ "$_NGINX_WORKERS" = "AUTO" ] ; then _L_NGINX_WORKERS=$_CPU_MX else _L_NGINX_WORKERS=$_NGINX_WORKERS fi elif [ "$_VMFAMILY" = "VS" ] || [ "$_VMFAMILY" = "TG" ] ; then if [ -e "/boot/grub/grub.cfg" ] || [ -e "/boot/grub/menu.lst" ] || [ -e "/root/.tg.cnf" ] ; then _USE_PHP=1024 _USE_OPC=1024 _PRC_SQL=50 _QCE_SQL=128M _RND_SQL=8M _JBF_SQL=4M if [ "$_PHP_FPM_WORKERS" = "AUTO" ] ; then _L_PHP_FPM_WORKERS=24 else _L_PHP_FPM_WORKERS=$_PHP_FPM_WORKERS fi if [ "$_NGINX_WORKERS" = "AUTO" ] ; then _L_NGINX_WORKERS=$_CPU_TG else _L_NGINX_WORKERS=$_NGINX_WORKERS fi sed -i "s/64000/128000/g" /opt/php53/etc/php55.ini &> /dev/null sed -i "s/64000/128000/g" /opt/php53/etc/php54.ini &> /dev/null sed -i "s/64000/128000/g" /opt/php53/etc/php53.ini &> /dev/null sed -i "s/64000/128000/g" /opt/php52/etc/php52.ini &> /dev/null else _USE_PHP=1024 _USE_OPC=1024 _PRC_SQL=25 _QCE_SQL=64M _RND_SQL=2M _JBF_SQL=2M if [ "$_PHP_FPM_WORKERS" = "AUTO" ] ; then _L_PHP_FPM_WORKERS=6 else _L_PHP_FPM_WORKERS=$_PHP_FPM_WORKERS fi if [ "$_NGINX_WORKERS" = "AUTO" ] ; then _L_NGINX_WORKERS=$_CPU_VS else _L_NGINX_WORKERS=$_NGINX_WORKERS fi fi else _USE_PHP=256 _USE_OPC=256 _PRC_SQL=10 _QCE_SQL=32M _RND_SQL=2M _JBF_SQL=2M if [ "$_PHP_FPM_WORKERS" = "AUTO" ] ; then _L_PHP_FPM_WORKERS=12 else _L_PHP_FPM_WORKERS=$_PHP_FPM_WORKERS fi if [ "$_NGINX_WORKERS" = "AUTO" ] ; then _L_NGINX_WORKERS=$_CPU_MX else _L_NGINX_WORKERS=$_NGINX_WORKERS fi fi else _USE_PHP="$_USE" _USE_OPC="$_USE" _PRC_SQL=10 _QCE_SQL=32M _RND_SQL=1M _JBF_SQL=1M if [ "$_PHP_FPM_WORKERS" = "AUTO" ] ; then _L_PHP_FPM_WORKERS=6 else _L_PHP_FPM_WORKERS=$_PHP_FPM_WORKERS fi if [ "$_NGINX_WORKERS" = "AUTO" ] ; then _L_NGINX_WORKERS=$_CPU_MX else _L_NGINX_WORKERS=$_NGINX_WORKERS fi fi _USE_JETTY="-Xmx${_USE_OPC}m" if [ "$_VMFAMILY" = "VZ" ] ; then _USE_OPC=64 fi let "_USE_FPM = (($_USE_PHP / 2))" if [ "$_USE_FPM" -lt "196" ] ; then _USE_FPM=196 fi if [ "$_USE_PHP" -lt "196" ] ; then _USE_PHP=196 fi if [ ! -e "/var/xdrago/conf/fpm-pool-foo.conf" ] ; then mkdir -p /var/xdrago/conf fi cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/conf/fpm-pool-foo.conf /var/xdrago/conf/fpm-pool-foo.conf if [ -e "/opt/etc/fpm/fpm-pool-common.conf" ] ; then sed -i "s/256/$_USE_FPM/g" /opt/etc/fpm/fpm-pool-common.conf &> /dev/null fi if [ -e "/opt/php55/etc/php55.ini" ] ; then sed -i "s/256/$_USE_FPM/g" /opt/php55/etc/php55.ini &> /dev/null sed -i "s/181/$_USE_OPC/g" /opt/php55/etc/php55.ini &> /dev/null sed -i "s/256/$_USE_PHP/g" /opt/php55/lib/php.ini &> /dev/null sed -i "s/256/$_USE_PHP/g" /opt/php55/etc/pool.d/www55.conf &> /dev/null fi if [ -e "/opt/php54/etc/php54.ini" ] ; then sed -i "s/256/$_USE_FPM/g" /opt/php54/etc/php54.ini &> /dev/null sed -i "s/181/$_USE_OPC/g" /opt/php54/etc/php54.ini &> /dev/null sed -i "s/256/$_USE_PHP/g" /opt/php54/lib/php.ini &> /dev/null sed -i "s/256/$_USE_PHP/g" /opt/php54/etc/pool.d/www54.conf &> /dev/null fi if [ -e "/opt/php53/etc/php53.ini" ] ; then sed -i "s/256/$_USE_FPM/g" /opt/php53/etc/php53.ini &> /dev/null sed -i "s/181/$_USE_OPC/g" /opt/php53/etc/php53.ini &> /dev/null sed -i "s/256/$_USE_PHP/g" /opt/php53/lib/php.ini &> /dev/null sed -i "s/256/$_USE_PHP/g" /opt/php53/etc/pool.d/www53.conf &> /dev/null fi if [ -e "/opt/php52/etc/php52.ini" ] ; then sed -i "s/256/$_USE_FPM/g" /opt/php52/etc/php52.ini &> /dev/null sed -i "s/181/$_USE_OPC/g" /opt/php52/etc/php52.ini &> /dev/null sed -i "s/256/$_USE_PHP/g" /opt/php52/lib/php.ini &> /dev/null fi if [ "$_CUSTOM_CONFIG_SQL" = "NO" ] ; then tune_sql_memory_limits sed -i "s/= 191/= $_PRC_SQL/g" /etc/mysql/my.cnf &> /dev/null sed -i "s/^tmp_table_size.*/tmp_table_size = $_TMP_SQL/g" /etc/mysql/my.cnf &> /dev/null sed -i "s/^max_heap_table_size.*/max_heap_table_size = $_TMP_SQL/g" /etc/mysql/my.cnf &> /dev/null sed -i "s/^myisam_sort_buffer_size.*/myisam_sort_buffer_size = $_SRT_SQL/g" /etc/mysql/my.cnf &> /dev/null sed -i "s/^query_cache_size.*/query_cache_size = $_QCE_SQL/g" /etc/mysql/my.cnf &> /dev/null sed -i "s/^read_rnd_buffer_size.*/read_rnd_buffer_size = $_RND_SQL/g" /etc/mysql/my.cnf &> /dev/null sed -i "s/^join_buffer_size.*/join_buffer_size = $_JBF_SQL/g" /etc/mysql/my.cnf &> /dev/null fi _MAX_MEM_REDIS="${_USE_OPC}MB" sed -i "s/^maxmemory .*/maxmemory $_MAX_MEM_REDIS/g" /etc/redis/redis.conf &> /dev/null if [ -e "/etc/default/jetty9" ] && [ -e "/opt/solr4" ] ; then sed -i "s/^JAVA_OPTIONS.*/JAVA_OPTIONS=\"-Xms8m $_USE_JETTY -Djava.awt.headless=true -Dsolr.solr.home=\/opt\/solr4 \$JAVA_OPTIONS\" # Options/g" /etc/default/jetty9 &> /dev/null fi if [ -e "/etc/default/jetty8" ] && [ -e "/opt/solr3" ] ; then sed -i "s/^JAVA_OPTIONS.*/JAVA_OPTIONS=\"-Xms8m $_USE_JETTY -Djava.awt.headless=true -Dsolr.solr.home=\/opt\/solr3 \$JAVA_OPTIONS\" # Options/g" /etc/default/jetty8 &> /dev/null fi if [ -e "/etc/default/jetty7" ] && [ -e "/opt/solr1" ] ; then sed -i "s/^JAVA_OPTIONS.*/JAVA_OPTIONS=\"-Xms8m $_USE_JETTY -Djava.awt.headless=true -Dsolr.solr.home=\/opt\/solr1 \$JAVA_OPTIONS\" # Options/g" /etc/default/jetty7 &> /dev/null fi tune_web_server_config } # check_git_repos_status () { _GITHUB_WORKS=NO _DRUPAL_WORKS=NO _GITORIOUS_WORKS=NO if [ "$_FORCE_GIT_MIRROR" = "github" ] ; then msg "INFO: We will use forced GitHub repository without testing connection" _GITHUB_WORKS=YES _DRUPAL_WORKS=NO _GITORIOUS_WORKS=NO sleep 1 elif [ "$_FORCE_GIT_MIRROR" = "drupal" ] ; then msg "INFO: We will use forced Drupal mirror without testing connection" _GITHUB_WORKS=NO _DRUPAL_WORKS=YES _GITORIOUS_WORKS=NO sleep 1 elif [ "$_FORCE_GIT_MIRROR" = "gitorious" ] ; then msg "INFO: We will use forced Gitorious mirror without testing connection" _GITHUB_WORKS=NO _DRUPAL_WORKS=NO _GITORIOUS_WORKS=YES sleep 1 else msg "INFO: Testing repository mirror servers availability..." sleep 1 _GITHUB_WORKS=YES _DRUPAL_WORKS=YES _GITORIOUS_WORKS=YES if ! netcat -w 8 -z github.com 9418 ; then _GITHUB_WORKS=NO msg "WARN: The GitHub master repository server doesn't respond..." elif ! netcat -w 8 -z git.drupal.org 80 ; then _DRUPAL_WORKS=NO msg "WARN: The Drupal mirror repository server doesn't respond..." elif ! netcat -w 8 -z code.aegir.cc 9418 ; then _GITORIOUS_WORKS=NO msg "WARN: The Gitorious mirror repository server doesn't respond..." fi fi if [ "$_GITHUB_WORKS" = "YES" ] ; then _BOA_REPO_NAME="boa" _BOA_REPO_GIT_URL="git://github.com/omega8cc" msg "INFO: GitHub master repository will be used" elif [ "$_DRUPAL_WORKS" = "YES" ] ; then _BOA_REPO_NAME="barracuda" _BOA_REPO_GIT_URL="http://git.drupal.org/project" msg "INFO: Drupal mirror repository will be used" elif [ "$_GITORIOUS_WORKS" = "YES" ] ; then _BOA_REPO_NAME="barracuda-octopus" _BOA_REPO_GIT_URL="git://code.aegir.cc/aegir" msg "INFO: Gitorious mirror repository will be used" else cat < /dev/null cd /opt/tmp rm -f -r /opt/tmp/$_BOA_REPO_NAME if [ "$_AEGIR_VERSION" = "HEAD" ] ; then git clone $_BOA_REPO_GIT_URL/$_BOA_REPO_NAME.git &> /dev/null if [ "$_FORCE_GIT_MIRROR" = "test" ] ; then cd /opt/tmp/$_BOA_REPO_NAME git checkout 2.0.5-dev &> /dev/null cd /opt/tmp fi else curl -L --max-redirs 10 -k -s --retry 10 --retry-delay 15 -A iCab "http://files.aegir.cc/versions/stable/tar/boa-$_INSTALLER_VERSION.tar.gz" | tar -xzf - _BOA_REPO_NAME="boa" fi # # Get spinner cd $_SRCDIR rm -f spinner* cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/helpers/spinner ./ chmod +x spinner &> /dev/null # # Create tmp stuff _LOG=/var/backups/bond-$_NOW.log _SILENT=/opt/tmp/silent.log # # ###---### Tune Your Aegir Hosting System # echo " " msg "TUNER START -> checkpoint: " cat < /dev/null mrun "sleep 30" fi msg "INFO: Tuning in progress, please wait..." if [ -e "/root/.barracuda.cnf" ] ; then source /root/.barracuda.cnf fi restore_default_php update_php_conf tune_php restore_default_sql tune_sql restore_default_nginx tune_nginx tune_memory_limits restart_services msg "INFO: Tuning completed" else if [ ! -e "/root/.upstart.cnf" ] ; then msg "INFO: We will stop cron and then wait 30 seconds..." service cron stop &> /dev/null mrun "sleep 30" fi if [ -e "/root/.barracuda.cnf" ] ; then source /root/.barracuda.cnf fi restore_default_php update_php_conf restore_default_sql restore_default_nginx tune_memory_limits restart_services msg "INFO: Tuning stopped and default settings restored" fi rm -f -r /var/opt/* rm -f -r /opt/tmp/* rm -f /var/run/boa_run.pid if [ ! -e "/root/.upstart.cnf" ] ; then service cron start &> /dev/null fi msg "INFO: Cron started again" msg "BYE!" ###----------------------------------------### ### ### Barracuda-Octopus-Nginx-Drupal Tuner ### Copyright (C) 2010-2014 Omega8.cc ### noc@omega8.cc www.omega8.cc ### ###----------------------------------------###