# Apache Deployment Guide for CLQMS ## Quick Start The app is now configured for static hosting. Follow these steps to deploy: ## 1. Build the Application ```bash pnpm run build ``` This creates static files in the `build/` folder. ## 2. Deploy to Apache ### Option A: Copy to DocumentRoot ```bash # Create directory sudo mkdir -p /var/www/html/clqms # Copy build files sudo cp -r build/* /var/www/html/clqms/ # Set permissions sudo chown -R www-data:www-data /var/www/html/clqms sudo chmod -R 755 /var/www/html/clqms ``` ### Option B: Using VirtualHost (Recommended) 1. Copy the build files: ```bash sudo mkdir -p /var/www/html/clqms sudo cp -r build/* /var/www/html/clqms/ sudo chown -R www-data:www-data /var/www/html/clqms ``` 2. Copy the Apache config: ```bash sudo cp apache-config/clqms.conf /etc/apache2/sites-available/ sudo a2ensite clqms ``` 3. Enable required modules: ```bash sudo a2enmod rewrite sudo a2enmod deflate sudo a2enmod expires sudo a2enmod headers sudo systemctl restart apache2 ``` ## 3. API Configuration **Important**: The dev proxy (`/api` → `localhost:8000`) doesn't work in production. ### Option 1: Configure API URL Create a `.env.production` file: ``` VITE_API_URL=https://your-api-server.com/api ``` Then rebuild: ```bash pnpm run build ``` ### Option 2: Apache Reverse Proxy Add to your VirtualHost: ```apache ProxyPass /api http://localhost:8000/api ProxyPassReverse /api http://localhost:8000/api ``` Enable proxy module: ```bash sudo a2enmod proxy sudo a2enmod proxy_http sudo systemctl restart apache2 ``` ## 4. SSL/HTTPS (Recommended) Use Let's Encrypt: ```bash sudo apt install certbot python3-certbot-apache sudo certbot --apache -d clqms.example.com ``` ## 5. Subdirectory Deployment If deploying to a subdirectory (e.g., `/clqms/`): 1. Update `svelte.config.js`: ```javascript adapter: adapter({ pages: 'build', assets: 'build', fallback: 'index.html' }), paths: { base: '/clqms' } ``` 2. Rebuild and deploy to `/var/www/html/clqms/` 3. Update `.htaccess` RewriteBase: ```apache RewriteBase /clqms/ ``` ## Troubleshooting ### 404 on refresh - Ensure `mod_rewrite` is enabled - Check `.htaccess` is in the build folder - Verify `AllowOverride All` in Apache config ### API not working - Check browser console for CORS errors - Verify `VITE_API_URL` is set correctly - Test API endpoint directly ### Blank page - Check browser console for errors - Verify all assets loaded (check Network tab) - Ensure `fallback: 'index.html'` is set ## File Structure After Deployment ``` /var/www/html/clqms/ ├── index.html ├── .htaccess ├── _app/ │ ├── immutable/ │ └── ... ├── favicon.png └── ... ``` ## Production Checklist - [ ] Set production API URL - [ ] Enable HTTPS/SSL - [ ] Configure firewall (allow 80/443) - [ ] Set up log rotation - [ ] Configure backup strategy - [ ] Test all routes work after refresh