Ver código fonte

Instalación Web Server (Apache & Nginx)

Guzmán Castanedo Villalba 6 anos atrás
pai
commit
30ab244b1f
1 arquivos alterados com 135 adições e 36 exclusões
  1. 135 36
      install

+ 135 - 36
install

@@ -81,6 +81,15 @@ comprobarDependencias() {
 			printf "ERROR:\t'apt-get' no está disponible.\n"
 			exit 1
 		fi
+		#Actualizamos base de datos del repositorio
+		printf "Actualizando repositorio APT..."
+		result=$(apt-get -q -y update)
+		if [ $? -ne 0 ]; then
+			printf "\nERROR:\tImposible actualizar repositorio.\n"
+			printf "Detalles:\n$result\n"
+			exit 1
+		fi
+		printf " OK.\n"
 	fi
 	if [ $rhelOS = true ]; then
 		which yum > /dev/null 2>&1
@@ -88,6 +97,14 @@ comprobarDependencias() {
 			printf "ERROR:\t'yum' no está disponible.\n"
 			exit 1
 		fi
+		printf "Actualizando repositorio YUM..."
+		result=$(yum -y makecache 2>&1)
+		if [ $? -ne 0 ]; then
+			printf "\nERROR:\tImposible actualizar repositorio.\n"
+			printf "Detalles:\n$result\n"
+			exit 1
+		fi
+		printf " OK.\n"
 	fi
 }
 
@@ -103,6 +120,115 @@ mostrarBienvenida() {
 	fi
 }
 
+mostrarComponentes() {
+	componentes=$(whiptail --title "Instalación" --checklist "<ESPACIO>: seleccionar   <TAB>: cambiar   <FLECHAS>: moverse\n\nEscoge los componentes que quieres instalar:" 20 70 5 \
+	"WebServer" "Instalar servidor web http/https" ON \
+	"Database" "Instalar una base de datos SQL" ON \
+	"PHP" "Instala PHP7" ON \
+	"SSL/TLS" "Instala certificados para activar HTTPS" ON \
+	"MediaWiki" "Instala la última versión de MediaWiki" ON \
+	--ok-button "Continuar" --cancel-button "Salir" 3>&1 1>&2 2>&3)
+	if [ $? -ne 0 ]; then
+		printf "ERROR:\tInstalación interrumpida por el usuario.\n"
+		exit 2
+	fi
+	# Mejora: autodetección de componentes ya instalados
+	for i in $componentes; do
+		case $i in
+			\"WebServer\")
+				printf "Instalando Servidor Web"
+				instalarWebServer
+				printf " OK.\n"
+				;;
+			\"Database\")
+				printf "Instalando Servidor Database..."
+				printf " OK.\n"
+				;;
+			\"PHP\")
+				printf "Instalando PHP..."
+				printf " OK.\n"
+				;;
+			\"SSL/TLS\")
+				printf "Instalando SSL/TLS..."
+				printf " OK.\n"
+				;;
+			\"MediaWiki\")
+				printf "Instalando MediaWiki..."
+				printf " OK.\n"
+				;;
+			*)
+				printf "ERROR:\tError interno (selección de componentes).\n"
+				exit 1
+				;;
+		esac
+	done
+}
+
+instalarWebServer() {
+	webServer=$(whiptail --title "Servidor Web" --radiolist "" 20 70 2 \
+	"Apache" "Instalar el servidor web Apache2" ON \
+	"Nginx" "Instalar el servidor web Nginx" OFF \
+	--ok-button "Continuar" --cancel-button "Salir" 3>&1 1>&2 2>&3)
+	# Preguntar otras opciones de configuración
+	case $webServer in
+		Apache)
+			printf " Apache..."
+			instalarApache
+			;;
+		Nginx)
+			printf " Nginx..."
+			instalarNginx
+			;;
+		*)
+			printf "\nERROR:\tError interno (selección de web server).\n"
+			exit 1
+			;;
+	esac
+}
+
+instalarApache() {
+	if [ $debianOS = true ];then
+		result=$(apt-get -q -y install apache2 2>&1)
+		if [ $? -ne 0 ]; then
+			printf "\nERROR:\tError al instalar apache2.\n"
+			printf "Detalles:\n$result\n"
+			exit 1
+		fi
+	elif [ $rhelOS = true ]; then
+		result=$(yum -y install httpd 2>&1)
+		if [ $? -ne 0 ]; then
+			printf "\nERROR:\tError al instalar apache2.\n"
+			printf "Detalles:\n$result\n"
+			exit 1
+		fi
+	else
+		printf "\nERROR:\tError interno (instalación apache).\n"
+		exit 1
+	fi
+}
+
+instalarNginx() {
+	if [ $debianOS = true ];then
+		result=$(apt-get -q -y install nginx 2>&1)
+		if [ $? -ne 0 ]; then
+			printf "\nERROR:\tError al instalar apache2.\n"
+			printf "Detalles:\n$result\n"
+			exit 1
+		fi
+	elif [ $rhelOS = true ]; then
+		# Hay que instalar primero otro repositorio
+		result=$(yum -y install nginx 2>&1)
+		if [ $? -ne 0 ]; then
+			printf "\nERROR:\tError al instalar apache2.\n"
+			printf "Detalles:\n$result\n"
+			exit 1
+		fi
+	else
+		printf "\nERROR:\tError interno (instalación apache).\n"
+		exit 1
+	fi
+}
+
 # Comprobamos
 comprobarRoot
 OSInfo
@@ -110,48 +236,21 @@ comprobarDependencias
 
 # Bienvenida
 mostrarBienvenida
+# Mejora: instalación express vs instalación avanzada
 # Selección de componentes
-componentes=$(whiptail --title "Instalación" --checklist "<ESPACIO>: seleccionar   <TAB>: cambiar   <FLECHAS>: moverse\n\nEscoge los componentes que quieres instalar:" 20 70 5 \
-"WebServer" "Instalar servidor web http/https" ON \
-"Database" "Instalar una base de datos SQL" ON \
-"PHP" "Instala PHP7" ON \
-"SSL/TLS" "Instala certificados para activar HTTPS" ON \
-"MediaWiki" "Instala la última versión de MediaWiki" ON \
---ok-button "Continuar" --cancel-button "Salir" 3>&1 1>&2 2>&3)
-if [ $? -ne 0 ]; then
-	printf "ERROR:\tInstalación interrumpida por el usuario.\n"
-	exit 2
-fi
-#printf "$componentes\n"
-for i in $componentes; do
-	case $i in
-		\"WebServer\")
-			printf "Instalación WebServer\n"
-			;;
-		\"Database\")
-			printf "Instalación Database\n"
-			;;
-		\"PHP\")
-			printf "Instalación PHP\n"
-			;;
-		\"SSL/TLS\")
-			printf "Instalación SSL/TLS\n"
-			;;
-		\"MediaWiki\")
-			printf "Instalación MediaWiki\n"
-			;;
-		*)
-			printf "ERROR:\tError interno (selección de componentes).\n"
-			exit 1
-			;;
-	esac
-done
+mostrarComponentes
 
 # Autodestrucción
 {
-	for i in $(seq 0 5 100); do
+	for i in $(seq 0 5 50); do
 		sleep 0.1
 		echo $i
 	done
 } | whiptail --gauge "Autodestrucción..." 7 70 0
+{
+	for i in $(seq 50 5 100); do
+		sleep 0.1
+		echo $i
+	done
+} | whiptail --gauge "Autopulverización..." 7 70 50