HEX
Server: Apache
System: Linux vpshost0650.publiccloud.com.br 4.4.79-grsec-1.lc.x86_64 #1 SMP Wed Aug 2 14:18:21 -03 2017 x86_64
User: bandeirantesbomb3 (10068)
PHP: 8.0.7
Disabled: apache_child_terminate,dl,escapeshellarg,escapeshellcmd,exec,link,mail,openlog,passthru,pcntl_alarm,pcntl_exec,pcntl_fork,pcntl_get_last_error,pcntl_getpriority,pcntl_setpriority,pcntl_signal,pcntl_signal_dispatch,pcntl_sigprocmask,pcntl_sigtimedwait,pcntl_sigwaitinfo,pcntl_strerror,pcntl_wait,pcntl_waitpid,pcntl_wexitstatus,pcntl_wifexited,pcntl_wifsignaled,pcntl_wifstopped,pcntl_wstopsig,pcntl_wtermsig,php_check_syntax,php_strip_whitespace,popen,proc_close,proc_open,shell_exec,symlink,system
Upload Files
File: //usr/local/locaweb/bin/lwcorp_apache2_limites.sh
#!/bin/bash

# VARS e FUNCTIONS
. /etc/lwcorp/lwcorp.functions

CURR_MAXCLIENTS="$(grep MaxClients /etc/apache2/apache2.conf | grep -v ^# | head -n1 | awk '{print$2}')"
CURR_SERVERLIMIT="$(grep ServerLimit /etc/apache2/apache2.conf | grep -v ^# | head -n1 | awk '{print$2}')"

if [ -z $CURR_SERVERLIMIT ]; then
    CURR_SERVERLIMIT="256"
fi

if [ -z $CURR_MAXCLIENTS ]; then
    CURR_MAXCLIENTS="256"
fi

dialog --backtitle "$LWCORPHEADER" --title "$TITLEINFO" --msgbox "\nINFORMACAO:\n\nPOR PADRAO, AS DIRETIVAS MAXCLIENT E SERVER LIMIT POSSUEM O MESMO VALOR.\n\nAO DEFINIR UM NOVO LIMITE, ESTARA ALTERANDO O VALOR DESSAS DUAS VARIAVEIS." 11 78

#
# ANTES DE MAIS NADA, FAZ UM CONFIGTEST.
#

/usr/sbin/apache2ctl configtest 2> /dev/null

case $? in
    0) echo "$LOGDATE - [Exibindo na tela atual limite de conexao (ServerLimit: $CURR_SERVERLIMIT. MaxClients: $CURR_MAXCLIENTS)]" >> $LOGFILE;
       dialog --backtitle "$LWCORPHEADER" --title "$TITLECONFIRMACAO" --yesno "\nATENCAO:\n\nATUAL LIMITE DE CONEXOES = $CURR_MAXCLIENTS \n\nDESEJA ALTERAR?\n" 11 65;;
    *) echo "$LOGDATE - [Processo cancelado devido a uma falha no Apache2 identificada pelo configtest]" >> $LOGFILE;
       dialog --backtitle "$LWCORPHEADER" --title "$TITLEERRO" --msgbox "\nHA UM PROBLEMA NO CONFIGTEST DO APACHE.\n\nCORRIJA ISSO ANTES DE PROSSEGUIR." 9 65; exit 1;;
esac

case $? in
    0) echo "$LOGDATE - [Selecionada opcao para troca do limite de conexoes. Aguardando analista informar novo limite]">> $LOGFILE;
       NEW_LIMIT=$(dialog --backtitle "$LWCORPHEADER" --title "LIMITES APACHE2" --stdout --inputbox "\nINFORME O NOVO LIMITE DE CONEXOES NO APACHE2:\n" 10 55) ;;
    *) echo "$LOGDATE - [Processo cancelado pelo analista]" >> $LOGFILE;
       dialog --backtitle "$LWCORPHEADER" --title "$TITLECANCELADO" --msgbox "\nCONFIGURACAO CANCELADA.\n" 7 65; exit 1;;
esac

