Installing web environment with shell script

1

The shell script below performs some simple tasks for me, however, I would like to make the code a bit more elegant:

#!/bin/bash

echo "#######################"
echo "Preparando servidor web"
echo "#######################"

verificar() {
    if [ $1 = 0 ]; then
            echo -e "3[32m-> Sucesso3[0m";
    else
            echo -e "3[31m-> Erro3[0m";
    fi
}

echo "Configurando idioma pt_BR"
localedef -c -i pt_BR -f UTF-8 pt_BR.UTF-8 > /dev/null
verificar $?

export LANG=pt_BR.UTF-8

echo "Alterando timezone para America/Sao_Paulo"
timedatectl set-timezone America/Sao_Paulo  > /dev/null
verificar $?

echo "Atualizando lista de pacotes"
apt-get update > /dev/null
verificar $?

echo "Instalando NGINX"
apt-get install nginx -y > /dev/null
verificar $?

echo "Definindo www-data como owner do diretório /var/www"
chown -R www-data:www-data /var/www
verificar $?

echo "Instalando banco de dados MySQL"
apt-get install mysql-server -y > /dev/null
verificar $?

echo "Instalando PHP e modulos essencias"
apt-get install php-fpm php-mysql php-curl php-json php-mcrypt php-mbstring php-xml php-imagick -y > /dev/null
verificar $?

echo "Ajustando configuração de segurança do PHP-FPM"
sed -i -e 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' /etc/php/7.0/fpm/php.ini
verificar $?

echo "Reiniciando NGINX"
service nginx restart > /dev/null
verificar $?

echo "Reiniciando PHP-FPM"
service php7.0-fpm restart > /dev/null
verificar $?

echo "Instalando o GIT"
apt-get install git -y > /dev/null
verificar $?

echo "Instalando UNZIP"
apt-get install unzip -y > /dev/null
verificar $?

echo "Ajustando configurações essenciais do MySQL"
sleep 3
SENHA=1QAZxsw2 && echo -e "\n\n$SENHA\n$SENHA\n\nn\n\n" | mysql_secure_installation

Tips, recommendations and guidelines?

    
asked by anonymous 01.08.2017 / 06:46

1 answer

2

I would make a frufru + or - so, sorry if you have any mistakes, but I made the race here. But from what I understand, you can take advantage of the idea

#!/bin/bash
# Nome do script
name="meu_script"
# Diretório de log do mesmo
log_dir="/var/log/$name"
# Arquivo de log
log_file="/$log_dir/$name.log"
# Arquivo de log das instalações
log_install="/$log_dir/$name.apt"
# Pacotes que seram instalados
pkg_install="nginx mysql-server php-fpm php-mysql php-curl php-json php-mcrypt php-mbstring php-xml php-imagick git unzip"
# Nível de log 0="não gera log" 1="gera aquivo de log" 2="gera arquivo de log e saida no terminal" 3="debug"
registra=0
# Cria diretório de log caso não exista
if [[ ! -d $log_dir ]]; then
    mkdir $log_dir
fi
# Debug
if [[ $registra -eq 3 ]]; then
    set -x
fi
# Função de log
Log_apt() {
    if [[ $registra -eq 1 ]]; then
        echo -e "'date "+%h %d %H:%M:%S"' $HOSTNAME $name $1" >> $log_install
    elif [[ $registra -eq 2 ]]; then
        echo -e "'date "+%h %d %H:%M:%S"' $HOSTNAME $name $1" >> $log_install
        echo -e "'date "+%h %d %H:%M:%S"' $HOSTNAME $name $1"
    fi
}
Log() {
    if [[ $registra -eq 1 ]]; then
        echo -e "'date "+%h %d %H:%M:%S"' $HOSTNAME $name $1" >> $log_install
    elif [[ $registra -eq 2 ]]; then
        echo -e "'date "+%h %d %H:%M:%S"' $HOSTNAME $name $1" >> $log_install
        echo -e "'date "+%h %d %H:%M:%S"' $HOSTNAME $name $1"
    fi
}
# Cores
# Verde
c1() {
    echo -e "\e[32;1m$1\e[m"
}
# Vermelho
c2() {
    echo -e "\e[31;1m$1\e[m"
}
# Amarelo
c3() {
    echo -e "\e[33;1m$1\e[m"
}
# Azul claro
c4() {
    echo -e "\e[36;1m$1\e[m"
}
# Linha em branco
l1() {
    echo -e " " >> $LogFile
}
# Loga
Log "'c3 "praparando o servidor web..."'"
Log "'c3 "Configurando idioma pt_BR"'"
# Função que será executada
cmd=$(localedef -c -i pt_BR -f UTF-8 pt_BR.UTF-8 2>&1)
# Caso a função acima de algum erro, registra o erro que ocorreu no arquivo de log
# sem erro registra sucesso
if [[ $? -ne 0 ]]; then
    Log "'c2 "error"' $cmd"
