mirror of
https://github.com/acedanger/shell.git
synced 2025-12-05 22:50:18 -08:00
feat: Implement comprehensive backup web application with Docker, systemd service, and Gunicorn support
This commit is contained in:
150
run-backup-web-screen.sh
Executable file
150
run-backup-web-screen.sh
Executable file
@@ -0,0 +1,150 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Simple script to run backup web app in a persistent screen session
|
||||
|
||||
SESSION_NAME="backup-web-app"
|
||||
APP_DIR="/home/acedanger/shell"
|
||||
PYTHON_CMD="python3"
|
||||
|
||||
# Colors for output
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m'
|
||||
|
||||
print_status() {
|
||||
echo -e "${GREEN}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
print_warning() {
|
||||
echo -e "${YELLOW}[WARNING]${NC} $1"
|
||||
}
|
||||
|
||||
print_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
check_screen() {
|
||||
if ! command -v screen &> /dev/null; then
|
||||
print_error "Screen is not installed. Install it with: sudo apt install screen"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
start_app() {
|
||||
check_screen
|
||||
|
||||
# Check if session already exists
|
||||
if screen -list | grep -q "$SESSION_NAME"; then
|
||||
print_warning "Session '$SESSION_NAME' already exists"
|
||||
print_status "Use './run-backup-web-screen.sh status' to check or './run-backup-web-screen.sh stop' to stop"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
print_status "Starting backup web app in screen session '$SESSION_NAME'..."
|
||||
|
||||
# Start new detached screen session
|
||||
cd "$APP_DIR" || exit 1
|
||||
screen -dmS "$SESSION_NAME" bash -c "
|
||||
export BACKUP_ROOT=/mnt/share/media/backups
|
||||
export FLASK_ENV=production
|
||||
$PYTHON_CMD backup-web-app.py
|
||||
"
|
||||
|
||||
sleep 2
|
||||
|
||||
if screen -list | grep -q "$SESSION_NAME"; then
|
||||
print_status "✅ Backup web app started successfully!"
|
||||
print_status "Session: $SESSION_NAME"
|
||||
print_status "URL: http://localhost:5000"
|
||||
print_status ""
|
||||
print_status "Commands:"
|
||||
print_status " View logs: ./run-backup-web-screen.sh logs"
|
||||
print_status " Stop app: ./run-backup-web-screen.sh stop"
|
||||
print_status " Status: ./run-backup-web-screen.sh status"
|
||||
else
|
||||
print_error "Failed to start the application"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
stop_app() {
|
||||
if screen -list | grep -q "$SESSION_NAME"; then
|
||||
print_status "Stopping backup web app..."
|
||||
screen -S "$SESSION_NAME" -X quit
|
||||
print_status "✅ Application stopped"
|
||||
else
|
||||
print_warning "No session '$SESSION_NAME' found"
|
||||
fi
|
||||
}
|
||||
|
||||
status_app() {
|
||||
if screen -list | grep -q "$SESSION_NAME"; then
|
||||
print_status "✅ Backup web app is running"
|
||||
print_status "Session details:"
|
||||
screen -list | grep "$SESSION_NAME"
|
||||
print_status ""
|
||||
print_status "Access the session with: screen -r $SESSION_NAME"
|
||||
print_status "Detach from session with: Ctrl+A, then D"
|
||||
else
|
||||
print_warning "❌ Backup web app is not running"
|
||||
fi
|
||||
}
|
||||
|
||||
show_logs() {
|
||||
if screen -list | grep -q "$SESSION_NAME"; then
|
||||
print_status "Connecting to session '$SESSION_NAME'..."
|
||||
print_status "Press Ctrl+A, then D to detach from the session"
|
||||
screen -r "$SESSION_NAME"
|
||||
else
|
||||
print_error "No session '$SESSION_NAME' found. App is not running."
|
||||
fi
|
||||
}
|
||||
|
||||
restart_app() {
|
||||
print_status "Restarting backup web app..."
|
||||
stop_app
|
||||
sleep 2
|
||||
start_app
|
||||
}
|
||||
|
||||
show_help() {
|
||||
echo "Backup Web App Screen Manager"
|
||||
echo
|
||||
echo "Usage: $0 {start|stop|restart|status|logs|help}"
|
||||
echo
|
||||
echo "Commands:"
|
||||
echo " start - Start the app in a screen session"
|
||||
echo " stop - Stop the app"
|
||||
echo " restart - Restart the app"
|
||||
echo " status - Check if app is running"
|
||||
echo " logs - Connect to the screen session to view logs"
|
||||
echo " help - Show this help message"
|
||||
}
|
||||
|
||||
case "${1:-}" in
|
||||
start)
|
||||
start_app
|
||||
;;
|
||||
stop)
|
||||
stop_app
|
||||
;;
|
||||
restart)
|
||||
restart_app
|
||||
;;
|
||||
status)
|
||||
status_app
|
||||
;;
|
||||
logs)
|
||||
show_logs
|
||||
;;
|
||||
help|--help|-h)
|
||||
show_help
|
||||
;;
|
||||
*)
|
||||
print_error "Invalid command: ${1:-}"
|
||||
echo
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user