directlx-dev/deploy.sh

61 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
set -e
# DirectLX.dev Deployment Script
# Run as root or with sudo
DEPLOY_DIR="/var/www/html/directlx.dev"
SOURCE_DIR="$(cd "$(dirname "$0")" && pwd)"
echo "=== Deploying DirectLX.dev ==="
# Create deployment directory
mkdir -p "$DEPLOY_DIR"
# Copy application files
echo "Copying application files..."
cp -r "$SOURCE_DIR"/{app.py,config.py,models.py,wsgi.py,requirements.txt,templates,static} "$DEPLOY_DIR/"
mkdir -p "$DEPLOY_DIR/instance"
# Create .env file if it doesn't exist
if [ ! -f "$DEPLOY_DIR/.env" ]; then
echo "Creating .env file with generated secret key..."
SECRET_KEY=$(python3 -c "import secrets; print(secrets.token_hex(32))")
echo "SECRET_KEY=$SECRET_KEY" > "$DEPLOY_DIR/.env"
fi
# Set up Python virtual environment
echo "Setting up Python virtual environment..."
cd "$DEPLOY_DIR"
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# Set permissions
echo "Setting permissions..."
chown -R www-data:www-data "$DEPLOY_DIR"
chmod -R 755 "$DEPLOY_DIR"
# Install systemd service
echo "Installing systemd service..."
cp "$SOURCE_DIR/directlx.service" /etc/systemd/system/
systemctl daemon-reload
systemctl enable directlx
systemctl restart directlx
# Install nginx configuration
echo "Installing nginx configuration..."
cp "$SOURCE_DIR/nginx.conf" /etc/nginx/sites-available/directlx.dev
ln -sf /etc/nginx/sites-available/directlx.dev /etc/nginx/sites-enabled/
# Test and reload nginx
nginx -t && systemctl reload nginx
echo "=== Deployment complete ==="
echo "Site should be available at http://directlx.dev"
echo ""
echo "Useful commands:"
echo " systemctl status directlx - Check app status"
echo " journalctl -u directlx -f - View app logs"
echo " systemctl restart directlx - Restart app"