Last active
March 13, 2025 21:38
-
-
Save ronitzdev/a11a4edc469d04fd3bb35543be27c8df to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # Función para verificar si un paquete está instalado | |
| check_and_install() { | |
| if ! command -v "$1" &> /dev/null; then | |
| echo "$1 no está instalado. Instalando..." | |
| sudo apt-get install "$1" -y | |
| else | |
| echo "$1 ya está instalado. Se salta la instalación." | |
| fi | |
| } | |
| # Función para verificar si Zsh es la shell predeterminada | |
| check_shell() { | |
| current_shell=$(grep "$USER" /etc/passwd | cut -d: -f7) | |
| if [ "$current_shell" != "/bin/zsh" ]; then | |
| echo "La shell no es Zsh. Cambiando la shell por defecto a Zsh..." | |
| chsh --shell /bin/zsh "$USER" | |
| else | |
| echo "La shell ya es Zsh." | |
| fi | |
| } | |
| # Verificar si Git está instalado | |
| check_and_install git-all | |
| # Verificar la versión de Git | |
| echo "Verificando la versión de Git..." | |
| git version | |
| # Configurar Git si no está configurado | |
| if ! git config --global user.name &> /dev/null; then | |
| echo "Configurando Git..." | |
| read -p "Ingrese su nombre de usuario de Git: " git_user | |
| read -p "Ingrese su correo electrónico de Git: " git_email | |
| git config --global user.name "$git_user" | |
| git config --global user.email "$git_email" | |
| git config --global color.ui auto | |
| git config --global pull.rebase false | |
| git config --global init.defaultBranch main | |
| git config --global core.editor "code --wait" | |
| else | |
| echo "Git ya está configurado." | |
| fi | |
| # Generar clave SSH si no existe | |
| if [ ! -f ~/.ssh/id_ed25519 ]; then | |
| echo "Generando clave SSH..." | |
| read -p "Ingrese su correo electrónico para la clave SSH: " git_email | |
| ssh-keygen -t ed25519 -C "$git_email" -f ~/.ssh/id_ed25519 | |
| else | |
| echo "Clave SSH ya existe." | |
| fi | |
| # Iniciar el agente SSH si no está corriendo | |
| if ! pgrep -x "ssh-agent" > /dev/null; then | |
| echo "Iniciando el agente SSH..." | |
| eval "$(ssh-agent -s)" | |
| else | |
| echo "El agente SSH ya está en ejecución." | |
| fi | |
| # Añadir la clave SSH al agente | |
| if ! ssh-add -l | grep -q "id_ed25519"; then | |
| echo "Añadiendo la clave SSH al agente..." | |
| ssh-add ~/.ssh/id_ed25519 | |
| else | |
| echo "La clave SSH ya está añadida al agente." | |
| fi | |
| # Verificar e instalar Node.js y NVM | |
| check_and_install curl | |
| if ! command -v nvm &> /dev/null; then | |
| echo "Instalando NVM..." | |
| curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | zsh | |
| source ~/.zshrc | |
| else | |
| echo "NVM ya está instalado." | |
| fi | |
| if ! command -v node &> /dev/null; then | |
| echo "Instalando Node.js LTS..." | |
| nvm install --lts | |
| else | |
| echo "Node.js ya está instalado." | |
| fi | |
| # Verificar la versión de Node.js y npm | |
| echo "Versión de Node.js:" | |
| node --version | |
| echo "Versión de npm:" | |
| npm --version | |
| # Verificar si Apache está instalado | |
| check_and_install apache2 | |
| # Verificar si MySQL está instalado | |
| check_and_install mysql-server | |
| # Iniciar Apache y MySQL si no están en ejecución | |
| if ! systemctl is-active --quiet apache2; then | |
| echo "Iniciando Apache..." | |
| sudo systemctl start apache2 | |
| else | |
| echo "Apache ya está en ejecución." | |
| fi | |
| if ! systemctl is-active --quiet mysql; then | |
| echo "Iniciando MySQL..." | |
| sudo systemctl start mysql | |
| else | |
| echo "MySQL ya está en ejecución." | |
| fi | |
| # Habilitar Apache y MySQL para que inicien al arranque | |
| echo "Habilitando Apache al inicio..." | |
| sudo systemctl enable apache2 | |
| echo "Habilitando MySQL al inicio..." | |
| sudo systemctl enable mysql | |
| # Instalar Zsh si no está instalado | |
| check_and_install zsh | |
| # Instalar Oh My Zsh si no está instalado | |
| if [ ! -d "$HOME/.oh-my-zsh" ]; then | |
| echo "Instalando Oh My Zsh..." | |
| sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" | |
| else | |
| echo "Oh My Zsh ya está instalado." | |
| fi | |
| # Comprobar si la shell por defecto es Zsh | |
| check_shell | |
| # Verificar estado de Apache y MySQL | |
| echo "Estado de Apache:" | |
| sudo systemctl status apache2 | grep "Active" | |
| echo "Estado de MySQL:" | |
| sudo systemctl status mysql | grep "Active" | |
| # **Instalación de XAMPP desde la terminal:** | |
| # Definir la versión de XAMPP (reemplázalo si es necesario) | |
| XAMPP_VERSION="7.4.28-0" | |
| XAMPP_FILE="xampp-linux-x64-${XAMPP_VERSION}.run" | |
| # Descargar XAMPP | |
| echo "Descargando XAMPP ${XAMPP_VERSION}..." | |
| wget "https://downloadsapachefriends.global.ssl.fastly.net/xampp/${XAMPP_FILE}" -P /tmp | |
| # Comprobar si la descarga fue exitosa | |
| if [ $? -ne 0 ]; then | |
| echo "Hubo un error al descargar el archivo XAMPP. Verifica tu conexión a internet y vuelve a intentarlo." | |
| exit 1 | |
| fi | |
| # Dar permisos de ejecución al archivo descargado | |
| echo "Dando permisos de ejecución al archivo descargado..." | |
| chmod +x /tmp/${XAMPP_FILE} | |
| # Ejecutar el instalador | |
| echo "Iniciando instalación de XAMPP..." | |
| sudo /tmp/${XAMPP_FILE} && rm -f /tmp/${XAMPP_FILE} | |
| # Verificar si XAMPP está instalado correctamente | |
| if [ -d "/opt/lampp" ]; then | |
| echo "XAMPP instalado exitosamente en /opt/lampp." | |
| else | |
| echo "Hubo un error en la instalación de XAMPP." | |
| exit 1 | |
| fi | |
| # Iniciar XAMPP | |
| echo "Iniciando XAMPP..." | |
| sudo /opt/lampp/lampp start | |
| # Verificar si XAMPP se inició correctamente | |
| if ! pgrep -x "httpd" > /dev/null; then | |
| echo "Error: Apache no pudo iniciarse correctamente." | |
| exit 1 | |
| fi | |
| if ! pgrep -x "mysqld" > /dev/null; then | |
| echo "Error: MySQL no pudo iniciarse correctamente." | |
| exit 1 | |
| fi | |
| # Habilitar XAMPP para que se inicie al arrancar el sistema (opcional) | |
| echo "¿Deseas que XAMPP se inicie automáticamente cuando arranque el sistema? (sí/no)" | |
| read -p "Respuesta: " auto_start | |
| if [[ "$auto_start" == "sí" || "$auto_start" == "si" ]]; then | |
| # Crear un archivo de servicio systemd para XAMPP | |
| echo "Creando archivo de servicio para iniciar XAMPP al arrancar..." | |
| sudo tee /etc/systemd/system/xampp.service > /dev/null <<EOL | |
| [Unit] | |
| Description=XAMPP | |
| After=network.target | |
| [Service] | |
| ExecStart=/opt/lampp/lampp start | |
| ExecStop=/opt/lampp/lampp stop | |
| RemainAfterExit=true | |
| User=root | |
| [Install] | |
| WantedBy=multi-user.target | |
| EOL | |
| # Habilitar el servicio de XAMPP para que se inicie al arranque | |
| sudo systemctl enable xampp.service | |
| echo "XAMPP se iniciará automáticamente al arrancar el sistema." | |
| fi | |
| # Instrucciones finales | |
| echo "Instalación completada. XAMPP está en funcionamiento." | |
| # Información sobre cómo gestionar XAMPP desde la terminal | |
| echo "Puedes gestionar XAMPP con los siguientes comandos:" | |
| echo "Para iniciar XAMPP: sudo /opt/lampp/lampp start" | |
| echo "Para detener XAMPP: sudo /opt/lampp/lampp stop" | |
| echo "Para reiniciar XAMPP: sudo /opt/lampp/lampp restart" | |
| echo "Para verificar el estado de Apache y MySQL: sudo /opt/lampp/lampp status" | |
| # Finalizar el script | |
| echo "¡Todo listo! Puedes ahora gestionar XAMPP completamente desde la terminal." |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Explicación del Script Combinado
Configuración y Verificación de Herramientas Previas
El script sigue verificando e instalando herramientas como Git, Node.js, MySQL, Apache, Zsh, y Oh My Zsh, tal como lo hacíamos en el primer script.
Instalación de XAMPP
/opt/lampp.Configuración para Iniciar XAMPP Automáticamente
Instrucciones Finales
Cómo Ejecutar el Script
Crear el Archivo
Abre una terminal y crea el archivo de script:
Pegar el Código
Copia y pega el código del script combinado en el archivo y guarda los cambios (Ctrl + O, luego Enter, y Ctrl + X para salir).
Dar Permisos de Ejecución
Asigna permisos de ejecución al script:
Ejecutar el Script
Ejecuta el script con:
Este script instalará todo lo necesario y te permitirá gestionar XAMPP completamente desde la terminal, con opciones para habilitar XAMPP al arranque y una interfaz fácil de usar desde la terminal para gestionar los servicios.
Git: @gmail.com