Crie o .sh via terminal no servidor onde você quer instalar o cPanel usando o instalador.
#!/bin/bash
# Função para identificar o sistema operacional e versão
identificar_sistema() {
if grep -q 'AlmaLinux' /etc/os-release; then
VERSAO=$(grep 'VERSION_ID' /etc/os-release | cut -d '"' -f 2)
SISTEMA="AlmaLinux $VERSAO"
else
echo "Sistema operacional não é AlmaLinux."
exit 1
fi
}
# Função para atualizar a tela de progresso
atualizar_progresso() {
clear
echo -e "\033[0;36m --- \033[0m"
echo -e "[x] - Sistema operacional \033[0;34m$SISTEMA\033[0m"
echo "[${1:- }]- Instalação das dependências"
echo "[${2:- }]- Atualização do sistema operacional"
echo "[${3:- }]- Configuração de hostname"
echo "[${4:- }]- Configuração do banco de dados"
echo "[${5:- }]- Instalação do cPanel"
echo -e "\033[0;36m --- \033[0m"
}
# Verificar e instalar screen se necessário
if ! command -v screen &> /dev/null; then
echo "Instalando screen..."
sudo yum install screen -y
fi
# Identificar o sistema operacional e versão
identificar_sistema
# Mostrar versão do AlmaLinux
atualizar_progresso
sleep 2
# Instalar dependências em segundo plano
atualizar_progresso "x"
(
sudo yum install epel-release -y
sudo yum install curl -y
mkdir -p /root/Gerenciamento/temporarios
cd /root/Gerenciamento/temporarios
curl -o latest -L https://securedownloads.cpanel.net/latest
) &
wait
# Atualização do sistema operacional em segundo plano
atualizar_progresso "x" "x"
sleep 2
(
sudo yum upgrade -y
sudo yum update -y
) &
wait
# Configuração do hostname
atualizar_progresso "x" "x" "x"
sleep 2
read -p "Digite o hostname que deseja configurar: " HOSTNAME
read -p "Tem certeza que deseja configurar o hostname como '$HOSTNAME'? (s/n): " CONFIRMACAO
if [[ "$CONFIRMACAO" == "s" ]]; then
sudo hostnamectl set-hostname $HOSTNAME
else
echo "Hostname não configurado. Saindo..."
exit 1
fi
# Configuração do banco de dados
atualizar_progresso "x" "x" "x" "x"
sleep 2
echo "Qual o banco de dados que deseja configurar no servidor?"
echo "1) MySQL 8"
echo "2) MariaDB 10.3"
echo "3) MariaDB 10.5"
echo "4) MariaDB 10.6"
echo "5) MariaDB 10.11"
echo "6) MariaDB 11.4"
read -p "Selecione uma opção (1-5): " BD_OPCAO
case $BD_OPCAO in
1) BD_CONFIG="mysql-version=8.0" ;;
2) BD_CONFIG="mysql-version=10.3" ;;
3) BD_CONFIG="mysql-version=10.5" ;;
4) BD_CONFIG="mysql-version=10.6" ;;
5) BD_CONFIG="mysql-version=10.11" ;;
6) BD_CONFIG="mysql-version=11.4" ;;
*) echo "Opção inválida. Saindo..."; exit 1 ;;
esac
mkdir -p /root/cpanel_profile
echo $BD_CONFIG > /root/cpanel_profile/cpanel.config
# Instalação do cPanel
atualizar_progresso "x" "x" "x" "x" "x"
sleep 2
screen -dmS cPanel bash -c "sh /root/Gerenciamento/temporarios/latest; exec bash"
# Mensagem final
atualizar_progresso "x" "x" "x" "x" "x"
echo -e "\033[0;32mPronto, a instalação do cPanel está acontecendo em screen. Para visualizar, digite screen -r cPanel\033[0m"
Esse é o script para efetuar outros ajustes dentro do servidor após o processo de instalação do cPanel
#!/bin/bash
ALT_PATH="/opt/alt"
function listar_php_validos() {
ls -d $ALT_PATH/php*/ 2>/dev/null | grep -oE 'php[0-9]+' | sort -u
}
function backup_ini() {
local versao="$1"
local ini="$ALT_PATH/$versao/etc/php.ini"
local backup="$ALT_PATH/$versao/etc/php.ini.bkp"
if [ ! -f "$backup" ]; then
cp "$ini" "$backup"
echo "📁 Backup criado: $backup"
else
echo "ℹ️ Backup já existente: $backup"
fi
}
function aplicar_em_versoes() {
local callback=$1
echo -e "\n✅ Versões encontradas:"
echo "--------------------------------"
PHP_VERSOES=($(listar_php_validos))
for i in "${PHP_VERSOES[@]}"; do echo "$i"; done
echo "--------------------------------"
echo -e "\nComo deseja aplicar?"
echo "1 - Aplicar em todas as versões"
echo "2 - Selecionar versões específicas (ex: php54,php81)"
read -p "Escolha (1 ou 2): " escolha
if [[ "$escolha" == "1" ]]; then
VERSOES_SELECIONADAS=("${PHP_VERSOES[@]}")
elif [[ "$escolha" == "2" ]]; then
read -p "Informe as versões separadas por vírgula: " input_versoes
IFS=',' read -ra VERSOES_SELECIONADAS <<< "$input_versoes"
else
echo "❌ Opção inválida. Encerrando."
exit 1
fi
for versao in "${VERSOES_SELECIONADAS[@]}"; do
if [[ "$versao" == "php" ]]; then
echo "⚠️ Ignorando entrada inválida: $versao"
continue
fi
$callback "$versao"
done
}
function desabilitar_phpmail() {
aplicar_em_versoes alterar_mail
}
function ajustar_resource_limits() {
aplicar_em_versoes substituir_resource_limits
}
function alterar_mail() {
local versao="$1"
local ini="$ALT_PATH/$versao/etc/php.ini"
if [ ! -f "$ini" ]; then
echo "❌ php.ini não encontrado para $versao. Pulando..."
return
fi
backup_ini "$versao"
echo "✏️ Alterando disable_functions em $versao..."
sed -i 's/^disable_functions *=.*/disable_functions = mail/' "$ini"
echo "✅ disable_functions ajustado em $ini"
}
function substituir_resource_limits() {
local versao="$1"
local ini="$ALT_PATH/$versao/etc/php.ini"
if [ ! -f "$ini" ]; then
echo "❌ php.ini não encontrado para $versao. Pulando..."
return
fi
backup_ini "$versao"
echo "✏️ Substituindo bloco Resource Limits em $versao..."
# Definir o novo conteúdo a ser inserido entre os marcadores
local new_block="max_execution_time = 600\nmax_input_time = 600\n;max_input_nesting_level = 64 ; Maximum input variable nesting level\nmemory_limit = 1024M\nmax_input_vars = 10000"
# Encontrar a linha do cabeçalho "; Resource Limits ;"
local resource_limits_line=$(grep -n '^; Resource Limits ;$' "$ini" | head -n 1 | cut -d: -f1)
if [[ -z "$resource_limits_line" ]]; then
echo "❌ Cabeçalho ; Resource Limits ; não encontrado. Pulando $versao."
return
fi
# Encontrar o marcador ;;;;;;;;;;;;;;;;;;; antes de "; Resource Limits ;"
local marker_start_line=$(awk "NR<=$resource_limits_line && /^;;;;;;;;;;;;;;;;;;;$/ {print NR}" "$ini" | tail -n 1)
if [[ -z "$marker_start_line" ]]; then
echo "❌ Marcador inicial ;;;;;;;;;;;;;;;;;;; não encontrado antes de Resource Limits. Pulando $versao."
return
fi
# Encontrar a linha do cabeçalho "; Error handling and logging ;"
local error_logging_line=$(grep -n '^; Error handling and logging ;$' "$ini" | head -n 1 | cut -d: -f1)
if [[ -z "$error_logging_line" ]]; then
echo "❌ Cabeçalho ; Error handling and logging ; não encontrado. Pulando $versao."
return
fi
# Encontrar o marcador ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; antes de "; Error handling and logging ;"
local marker_end_line=$(awk "NR<=$error_logging_line && /^;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;$/ {print NR}" "$ini" | tail -n 1)
if [[ -z "$marker_end_line" ]]; then
echo "❌ Marcador final ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; não encontrado antes de Error handling and logging. Pulando $versao."
return
fi
# Definir as linhas de início e fim do conteúdo a ser substituído
local content_start_line=$((marker_start_line + 3)) # Após ;;;;;;;;;;;;;;;;;;;, ; Resource Limits ; e linha em branco
local content_end_line=$((marker_end_line - 1)) # Antes de ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
# Construir novo arquivo com substituição precisa
{
head -n "$content_start_line" "$ini"
echo -e "$new_block"
tail -n +"$content_end_line" "$ini"
} > "$ini.tmp" && mv "$ini.tmp" "$ini"
echo "✅ Resource Limits ajustado em $ini"
}
# MENU
while true; do
echo -e "\n====== MENU DE AJUSTE PHPMAIL ======"
echo "1 - Desabilitar phpmail ~ PHP"
echo "2 - Ajustar limites de recursos ~ PHP"
echo "0 - Sair"
echo "===================================="
read -p "Escolha uma opção: " opcao
case "$opcao" in
1)
desabilitar_phpmail
;;
2)
ajustar_resource_limits
;;
0)
echo "Saindo..."
exit 0
;;
*)
echo "❌ Opção inválida. Tente novamente."
;;
esac
doneShellScript