Files
project-tracker/deploy.sh

67 lines
1.8 KiB
Bash

#!/bin/bash
# Project Tracker Deployment Script
# Run on project-tracker (10.10.11.103) as root
set -e
echo "=== Project Tracker Deployment ==="
# 1. Install dependencies
echo "[1/6] Installing nginx, node, npm..."
apt-get update -qq
apt-get install -y -qq nginx nodejs npm > /dev/null 2>&1
# 2. Create directories
echo "[2/6] Creating directories..."
mkdir -p /opt/project-tracker/backend /opt/project-tracker/data /opt/project-tracker/frontend
# 3. Install Node dependencies
echo "[3/6] Installing Node dependencies..."
cd /opt/project-tracker/backend
npm install --silent express better-sqlite3 cors
# 4. Deploy backend server.js (already created locally and needs to be copied)
# 5. Deploy frontend (already created locally and needs to be copied)
# 6. Start services...
# 7. Set up systemd service
echo "[4/6] Setting up systemd service..."
cat > /etc/systemd/system/project-tracker.service << 'EOF'
[Unit]
Description=Project Tracker API
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/project-tracker/backend
ExecStart=/usr/bin/node server.js
Restart=always
RestartSec=5
User=root
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable project-tracker
systemctl restart project-tracker
# 8. Configure nginx
echo "[5/6] Configuring nginx..."
cp /opt/project-tracker/nginx.conf /etc/nginx/sites-available/project-tracker
ln -sf /etc/nginx/sites-available/project-tracker /etc/nginx/sites-enabled/project-tracker
nginx -t && systemctl reload nginx
# 9. Verify
echo "[6/6] Verifying..."
sleep 2
curl -s http://localhost:3000/api/projects | head -c 100
echo ""
curl -s -o /dev/null -w "Frontend: %{http_code}\n" http://localhost/
echo ""
systemctl status project-tracker --no-pager | grep -E 'Active|loaded'
echo ""
echo "=== Done! ==="
echo "Access at: http://10.10.11.103"