#!/bin/bash # LittleShop Deployment Script for Hostinger VPS # This script deploys the application to the client's Hostinger VPS echo "===========================================" echo "LittleShop Deployment to Hostinger VPS" echo "Date: $(date)" echo "===========================================" # Configuration VPS_HOST="srv1002428.hstgr.cloud" VPS_USER="root" VPS_PORT="2255" DEPLOY_PATH="/opt/littleshop" SERVICE_NAME="littleshop" # Colors for output GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' NC='\033[0m' echo "" echo "=== Step 1: Building Application ===" echo "------------------------------------" # Build the application for Linux cd /mnt/c/Production/Source/LittleShop/LittleShop echo "Building for Linux x64..." dotnet publish -c Release -r linux-x64 --self-contained false -o ./publish if [ $? -ne 0 ]; then echo -e "${RED}✗ Build failed${NC}" exit 1 fi echo -e "${GREEN}✓ Build successful${NC}" echo "" echo "=== Step 2: Creating Deployment Package ===" echo "-------------------------------------------" # Create deployment package cd .. tar -czf littleshop-deploy.tar.gz \ -C LittleShop/publish . \ -C .. set_production_env.sh \ -C .. test_e2e_comprehensive.sh echo -e "${GREEN}✓ Deployment package created${NC}" echo "" echo "=== Step 3: Uploading to VPS ===" echo "---------------------------------" # Upload to VPS using sshpass (password from ~/.claude/Knowledge/) sshpass -p 'YOUR_PASSWORD' scp -P $VPS_PORT littleshop-deploy.tar.gz $VPS_USER@$VPS_HOST:/tmp/ if [ $? -ne 0 ]; then echo -e "${RED}✗ Upload failed${NC}" exit 1 fi echo -e "${GREEN}✓ Package uploaded${NC}" echo "" echo "=== Step 4: Deploying on VPS ===" echo "---------------------------------" # Deploy on VPS sshpass -p 'YOUR_PASSWORD' ssh -p $VPS_PORT $VPS_USER@$VPS_HOST << 'EOF' # Stop existing service systemctl stop littleshop 2>/dev/null # Create deployment directory mkdir -p /opt/littleshop # Extract new deployment cd /opt/littleshop tar -xzf /tmp/littleshop-deploy.tar.gz # Set permissions chmod +x LittleShop chmod +x set_production_env.sh chmod +x test_e2e_comprehensive.sh # Set environment variables for production cat > /etc/systemd/system/littleshop.service << 'SERVICE' [Unit] Description=LittleShop E-Commerce API After=network.target [Service] Type=simple User=www-data WorkingDirectory=/opt/littleshop ExecStart=/opt/littleshop/LittleShop Restart=always RestartSec=10 KillSignal=SIGINT SyslogIdentifier=littleshop Environment="ASPNETCORE_ENVIRONMENT=Production" Environment="ASPNETCORE_URLS=http://+:8080" Environment="JWT_SECRET_KEY=YourSuperSecretKeyHereThatIsAtLeast32CharactersLongForSecurity2025!" Environment="SILVERPAY_BASE_URL=http://31.97.57.205:8001" Environment="SILVERPAY_API_KEY=sk_live_edba50ac32dfa7f997b2597d5785afdbaf17b8a9f4a73dfbbd46dbe2a02e5757" Environment="SILVERPAY_WEBHOOK_SECRET=your-webhook-secret-here" Environment="SILVERPAY_WEBHOOK_URL=https://littleshop.silverlabs.uk/api/silverpay/webhook" Environment="WEBPUSH_VAPID_PUBLIC_KEY=BMc6fFJZ8oIQKQzcl3kMnP9tTsjrm3oI_VxLt3lAGYUMWGInzDKn7jqclEoZzjvXy1QXGFb3dIun8mVBwh-QuS4" Environment="WEBPUSH_VAPID_PRIVATE_KEY=Gs9Sp4eqhsv0vNJkdgzoYmM7C3Db0xp9KdkRRnJEfOI" Environment="WEBPUSH_SUBJECT=mailto:admin@littleshop.com" [Install] WantedBy=multi-user.target SERVICE # Reload systemd and start service systemctl daemon-reload systemctl enable littleshop systemctl start littleshop # Check status sleep 3 systemctl status littleshop --no-pager echo "" echo "Deployment complete!" EOF echo "" echo "=== Step 5: Running E2E Tests ===" echo "----------------------------------" # Run E2E tests on production sshpass -p 'YOUR_PASSWORD' ssh -p $VPS_PORT $VPS_USER@$VPS_HOST << 'EOF' cd /opt/littleshop # Update test script to use production URL sed -i 's|LITTLESHOP_URL=".*"|LITTLESHOP_URL="http://localhost:8080"|' test_e2e_comprehensive.sh bash test_e2e_comprehensive.sh EOF echo "" echo "===========================================" echo "Deployment Complete!" echo "===========================================" echo "" echo "Access Points:" echo " API: http://$VPS_HOST:8080" echo " Admin: http://$VPS_HOST:8080/Admin" echo " Swagger: http://$VPS_HOST:8080/swagger" echo "" echo "To check service status:" echo " ssh -p $VPS_PORT $VPS_USER@$VPS_HOST systemctl status littleshop" echo "" echo "To view logs:" echo " ssh -p $VPS_PORT $VPS_USER@$VPS_HOST journalctl -u littleshop -f" echo "" echo "==========================================="