else
    Log "'c1 "sucesso"'"
fi

export LANG=pt_BR.UTF-8
# Loga
Log "'c3 "Alterando timezone para America/Sao_Paulo"'"
# Função que será executada
cmd=$(timedatectl set-timezone America/Sao_Paulo)
# Caso a função acima de algum erro, registra o erro que ocorreu no arquivo de log
# sem erro registra sucesso
if [[ $? -ne 0 ]]; then
    Log "'c2 "error"' $cmd"
else
    Log "'c1 "sucesso"'"
fi
# Esse for irá instalar todos os pacotes definido na variável $pkg_install
for i in $pkg_install; do
    # Registra no arquivo de log de instalação
    Log_apt "'c3 "apt-get install"' 'c4 "$i"'"
    # Loga
    Log "'c3 "apt-get install"' 'c4 "$i"'"
    # Instala o pacote $i
    apt-get install -y $i >> $log_install 2>&1
    # Loga se a instalação foi bem ou mal sucedida
    if [[ $? -ne 0 ]]; then
        Log "'c1 "apt-get install"' sucesso ao instalar 'c1 "$i"'"
    else
        Log "'c2 "apt-get install"' falha ao instalar 'c2 "$i"'"
    fi
done
# Loga
Log "'c3 "chown"' definindo www-data como owner do diretório /var/www"
# Função que será executada
cmd=$(chown -R www-data:www-data /var/www 2>&1)
# Caso a função acima de algum erro, registra o erro que ocorreu no arquivo de log
# sem erro registra sucesso
if [[ $? -ne 0 ]]; then
    Log "'c2 "error"' $cmd"
else
    Log "'c1 "sucesso"'"
fi
# Loga
Log "'c3 "reiniciando NGINX"'"
# Função que será executada
cmd=$(service nginx restart 2>&1)
# Caso a função acima de algum erro, registra o erro que ocorreu no arquivo de log
# sem erro registra sucesso
if [[ $? -ne 0 ]]; then
    Log "'c2 "error"' $cmd"
else
    Log "'c1 "sucesso"'"
fi
# Loga
Log "'c3 "reiniciando PHP-FPM"'"
# Função que será executada
cmd=$(service php7.0-fpm restart 2>&1)
# Caso a função acima de algum erro, registra o erro que ocorreu no arquivo de log
# sem erro registra sucesso
if [[ $? -ne 0 ]]; then
    Log "'c2 "error"' $cmd"
else
    Log "'c1 "sucesso"'"
fi
# Loga
Log "'c3 "reiniciando PHP-FPM"'"
# Caso a função acima de algum erro, registra o erro que ocorreu no arquivo de log
# sem erro registra sucesso
cmd=$(service php7.0-fpm restart 2>&1)
if [[ $? -ne 0 ]]; then
    Log "'c2 "error"' $cmd"
else
    Log "'c1 "sucesso"'"
fi
# Loga
Log "'c3 "Ajustando configurações essenciais do MySQL"'"
# Espera
sleep 3
SENHA=1QAZxsw2 && echo -e "\n\n$SENHA\n$SENHA\n\nn\n\n" | mysql_secure_installation
    
06.10.2017 / 20:23