- deploy.sh: Publish and deploy from dev machine - server-setup.sh: One-time Ubuntu server setup (Nginx, Docker, SQL Server) - README.md: Deployment documentation and troubleshooting guide Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
81 lines
2.2 KiB
Bash
81 lines
2.2 KiB
Bash
#!/bin/bash
|
|
# TrueCV Deployment Script
|
|
# Run this from your development machine to deploy to a Linux server
|
|
|
|
set -e
|
|
|
|
# Configuration - UPDATE THESE VALUES
|
|
SERVER_USER="deploy"
|
|
SERVER_HOST="your-server.com"
|
|
SERVER_PATH="/var/www/truecv"
|
|
DOMAIN="truecv.yourdomain.com"
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo -e "${GREEN}=== TrueCV Deployment Script ===${NC}"
|
|
|
|
# Check if configuration is set
|
|
if [[ "$SERVER_HOST" == "your-server.com" ]]; then
|
|
echo -e "${RED}Error: Please update SERVER_HOST in this script${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# Step 1: Build and publish
|
|
echo -e "${YELLOW}Step 1: Publishing application...${NC}"
|
|
cd "$(dirname "$0")/.."
|
|
dotnet publish src/TrueCV.Web -c Release -o ./publish --nologo
|
|
|
|
# Step 2: Create deployment package
|
|
echo -e "${YELLOW}Step 2: Creating deployment package...${NC}"
|
|
tar -czf deploy/truecv-release.tar.gz -C publish .
|
|
|
|
# Step 3: Transfer to server
|
|
echo -e "${YELLOW}Step 3: Transferring to server...${NC}"
|
|
scp deploy/truecv-release.tar.gz ${SERVER_USER}@${SERVER_HOST}:/tmp/
|
|
|
|
# Step 4: Deploy on server
|
|
echo -e "${YELLOW}Step 4: Deploying on server...${NC}"
|
|
ssh ${SERVER_USER}@${SERVER_HOST} << 'ENDSSH'
|
|
set -e
|
|
|
|
# Stop the service if running
|
|
sudo systemctl stop truecv 2>/dev/null || true
|
|
|
|
# Backup current deployment
|
|
if [ -d "/var/www/truecv" ]; then
|
|
sudo mv /var/www/truecv /var/www/truecv.backup.$(date +%Y%m%d_%H%M%S)
|
|
fi
|
|
|
|
# Create directory and extract
|
|
sudo mkdir -p /var/www/truecv
|
|
sudo tar -xzf /tmp/truecv-release.tar.gz -C /var/www/truecv
|
|
sudo chown -R www-data:www-data /var/www/truecv
|
|
|
|
# Start the service
|
|
sudo systemctl start truecv
|
|
|
|
# Clean up
|
|
rm /tmp/truecv-release.tar.gz
|
|
|
|
echo "Deployment complete on server"
|
|
ENDSSH
|
|
|
|
# Step 5: Verify deployment
|
|
echo -e "${YELLOW}Step 5: Verifying deployment...${NC}"
|
|
sleep 3
|
|
if ssh ${SERVER_USER}@${SERVER_HOST} "sudo systemctl is-active truecv" | grep -q "active"; then
|
|
echo -e "${GREEN}=== Deployment successful! ===${NC}"
|
|
echo -e "Site should be available at: https://${DOMAIN}"
|
|
else
|
|
echo -e "${RED}Warning: Service may not be running. Check with: sudo systemctl status truecv${NC}"
|
|
fi
|
|
|
|
# Cleanup local files
|
|
rm -f deploy/truecv-release.tar.gz
|
|
|
|
echo -e "${GREEN}Done!${NC}"
|