Añadir script de instalación y datos iniciales de continentes, países y categorías
This commit is contained in:
parent
170e4e27db
commit
b3dc6a4ac2
5 changed files with 353 additions and 0 deletions
126
install.sh
Normal file
126
install.sh
Normal file
|
|
@ -0,0 +1,126 @@
|
|||
#!/bin/bash
|
||||
|
||||
# ========= CONFIGURACIÓN =========
|
||||
APP_NAME="rss"
|
||||
USER=$(whoami)
|
||||
APP_DIR="/home/$USER/rss"
|
||||
PYTHON_ENV="$APP_DIR/venv"
|
||||
SERVICE_FILE="/etc/systemd/system/$APP_NAME.service"
|
||||
FLASK_FILE="app.py"
|
||||
|
||||
DB_NAME="noticiasrss"
|
||||
MYSQL_USER="root"
|
||||
|
||||
# ========= PEDIR CONTRASEÑA MYSQL =========
|
||||
read -s -p "Introduce la contraseña MySQL para '$MYSQL_USER': " MYSQL_PASS
|
||||
echo
|
||||
|
||||
# ========= BASE DE DATOS Y TABLAS =========
|
||||
echo "🛠️ Verificando/creando base de datos '$DB_NAME'..."
|
||||
mysql -u"$MYSQL_USER" -p"$MYSQL_PASS" -e "CREATE DATABASE IF NOT EXISTS $DB_NAME DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
|
||||
|
||||
echo "📐 Verificando tablas necesarias..."
|
||||
mysql -u"$MYSQL_USER" -p"$MYSQL_PASS" "$DB_NAME" <<EOF
|
||||
CREATE TABLE IF NOT EXISTS continentes (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nombre VARCHAR(255)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS categorias_estandar (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nombre VARCHAR(255)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS paises (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nombre VARCHAR(255),
|
||||
continente_id INT
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS feeds (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nombre VARCHAR(255),
|
||||
url TEXT,
|
||||
categoria_id INT,
|
||||
pais_id INT,
|
||||
activo BOOLEAN DEFAULT TRUE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS noticias (
|
||||
id CHAR(32) PRIMARY KEY,
|
||||
titulo TEXT,
|
||||
resumen TEXT,
|
||||
url TEXT,
|
||||
fecha DATETIME,
|
||||
imagen_url TEXT,
|
||||
categoria_id INT,
|
||||
pais_id INT
|
||||
);
|
||||
EOF
|
||||
echo "✅ Tablas creadas/verificadas correctamente."
|
||||
|
||||
# ========= DATOS INICIALES =========
|
||||
|
||||
# Continentes
|
||||
if [ -f "$APP_DIR/continentes.sql" ]; then
|
||||
echo "🌎 Insertando continentes..."
|
||||
mysql -u"$MYSQL_USER" -p"$MYSQL_PASS" "$DB_NAME" < "$APP_DIR/continentes.sql"
|
||||
else
|
||||
echo "⚠️ No se encontró $APP_DIR/continentes.sql"
|
||||
fi
|
||||
|
||||
# Países
|
||||
if [ -f "$APP_DIR/paises.sql" ]; then
|
||||
echo "🌐 Insertando países..."
|
||||
mysql -u"$MYSQL_USER" -p"$MYSQL_PASS" "$DB_NAME" < "$APP_DIR/paises.sql"
|
||||
else
|
||||
echo "⚠️ No se encontró $APP_DIR/paises.sql"
|
||||
fi
|
||||
|
||||
# Categorías
|
||||
if [ -f "$APP_DIR/categorias.sql" ]; then
|
||||
echo "🏷️ Insertando categorías estándar..."
|
||||
mysql -u"$MYSQL_USER" -p"$MYSQL_PASS" "$DB_NAME" < "$APP_DIR/categorias.sql"
|
||||
else
|
||||
echo "⚠️ No se encontró $APP_DIR/categorias.sql"
|
||||
fi
|
||||
|
||||
# ========= ENTORNO PYTHON =========
|
||||
echo "🌀 Creando entorno virtual en $PYTHON_ENV"
|
||||
python3 -m venv "$PYTHON_ENV"
|
||||
|
||||
echo "📦 Instalando dependencias"
|
||||
source "$PYTHON_ENV/bin/activate"
|
||||
pip install --upgrade pip
|
||||
pip install -r "$APP_DIR/requirements.txt"
|
||||
deactivate
|
||||
|
||||
# ========= SYSTEMD SERVICE =========
|
||||
echo "⚙️ Creando servicio systemd: $SERVICE_FILE"
|
||||
sudo tee "$SERVICE_FILE" > /dev/null <<EOF
|
||||
[Unit]
|
||||
Description=RSS Flask App
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
User=$USER
|
||||
WorkingDirectory=$APP_DIR
|
||||
ExecStart=$PYTHON_ENV/bin/python $FLASK_FILE
|
||||
Restart=always
|
||||
Environment=PYTHONUNBUFFERED=1
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
# ========= ACTIVAR SERVICIO =========
|
||||
echo "🔁 Recargando systemd y activando servicio"
|
||||
sudo systemctl daemon-reexec
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable "$APP_NAME"
|
||||
sudo systemctl start "$APP_NAME"
|
||||
|
||||
# ========= ESTADO =========
|
||||
echo "✅ Servicio '$APP_NAME' instalado y funcionando."
|
||||
echo "👉 Revisa con: systemctl status $APP_NAME"
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue