From 2bc9fbcdf80467066f65f0b5cb198924427de75b Mon Sep 17 00:00:00 2001 From: jlimolina Date: Sun, 8 Jun 2025 21:25:33 +0000 Subject: [PATCH] =?UTF-8?q?Finalize:=20Script=20de=20instalaci=C3=B3n=20y?= =?UTF-8?q?=20app=20completados?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit La versión final de install.sh ahora usa la configuración correcta de Gunicorn. Se han añadido todas las rutas funcionales a app.py, incluyendo backup/restore. --- install.sh | 144 ++++++++++++++++++++++++----------------------------- 1 file changed, 66 insertions(+), 78 deletions(-) mode change 100755 => 100644 install.sh diff --git a/install.sh b/install.sh old mode 100755 new mode 100644 index 78dc5f2..dd55ea8 --- a/install.sh +++ b/install.sh @@ -1,125 +1,103 @@ #!/bin/bash +# Script de instalación completo y robusto para el Agregador RSS. +# Instala y configura PostgreSQL, Python, y la aplicación como un servicio systemd. + set -e # ========= CONFIGURACIÓN ========= APP_NAME="rss" -APP_DIR="$(cd "$(dirname "$0")" && pwd)" -PYTHON_ENV="$APP_DIR/venv" -SERVICE_FILE="/etc/systemd/system/$APP_NAME.service" -FLASK_FILE="app:app" # Formato para Gunicorn - DB_NAME="rss" DB_USER="rss" -DB_PASS="x" # Recuerda usar una contraseña más segura en un entorno real +DB_PASS="x" # ¡IMPORTANTE! Usar una contraseña más segura en un entorno real. +APP_USER="x" # El usuario no-root que ejecutará la aplicación. -# ========= INSTALAR DEPENDENCIAS DEL SISTEMA ========= +# Directorios (se calculan automáticamente) +APP_DIR="/home/$APP_USER/$APP_NAME" +PYTHON_ENV="$APP_DIR/venv" +SERVICE_FILE="/etc/systemd/system/$APP_NAME.service" +FLASK_APP_ENTRY="app:app" # Formato para Gunicorn: "nombre_fichero:nombre_variable_app" + +# ========= 1. INSTALAR DEPENDENCIAS DEL SISTEMA ========= echo "🟢 Instalando dependencias del sistema (PostgreSQL, Python, etc.)..." -sudo apt update -sudo apt install -y wget ca-certificates postgresql postgresql-contrib python3-venv python3-pip +sudo apt-get update +sudo apt-get install -y wget ca-certificates postgresql postgresql-contrib python3-venv python3-pip -# ========= CAMBIAR AUTENTICACIÓN DE peer A md5 ========= +# ========= 2. CONFIGURAR POSTGRESQL ========= +echo "🛠️ Configurando PostgreSQL..." + +# Ajustar autenticación para permitir login con contraseña PG_HBA=$(find /etc/postgresql -name pg_hba.conf | head -1) if [ -n "$PG_HBA" ] && grep -q "local\s\+all\s\+all\s\+peer" "$PG_HBA"; then - echo "📝 Ajustando pg_hba.conf para autenticación md5 (contraseña)..." + echo "📝 Ajustando pg_hba.conf para autenticación md5..." sudo sed -i 's/local\s\+all\s\+all\s\+peer/local all all md5/' "$PG_HBA" sudo systemctl restart postgresql else - echo "✅ pg_hba.conf ya configurado para md5 o no se encontró." + echo "✅ pg_hba.conf ya parece estar configurado para md5." fi -# ========= CONFIGURAR BASE DE DATOS Y USUARIO (VERSIÓN ROBUSTA) ========= -echo "🛠️ Configurando PostgreSQL: usuario y base de datos..." - -# Usamos un bloque DO para crear el usuario solo si no existe +# Crear usuario y base de datos de forma segura (solo si no existen) +echo "👤 Creando usuario y base de datos '$DB_NAME'..." sudo -u postgres psql -c "DO \$\$ BEGIN IF NOT EXISTS (SELECT FROM pg_catalog.pg_user WHERE usename = '$DB_USER') THEN CREATE USER $DB_USER WITH PASSWORD '$DB_PASS'; END IF; END \$\$;" - -# Comprobamos si la base de datos existe antes de intentar crearla if ! sudo -u postgres psql -lqt | cut -d \| -f 1 | grep -qw "$DB_NAME"; then sudo -u postgres psql -c "CREATE DATABASE $DB_NAME OWNER $DB_USER;" - sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;" echo "Base de datos '$DB_NAME' creada." else - echo "Base de datos '$DB_NAME' ya existe." + echo "✅ Base de datos '$DB_NAME' ya existe." fi -# ========= CREAR TABLAS ========= -echo "📐 Creando tablas en PostgreSQL (si no existen)..." - -# Exportamos la contraseña para que psql la use +# ========= 3. CREAR TABLAS DE LA APLICACIÓN ========= +echo "📐 Creando tablas en la base de datos (si no existen)..." export PGPASSWORD="$DB_PASS" psql -U "$DB_USER" -h localhost -d "$DB_NAME" < /dev/null <:8000" +echo "" +echo "👉 Comandos útiles:" +echo " Revisar estado: sudo systemctl status $APP_NAME" +echo " Ver logs en vivo: sudo journalctl -u $APP_NAME -f" +echo " Reiniciar servicio: sudo systemctl restart $APP_NAME" +echo "" +echo "Recuerda configurar la redirección de puertos en VirtualBox y el firewall si es necesario."