From 91951092e9b8f5270564024b3f8809fe2bca7a8c Mon Sep 17 00:00:00 2001 From: carlostellocba Date: Fri, 4 Sep 2026 15:49:59 -0300 Subject: [PATCH] Add deploy-moodle.sh --- deploy-moodle.sh | 126 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 deploy-moodle.sh diff --git a/deploy-moodle.sh b/deploy-moodle.sh new file mode 100644 index 0000000..e7e7873 --- /dev/null +++ b/deploy-moodle.sh @@ -0,0 +1,126 @@ +#!/usr/bin/env bash +set -euo pipefail +set +H # Desactiva la expansión de historial de Bash (!) para evitar fallos con contraseñas + +# ========================================== +# PARÁMETROS CONFIGURABLES +# ========================================== +DB_NAME="moodle" +DB_USER="moodleuser" +DB_PASS='MoodlePass2026!Segura' +MOODLE_WWW="/var/www/html/moodle" +MOODLE_DATA="/var/moodledata" +MOODLE_VERSION="v4.1.2" +PHP_VER="8.1" + +ADMIN_USER="admin" +ADMIN_PASS='AdminPass2026!Segura' +ADMIN_EMAIL="admin@institucion.edu.ar" + +# Detectar IP primaria del LXC +IP_ADDR=$(hostname -I | awk '{print $1}') +MOODLE_URL="http://${IP_ADDR}/moodle" + +echo "=== [1/6] Actualizando sistema y paquetes base ===" +apt update && apt upgrade -y +apt install -y curl git unzip wget lsb-release ca-certificates apt-transport-https locales sudo + +# Configurar locales UTF-8 +sed -i 's/# es_AR.UTF-8 UTF-8/es_AR.UTF-8 UTF-8/' /etc/locale.gen || true +sed -i 's/# es_ES.UTF-8 UTF-8/es_ES.UTF-8 UTF-8/' /etc/locale.gen || true +sed -i 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen || true +locale-gen +update-locale LANG=es_AR.UTF-8 + +echo "=== [2/6] Configurando repositorio DEB.SURY.ORG (PHP ${PHP_VER}) ===" +curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg +echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list +apt update + +echo "=== [3/6] Instalando Apache, MariaDB y módulos PHP ${PHP_VER} ===" +apt install -y apache2 mariadb-server \ + php${PHP_VER} libapache2-mod-php${PHP_VER} php${PHP_VER}-common \ + php${PHP_VER}-mysql php${PHP_VER}-gd php${PHP_VER}-curl \ + php${PHP_VER}-xml php${PHP_VER}-zip php${PHP_VER}-intl \ + php${PHP_VER}-mbstring php${PHP_VER}-soap php${PHP_VER}-xmlrpc \ + php${PHP_VER}-opcache php${PHP_VER}-cli + +echo "=== [4/6] Optimizando directivas de PHP y OPcache ===" +for ini in "/etc/php/${PHP_VER}/apache2/php.ini" "/etc/php/${PHP_VER}/cli/php.ini"; do + sed -i "s/^memory_limit = .*/memory_limit = 512M/" "$ini" + sed -i "s/^upload_max_filesize = .*/upload_max_filesize = 128M/" "$ini" + sed -i "s/^post_max_size = .*/post_max_size = 128M/" "$ini" + sed -i "s/^max_execution_time = .*/max_execution_time = 300/" "$ini" + sed -i 's/^;[[:space:]]*max_input_vars = .*/max_input_vars = 5000/' "$ini" + grep -q "^max_input_vars" "$ini" || echo "max_input_vars = 5000" >> "$ini" + # Directivas OPcache + sed -i "s/^;opcache.enable=1/opcache.enable=1/" "$ini" + sed -i "s/^;opcache.memory_consumption=.*/opcache.memory_consumption=128/" "$ini" + sed -i "s/^;opcache.max_accelerated_files=.*/opcache.max_accelerated_files=10000/" "$ini" + sed -i "s/^;opcache.revalidate_freq=.*/opcache.revalidate_freq=60/" "$ini" +done + +echo "=== [5/6] Configurando MariaDB (InnoDB & utf8mb4) ===" +cat < /etc/mysql/mariadb.conf.d/99-moodle.cnf +[mysqld] +default_storage_engine = InnoDB +innodb_file_per_table = 1 +character-set-server = utf8mb4 +collation-server = utf8mb4_unicode_ci +skip-character-set-client-handshake +EOF + +systemctl restart mariadb +systemctl enable --now mariadb apache2 + +mariadb -u root < /etc/cron.d/moodle +* * * * * www-data /usr/bin/php${PHP_VER} ${MOODLE_WWW}/admin/cli/cron.php >/dev/null 2>&1 +EOF + +systemctl restart apache2 + +echo "---------------------------------------------------------" +echo " Despliegue completado con éxito en Debian 12" +echo " URL: ${MOODLE_URL}" +echo " Usuario: ${ADMIN_USER}" +echo " Password: ${ADMIN_PASS}" +echo "---------------------------------------------------------" \ No newline at end of file