Преглед на файлове

* Completar mostrarMoodle()
* Congifurar SELinux(): sólo para RHEL
* configurarMoodle(): instalación install.php

Guzmán Castanedo Villalba преди 5 години
родител
ревизия
f97b9a2682
променени са 1 файла, в които са добавени 67 реда и са изтрити 9 реда
  1. 67 9
      install

+ 67 - 9
install

@@ -159,6 +159,12 @@ comprobarError() {
 			type="WARNING"
 			error="\n$type $codeNum:\tYa existe una copia configurada de Moodle en el dominio: '$extraInfo'."
 			;;
+		604)
+			error="\n$type $codeNum:\tImposible configurar SELinux.\n"
+			;;
+		605)
+			error="\n$type $codeNum:\tImposible instalar 'policycoreutils-python'.Detalles:\n$extraInfo\n"
+			;;
 		800)
 			error="$type $codeNum:\tEs necesario ser root ('sudo $0').\n"
 			;;
@@ -484,8 +490,11 @@ inicializarVariables() {
 	phpFPMName=""
 	nombreMediaWiki=""
 	dominioMediaWiki=""
+	passwdMediaWiki=""
 	nombreMoodle=""
+	nombreCortoMoodle=""
 	dominioMoodle=""
+	passwdMoodle=""
 }
 
 instalacionExpress() {
@@ -637,13 +646,11 @@ mostrarMediaWiki(){
 	while [ -z "$nombreMediaWiki" ]; do
 		nombreMediaWiki=$(whiptail --title "CONFIGURACION MEDIAWIKI" --inputbox "Introduzca el nombre de la Wiki:" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) --ok-button "Continuar" --cancel-button "Salir" 3>&1 1>&2 2>&3)
 		comprobarError $? 1
-		# Mejora: comprobar si el dominio ya está en uso
 	done
 	# Introducir dominio
 	while [ -z "$dominioMediaWiki" ]; do
 		dominioMediaWiki=$(whiptail --title "CONFIGURACION MEDIAWIKI" --inputbox "Introduzca el dominio/subdominio de la Wiki.\nTenga en cuenta que debes apuntar este dominio a la dirección IP de esta máquina mediante un registro DNS de tipo CNAME.\nSi quiere introducir varios dominios sepárelos con espacios. El primero será el principal.\nPor ejemplo: 'www.$hostname $hostname wiki.$hostname'" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) wiki.$hostname --ok-button "Continuar" --cancel-button "Salir" 3>&1 1>&2 2>&3)
 		comprobarError $? 1
-		# Mejora: comprobar si el dominio ya está en uso
 	done
 	cont=1
 	serverName=""
@@ -665,7 +672,7 @@ mostrarMediaWiki(){
 	while [ $control = false ]; do
 		passwdMediaWiki=$(whiptail --title "CONFIGURACION MEDIAWIKI" --passwordbox "$error""Introduzca la contraseña para el usuario administrador 'admin':" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) --ok-button "Continuar" --nocancel 3>&1 1>&2 2>&3)
 		comprobarError $? 1
-		passwdMediaWiki2=$(whiptail --title "CONTRASEÑA SQL" --passwordbox "Confirme la contraseña:" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) --ok-button "Continuar" --nocancel 3>&1 1>&2 2>&3)
+		passwdMediaWiki2=$(whiptail --title "CONFIGURACION MEDIAWIKI" --passwordbox "Confirme la contraseña:" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) --ok-button "Continuar" --nocancel 3>&1 1>&2 2>&3)
 		comprobarError $? 1
 		if [ -z "$passwdMediaWiki" ] || [ -z "$passwdMediaWiki2" ]; then
 			error="ERROR: LA CONTRASEÑA NO PUEDE ESTAR VACIA.\n"
@@ -679,17 +686,20 @@ mostrarMediaWiki(){
 }
 
 mostrarMoodle() {
-	# Introducir nombre Moodle
+	# Introducir Nombre Moodle
 	while [ -z "$nombreMoodle" ]; do
-		nombreMoodle=$(whiptail --title "CONFIGURACION MOODLE" --inputbox "Introduzca el nombre del campus virtual:" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) --ok-button "Continuar" --cancel-button "Salir" 3>&1 1>&2 2>&3)
+		nombreMoodle=$(whiptail --title "CONFIGURACION MOODLE" --inputbox "Introduzca el NOMBRE COMPLETO del campus virtual.\nPor ejemplo: 'Campus Virtual Ejemplo:" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) --ok-button "Continuar" --cancel-button "Salir" 3>&1 1>&2 2>&3)
+		comprobarError $? 1
+	done
+	# Introducir Nombre Corto Moodle
+	while [ -z "$nombreCortoMoodle" ]; do
+		nombreCortoMoodle=$(whiptail --title "CONFIGURACION MOODLE" --inputbox "Introduzca el NOMBRE CORTO del campus virtual.\nPor ejemplo: 'Ejemplo':" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) --ok-button "Continuar" --cancel-button "Salir" 3>&1 1>&2 2>&3)
 		comprobarError $? 1