if [ $? -eq "0" ];then

    if [[ -z $NEW_LIMIT ]]; then
        echo "$LOGDATE - [O analista nao informou um novo limite de conexoes.. Abortando.]" >> $LOGFILE
        dialog --backtitle "$LWCORPHEADER" --title "$TITLEERRO" --msgbox "\nVOCE DEVE INFORMAR O NOVO LIMIT PARA PROSSEGUIR" 7 53
        exit 1
    else
        echo "$LOGDATE - [Informado novo limite de conexoes: '$NEW_LIMIT'. Aguardando confirmacao do analista para aplicar configuracao e reiniciar o Apache2]" >> $LOGFILE
       dialog --backtitle "$LWCORPHEADER" --title "$TITLECONFIRMACAO" --yesno "\nATENCAO:\n\nCOM ESSA MUDANCA VOCE ESTARA ALTERANDO O LIMITE DE CONEXOES DE '$CURR_MAXCLIENTS' para '$NEW_LIMIT'.\n\nOBSERVACAO: AO CONFIRMAR A ALTERACAO, O NOVO LIMITE SERA SETADO E O APACHE2 REINICIADO.\n\nCONFIRMA A ALTERACAO?" 13 98

        case $? in
            0) echo "$LOGDATE - [Informacao confirmada pelo analista. Iniciando configuracao]" >> $LOGFILE;;
            *) echo "$LOGDATE - [Processo cancelado pelo analista]" >> $LOGFILE;
               dialog --backtitle "$LWCORPHEADER" --title "$TITLEERRO" --msgbox "\nVOCE CANCELOU O PROCESSO" 7 53;
               exit 1;;
        esac
    fi

elif [ $? -eq "1" ]; then
    if [[ -z $NEW_LIMIT ]]; then
        echo "$LOGDATE - [O analista cancelou o processo.]" >> $LOGFILE
        dialog --backtitle "$LWCORPHEADER" --title "$TITLEERRO" --msgbox "\nVOCE CANCELOU O PROCESSO" 7 53
        exit 1
    fi
fi

#
# AQUI EH FEITA A ALTERACAO
#


sed -i '/    MaxClients/d' /etc/apache2/apache2.conf
sed -i '/    ServerLimit/d' /etc/apache2/apache2.conf
sed -i "/    MaxRequestsPerChild/{p;s/.*/    MaxClients            $NEW_LIMIT/}" /etc/apache2/apache2.conf
sed -i "/    MaxRequestsPerChild/{p;s/.*/    ServerLimit           $NEW_LIMIT/}" /etc/apache2/apache2.conf

case $? in
    0) echo "$LOGDATE - [Novo limite de conexoes aplicado. Reiniciando o Apache2...]" >> $LOGFILE ;;
    *) echo "$LOGDATE - [Erro: Alguma configuracao inconforme impediu a configuracao no Apache2]" >> $LOGFILE;
       dialog --backtitle "$LWCORPHEADER" --title "$TITLECANCELADO" --msgbox "\nOCORREU UM ERRO AO SETAR OS NOVOS LIMITES.\n" 7 65; exit 1;;
esac

#
# REINICIANDO O APACHE2:
#

echo -e "\033[1;32mParando o Apache2 educadamente...\033[0m"
/etc/init.d/apache2 stop; sleep 5;

if [ $(ps aux | grep apache2 | grep -v grep) ]; then
    echo -e "\033[1;32mMatando processos (rebeldes) que ficaram presos...\033[0m"
    kill -9 $(ps aux | grep apache2 | grep -v grep | awk '{print$2}')
fi

echo -e "\033[1;32mSubindo o Apache2 com os novos limites...\033[0m"
/etc/init.d/apache2 start

case $? in
    0) echo "$LOGDATE - [Apache2 reiniciado com sucesso]" >> $LOGFILE ;
       dialog --backtitle "$LWCORPHEADER" --title "$TITLESUCESSO" --msgbox "\nAPACHE2 REINICIADO E NOVOS LIMITES APLICADOS.\n" 7 50; exit 0;;
    *) echo "$LOGDATE - [Ocorreu um erro ao reiniciar o Apache2]" >> $LOGFILE;
       dialog --backtitle "$LWCORPHEADER" --title "$TITLECANCELADO" --msgbox "\nOCORREU UM ERRO AO REINICIAR O APACHE2.\n" 7 65; exit 1;;
esac