#!/bin/bash # SkyArtShop - Rebuild and Deploy Script # Run this script after making changes to your code set -e # Exit on error echo "========================================" echo " SkyArtShop - Rebuild & Deploy" echo "========================================" echo "" # Colors GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' # Change to project directory cd /var/www/SkyArtShop # Step 1: Build echo -e "${YELLOW}[1/5] Building application...${NC}" dotnet build SkyArtShop.csproj -c Release if [ $? -eq 0 ]; then echo -e "${GREEN}✓ Build successful${NC}" else echo -e "${RED}✗ Build failed${NC}" exit 1 fi echo "" # Step 2: Clean and Publish echo -e "${YELLOW}[2/5] Cleaning old publish directory...${NC}" rm -rf ./publish_temp mkdir -p ./publish_temp echo -e "${YELLOW}[2/5] Publishing to ./publish_temp...${NC}" dotnet publish SkyArtShop.csproj -c Release -o ./publish_temp --no-build if [ $? -eq 0 ]; then echo -e "${GREEN}✓ Publish successful${NC}" else echo -e "${RED}✗ Publish failed${NC}" exit 1 fi echo "" # Step 3: Stop service and swap directories echo -e "${YELLOW}[3/5] Stopping application...${NC}" sudo systemctl stop skyartshop sleep 1 echo -e "${YELLOW}[3/5] Swapping publish directories...${NC}" if [ -d "./publish" ]; then sudo rm -rf ./publish_old sudo mv ./publish ./publish_old fi mv ./publish_temp ./publish echo -e "${YELLOW}[3/5] Setting permissions...${NC}" sudo chown -R www-data:www-data ./publish sudo chmod +x ./publish/SkyArtShop.dll echo -e "${GREEN}✓ Permissions set${NC}" echo "" # Step 4: Restart services echo -e "${YELLOW}[4/5] Restarting services...${NC}" sudo systemctl restart skyartshop echo " Waiting for application to start..." sleep 5 if systemctl is-active --quiet skyartshop; then echo -e "${GREEN}✓ Application restarted${NC}" else echo -e "${RED}✗ Application failed to start${NC}" echo "Check logs: sudo journalctl -u skyartshop.service -n 50" exit 1 fi echo "" # Step 5: Verify echo -e "${YELLOW}[5/5] Verifying deployment...${NC}" echo " Waiting for application to be ready..." sleep 3 # Test website HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" http://localhost 2>/dev/null) if [ "$HTTP_CODE" = "200" ]; then echo -e "${GREEN}✓ Website responding (HTTP $HTTP_CODE)${NC}" else echo -e "${RED}✗ Website not responding (HTTP $HTTP_CODE)${NC}" exit 1 fi # Test CSS CSS_CODE=$(curl -s -o /dev/null -w "%{http_code}" http://localhost/assets/css/main.css 2>/dev/null) if [ "$CSS_CODE" = "200" ]; then echo -e "${GREEN}✓ CSS loading (HTTP $CSS_CODE)${NC}" else echo -e "${RED}✗ CSS not loading (HTTP $CSS_CODE)${NC}" fi # Test JS JS_CODE=$(curl -s -o /dev/null -w "%{http_code}" http://localhost/assets/js/main.js 2>/dev/null) if [ "$JS_CODE" = "200" ]; then echo -e "${GREEN}✓ JavaScript loading (HTTP $JS_CODE)${NC}" else echo -e "${RED}✗ JavaScript not loading (HTTP $JS_CODE)${NC}" fi echo "" echo "========================================" echo -e "${GREEN}✓ Deployment Complete!${NC}" echo "========================================" echo "" echo "Website: http://localhost" echo "Domain: http://skyarts.ddns.net" echo "" echo "To view logs: sudo journalctl -u skyartshop.service -f"