#!/bin/bash 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 # ========= 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 # ========= CAMBIAR AUTENTICACIÓN DE peer A md5 ========= 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)..." 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ó." 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 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." fi # ========= CREAR TABLAS ========= echo "📐 Creando tablas en PostgreSQL (si no existen)..." # Exportamos la contraseña para que psql la use export PGPASSWORD="$DB_PASS" psql -U "$DB_USER" -h localhost -d "$DB_NAME" < /dev/null <