-		# Mejora: comprobar si el dominio ya está en uso
 	done
 	# Introducir dominio
 	while [ -z "$dominioMoodle" ]; do
 		dominioMoodle=$(whiptail --title "CONFIGURACION MOODLE" --inputbox "Introduzca el dominio/subdominio del campus virtual.\nMoodle SÓLO permite un ÚNICO DOMINIO." $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) moodle.$hostname --ok-button "Continuar" --cancel-button "Salir" 3>&1 1>&2 2>&3)
 		comprobarError $? 1
-		# Mejora: comprobar si el dominio ya está en uso
 	done
 	cont=1
 	serverName=""
@@ -705,7 +715,23 @@ mostrarMoodle() {
 		cont=$((cont + 1))
 	done
 	dominioMoodle=$serverName
-	unset dominio cont serverName aliasMoodle
+	# Introducir contraseña
+	control=false
+	error=""
+	while [ $control = false ]; do
+		passwdMoodle=$(whiptail --title "CONFIGURACION MOODLE" --passwordbox "$error""Introduzca la contraseña para el usuario administrador 'admin':" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) --ok-button "Continuar" --nocancel 3>&1 1>&2 2>&3)
+		comprobarError $? 1
+		passwdMoodle2=$(whiptail --title "CONFIGURACION MOODLE" --passwordbox "Confirme la contraseña:" $((ALTO * 9 / 10)) $((ANCHO * 9 / 10)) --ok-button "Continuar" --nocancel 3>&1 1>&2 2>&3)
+		comprobarError $? 1
+		if [ -z "$passwdMoodle" ] || [ -z "$passwdMoodle2" ]; then
+			error="ERROR: LA CONTRASEÑA NO PUEDE ESTAR VACIA.\n"
+		elif [ $passwdMoodle != $passwdMoodle2 ];then
+			error="ERROR: LAS CONTRASEÑAS NO COINCIDEN.\n"
+		else
+			control=true
+		fi
+	done
+	unset control error passwdMoodle2 dominio cont serverName aliasMoodle
 }
 
 establecerFQDN() {
@@ -1440,6 +1466,25 @@ configurarMoodle() {
 		nombreDBMo=$(echo $dominioMoodle | sed -e 's/\./_/g')
 		userDBMo=$(echo $dominioMoodle | sed -e 's/\./_/g')
 		crearDBMoodle
+		# Configurar SE-Linux (RHEL)
+		if [ $rhelOS = true ];then
+			configurarSELinux
+		fi
+		# Configuramos e instalamos Moodle
+		if [ $sslOn = true ];then
+			wwwroot="https://$dominioMoodle"
+		else
+			wwwroot="http://$dominioMoodle"
+		fi
+		if [ $mySQLOn = true ];then
+			dbtype="mysqli"
+		elif [ $mariaDBOn = true ];then
+			dbtype="mariadb"
+		else
+			comprobarError 1 602
+		fi
+		sudo -u $webServerUser php admin/cli/install.php --lang=es --wwwroot="$dominioMoodle" --dbtype="$dbtype" --dbname="$nombreDBMo" --dbuser="$userDBMo" --dbpass="$sqlPasswd" --fullname="$nombreMoodle" --shortname=$nombreCortoMoodle --adminuser=admin --adminpass=$passwdMoodle --adminemail="admin@$dominioMoodle" --agree-license --non-interactive >>$logFile 2>&1
+		comprobarError $? 602
 		# Actualizamos permisos
 		chown -R $webServerUser:$webServerGroup /var/www/$dominioMoodle /var/www/moodledata
 		# Configuramos VirtualHost
@@ -1455,7 +1500,7 @@ configurarMoodle() {
 			comprobarError 1 602
 		fi
 		instalarVirtualHost "/var/www/$dominioMoodle" $virtualHost $dominioMoodle
-		unset virtualHost
+		unset virtualHost wwwroot dbtype
 	else
 		comprobarError 1 603 $dominioMoodle
 	fi
@@ -1479,6 +1524,19 @@ crearDBMoodle() {
 	unset control dbFile dbDir
 }
 
+configurarSELinux() {
+	# Configura SELinux (Sólo para RHEL)
+	which semanage >/dev/null 2>&1
+	if [ $? -ne 0 ];then
+		result=$(yum -y install policycoreutils-python 2>&1)
+		comprobarError $? 605 $result
+	fi
+	semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/moodledata(/.*)?"
+	comprobarError $? 604
+	restorecon -R /var/www/
+	comprobarError $? 604
+}
+
 # Comprobación del sistema e inicialización
 inicializarVariables
 comprobarRoot