11 KiB
🚀 POZO - Complete Deployment Guide with Dynamic SEO
⚠️ IMPORTANT: Follow EXACTLY in this order. Don't skip any step!
📋 Prerequisites Check
Before starting, make sure you have:
- ✅ Node.js installed (check:
node --version) - ✅ npm installed (check:
npm --version) - ✅ Access to your IIS server
- ✅ iisnode installed on IIS server
- ✅ URL Rewrite module installed on IIS server
🔨 PART 1: Build the Project Locally
Step 1: Stop any running servers
# Kill all node processes
Get-Process -Name node -ErrorAction SilentlyContinue | Stop-Process -Force
Step 2: Clean previous build (Optional but recommended)
# Remove old dist folder
Remove-Item -Path "dist" -Recurse -Force -ErrorAction SilentlyContinue
Step 3: Install dependencies
# Make sure all packages are installed
npm install
Step 4: Build the project with SEO generation
# This runs Vite build + React Snap + SEO generation
npm run convert-jsx-to-html
Expected Output:
- ✅ Vite build completes
- ✅ React Snap attempts to prerender (may show warnings - ignore them)
- ✅ SEO files generated for all pages
- ✅
dist/folder created with all files - ✅
dist/server.jscreated - ✅
dist/server/seo-middleware.jscreated - ✅
dist/web.configcreated
Step 5: Verify build output
# Check if critical files exist
Test-Path "dist/server.js"
Test-Path "dist/server/seo-middleware.js"
Test-Path "dist/web.config"
Test-Path "dist/home/pricing-pozoapp/index.html"
Test-Path "dist/home/blog/index.html"
All should return: True
🧪 PART 2: Test Locally (MANDATORY!)
Step 6: Start local server
# Navigate to dist folder and start server
cd dist
node server.js
Expected Output:
Server running on port 3000
Dynamic SEO enabled!
Step 7: Test in browser
Open these URLs in your browser:
- Home: http://localhost:3000/home/
- Pricing: http://localhost:3000/home/pricing-pozoapp
- Blog: http://localhost:3000/home/blog
- Contact: http://localhost:3000/home/contact-us
- Sign In: http://localhost:3000/home/signin
Step 8: Verify SEO for each page
For EACH page above:
- Open the URL in browser
- Press
Ctrl + Uto view page source - Check
<head>section contains:- ✅
<title>tag with correct page title - ✅
<meta name="description"with correct description - ✅
<meta property="og:title"- Open Graph title - ✅
<meta property="og:description"- OG description - ✅
<meta property="og:image"- OG image URL - ✅
<meta property="og:url"- Page URL - ✅
<meta property="twitter:card"- Twitter card - ✅
<link rel="canonical"- Canonical URL
- ✅
IMPORTANT: If ANY page shows wrong SEO or missing tags, STOP and fix before deploying!
Step 9: Stop local server
# Press Ctrl+C in the terminal where server is running
# OR run this in new terminal:
Get-Process -Name node -ErrorAction SilentlyContinue | Stop-Process -Force
📦 PART 3: Prepare Files for Deployment
Step 10: Check dist folder contents
Your dist/ folder should have:
dist/
├── assets/ (all JS, CSS, images)
├── home/
│ ├── index.html
│ ├── blog/
│ │ └── index.html
│ ├── pricing-pozoapp/
│ │ └── index.html
│ ├── contact-us/
│ │ └── index.html
│ └── signin/
│ └── index.html
├── og/ (Open Graph images)
├── server/
│ └── seo-middleware.js
├── index.html
├── server.js (CRITICAL!)
├── web.config (CRITICAL!)
├── robots.txt
├── sitemap.xml
└── ... (other files)
Step 11: Create deployment package
# Go back to project root
cd ..
# Create a zip file of dist folder (optional, makes upload easier)
Compress-Archive -Path "dist\*" -DestinationPath "pozo-deployment.zip" -Force
🌐 PART 4: Deploy to IIS Server
Step 12: Upload files to server
Option A: If you have FTP/SFTP access:
- Connect to your server via FTP/SFTP
- Navigate to your website root folder (e.g.,
C:\inetpub\wwwroot\pozo.dev\) - BACKUP existing files first!
- Delete old files in the folder
- Upload ALL files from
dist/folder
Option B: If you have RDP access:
- Connect via Remote Desktop
- Copy
dist/folder orpozo-deployment.zipto server - Extract/move files to website root (e.g.,
C:\inetpub\wwwroot\pozo.dev\)
Step 13: Install Node.js dependencies on server
On your IIS server (via RDP or SSH):
# Navigate to your website root
cd C:\inetpub\wwwroot\pozo.dev
# Install dependencies
npm install express axios
Step 14: Verify critical files on server
On server, check these files exist:
Test-Path "server.js"
Test-Path "server\seo-middleware.js"
Test-Path "web.config"
Test-Path "node_modules\express"
Test-Path "node_modules\axios"
All should return: True
⚙️ PART 5: Configure IIS
Step 15: Verify iisnode is installed
- Open IIS Manager
- Select your site
- Check if "iisnode" icon is visible in Features View
- If NOT visible, install iisnode from: https://github.com/Azure/iisnode/releases
Step 16: Verify URL Rewrite module
- In IIS Manager, select your site
- Check if "URL Rewrite" icon is visible
- If NOT visible, install from: https://www.iis.net/downloads/microsoft/url-rewrite
Step 17: Check web.config
Your web.config should look like this:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="iisnode" path="server.js" verb="*" modules="iisnode" resourceType="File" />
</handlers>
<rewrite>
<rules>
<!-- Route all requests to Node.js server -->
<rule name="pozo.dev" stopProcessing="true">
<match url="/*" />
<action type="Rewrite" url="server.js" />
</rule>
</rules>
</rewrite>
<iisnode node_env="production" />
</system.webServer>
</configuration>
If different, replace with above content.
Step 18: Set proper permissions
On server:
- Right-click on website folder → Properties → Security
- Add
IIS_IUSRSwith Read & Execute permissions - Add
IUSRwith Read & Execute permissions
Step 19: Configure Application Pool
- Open IIS Manager
- Go to Application Pools
- Find your site's app pool
- Right-click → Advanced Settings
- Set:
.NET CLR Version: No Managed CodeEnable 32-Bit Applications: FalsePipeline Mode: Integrated
Step 20: Restart Application Pool
- In IIS Manager → Application Pools
- Right-click your app pool → Stop
- Wait 5 seconds
- Right-click → Start
Step 21: Restart IIS (optional but recommended)
On server:
iisreset
✅ PART 6: Test Production Site
Step 22: Test your live site
Open these URLs (replace pozo.dev with your domain):
- Home: https://www.pozo.dev/home/
- Pricing: https://www.pozo.dev/home/pricing-pozoapp
- Blog: https://www.pozo.dev/home/blog
- Contact: https://www.pozo.dev/home/contact-us
- Sign In: https://www.pozo.dev/home/signin
Step 23: Verify SEO on production
For EACH page:
- Open URL
- Press
Ctrl + U(View Source) - Verify ALL SEO tags are present:
- ✅ Title tag
- ✅ Meta description
- ✅ OG tags
- ✅ Twitter tags
- ✅ Canonical URL
Step 24: Test with SEO tools
-
Google Rich Results Test:
- Go to: https://search.google.com/test/rich-results
- Enter your page URL
- Check for errors
-
Meta Tags Preview:
- Go to: https://metatags.io/
- Enter your page URL
- See how it looks on social media
-
PageSpeed Insights:
- Go to: https://pagespeed.web.dev/
- Enter your page URL
- Check performance and SEO score
🐛 TROUBLESHOOTING
Issue 1: Site shows blank page or 404
Solution:
# On server, check iisnode logs
type C:\inetpub\wwwroot\pozo.dev\iisnode\*.log
Check for errors, usually:
- Missing
node_modules→ Runnpm install - Wrong
web.config→ Replace with correct version
Issue 2: SEO tags not showing
Solution:
- Clear browser cache (Ctrl + Shift + Delete)
- Check if server is actually running Node.js:
Get-Process -Name node - Check iisnode is processing requests:
- Check
iisnode\*.logfiles for activity
- Check
Issue 3: Assets (CSS/JS) not loading
Solution:
- Check browser console (F12)
- Verify paths in HTML match actual file locations
- Check IIS MIME types for
.js,.css,.woff,.woff2
Issue 4: Server.js not running
Solution:
- Check
web.confighas correct handler - Verify iisnode is installed
- Check Node.js is installed on server:
node --version - Restart App Pool
📝 QUICK REFERENCE COMMANDS
Local Development:
# Build project
npm run convert-jsx-to-html
# Test locally
cd dist
node server.js
# Stop server
Get-Process -Name node | Stop-Process -Force
On Server:
# Install dependencies
npm install express axios
# Restart IIS
iisreset
# Check node processes
Get-Process -Name node
# View logs
type C:\inetpub\wwwroot\pozo.dev\iisnode\*.log
🎯 CHECKLIST BEFORE DEPLOYMENT
- Local build completed without errors
- Local server tested and SEO verified
- All pages show correct titles and meta tags locally
dist/server.jsexistsdist/server/seo-middleware.jsexistsdist/web.configexists- Backed up old production files
- iisnode installed on server
- URL Rewrite module installed on server
- Node.js installed on server
npm installrun on server- Permissions set correctly
- Application pool restarted
- Production site tested
- SEO tags verified on production
✨ SUCCESS CRITERIA
Your deployment is successful when:
- ✅ All pages load without errors
- ✅ Every page has unique, correct title in browser tab
- ✅ Page source (
Ctrl+U) shows all SEO meta tags - ✅ Google Rich Results Test shows no errors
- ✅ Social media preview tools show correct title, description, and image
- ✅ Assets (images, CSS, JS) load properly
- ✅ No console errors in browser (F12)
🆘 SUPPORT
If you face any issues:
- Check the TROUBLESHOOTING section above
- Check server logs:
C:\inetpub\wwwroot\pozo.dev\iisnode\*.log - Check browser console (F12) for errors
- Verify all files uploaded correctly
- Confirm Node.js and dependencies installed on server
Created: 2025-11-04 Version: 1.0 Project: POZO - Retail ERP & POS Tech Stack: React + Vite + Node.js + Express + IIS + iisnode
நீ இந்த guide-ஐ படி படியா follow பண்ணா, 100% guarantee SEO work ஆகும்! 🚀
Oru step-um miss பண்ணாதே! எல்லாம் சரியா வரும்! 💪