mirror of
https://github.com/acedanger/shell.git
synced 2025-12-06 06:40:13 -08:00
201 lines
4.4 KiB
Markdown
201 lines
4.4 KiB
Markdown
# Backup Web Application Deployment Guide
|
|
|
|
This guide covers multiple methods to keep the backup web application running perpetually on your server.
|
|
|
|
## Deployment Options
|
|
|
|
### 1. 🚀 Systemd Service (Recommended for Production)
|
|
|
|
**Best for:** Production environments, automatic startup on boot, proper logging, and system integration.
|
|
|
|
#### Setup Steps:
|
|
|
|
```bash
|
|
# Install the service
|
|
sudo ./manage-backup-web-service.sh install
|
|
|
|
# Start the service
|
|
sudo ./manage-backup-web-service.sh start
|
|
|
|
# Check status
|
|
./manage-backup-web-service.sh status
|
|
|
|
# View logs
|
|
./manage-backup-web-service.sh logs
|
|
```
|
|
|
|
#### Service Management:
|
|
|
|
```bash
|
|
# Start/Stop/Restart
|
|
sudo systemctl start backup-web-app
|
|
sudo systemctl stop backup-web-app
|
|
sudo systemctl restart backup-web-app
|
|
|
|
# Enable/Disable auto-start on boot
|
|
sudo systemctl enable backup-web-app
|
|
sudo systemctl disable backup-web-app
|
|
|
|
# Check logs
|
|
sudo journalctl -u backup-web-app -f
|
|
```
|
|
|
|
### 2. 🐳 Docker (Recommended for Isolation)
|
|
|
|
**Best for:** Containerized environments, easy deployment, consistent runtime.
|
|
|
|
#### Using Docker Compose:
|
|
|
|
```bash
|
|
# Build and start
|
|
docker-compose up -d
|
|
|
|
# View logs
|
|
docker-compose logs -f
|
|
|
|
# Stop
|
|
docker-compose down
|
|
|
|
# Rebuild and restart
|
|
docker-compose up -d --build
|
|
```
|
|
|
|
#### Using Docker directly:
|
|
|
|
```bash
|
|
# Build image
|
|
docker build -t backup-web-app .
|
|
|
|
# Run container
|
|
docker run -d \
|
|
--name backup-web-app \
|
|
-p 5000:5000 \
|
|
-v /mnt/share/media/backups:/data/backups:ro \
|
|
-e BACKUP_ROOT=/data/backups \
|
|
--restart unless-stopped \
|
|
backup-web-app
|
|
```
|
|
|
|
### 3. 📺 Screen Session (Quick & Simple)
|
|
|
|
**Best for:** Development, testing, quick deployments.
|
|
|
|
```bash
|
|
# Start the application
|
|
./run-backup-web-screen.sh start
|
|
|
|
# Check status
|
|
./run-backup-web-screen.sh status
|
|
|
|
# View logs (connect to session)
|
|
./run-backup-web-screen.sh logs
|
|
|
|
# Stop the application
|
|
./run-backup-web-screen.sh stop
|
|
```
|
|
|
|
### 4. ⚡ Production with Gunicorn
|
|
|
|
**Best for:** High-performance production deployments.
|
|
|
|
```bash
|
|
# Install gunicorn
|
|
pip install gunicorn
|
|
|
|
# Run with production settings
|
|
./run-production.sh
|
|
```
|
|
|
|
## Configuration
|
|
|
|
### Environment Variables
|
|
|
|
- `BACKUP_ROOT`: Path to backup directory (default: `/mnt/share/media/backups`)
|
|
- `PORT`: Application port (default: `5000`)
|
|
- `FLASK_ENV`: Environment mode (`development` or `production`)
|
|
- `FLASK_DEBUG`: Enable debug mode (`true` or `false`)
|
|
|
|
### Security Considerations
|
|
|
|
1. **Firewall**: Ensure port 5000 is properly secured
|
|
2. **Reverse Proxy**: Consider using nginx for SSL termination
|
|
3. **Authentication**: Add authentication for production use
|
|
4. **File Permissions**: Ensure proper read permissions for backup directories
|
|
|
|
## Monitoring & Maintenance
|
|
|
|
### Health Checks
|
|
|
|
The application provides a health endpoint:
|
|
```bash
|
|
curl http://localhost:5000/health
|
|
```
|
|
|
|
### Log Locations
|
|
|
|
- **Systemd**: `sudo journalctl -u backup-web-app`
|
|
- **Docker**: `docker-compose logs` or `docker logs backup-web-app`
|
|
- **Screen**: Connect to session with `screen -r backup-web-app`
|
|
- **Gunicorn**: `/tmp/backup-web-app-access.log` and `/tmp/backup-web-app-error.log`
|
|
|
|
### Automatic Restarts
|
|
|
|
- **Systemd**: Built-in restart on failure
|
|
- **Docker**: Use `--restart unless-stopped` or `restart: unless-stopped` in compose
|
|
- **Screen**: Manual restart required
|
|
|
|
## Troubleshooting
|
|
|
|
### Common Issues
|
|
|
|
1. **Port already in use**:
|
|
```bash
|
|
sudo lsof -i :5000
|
|
sudo netstat -tulpn | grep :5000
|
|
```
|
|
|
|
2. **Permission denied for backup directory**:
|
|
```bash
|
|
sudo chown -R acedanger:acedanger /mnt/share/media/backups
|
|
chmod -R 755 /mnt/share/media/backups
|
|
```
|
|
|
|
3. **Service won't start**:
|
|
```bash
|
|
sudo journalctl -u backup-web-app -n 50
|
|
```
|
|
|
|
### Performance Tuning
|
|
|
|
1. **Gunicorn Workers**: Adjust in `gunicorn.conf.py`
|
|
2. **Memory Limits**: Set in systemd service or docker-compose
|
|
3. **Log Rotation**: Configure logrotate for production
|
|
|
|
## Quick Start Commands
|
|
|
|
```bash
|
|
# For development/testing (Screen)
|
|
./run-backup-web-screen.sh start
|
|
|
|
# For production (Systemd)
|
|
sudo ./manage-backup-web-service.sh install
|
|
sudo ./manage-backup-web-service.sh start
|
|
|
|
# For containerized (Docker)
|
|
docker-compose up -d
|
|
|
|
# Check if running
|
|
curl http://localhost:5000/health
|
|
```
|
|
|
|
## Recommended Setup
|
|
|
|
For a production server, use this combination:
|
|
|
|
1. **Primary**: Systemd service for reliability
|
|
2. **Backup**: Docker setup for easy maintenance
|
|
3. **Monitoring**: Set up log monitoring and alerts
|
|
4. **Security**: Add reverse proxy with SSL
|
|
|
|
Choose the method that best fits your infrastructure and requirements!
|