61 lines
1.7 KiB
Bash
Executable File
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"
|