updated prod deployment frontend
This commit is contained in:
parent
5604b1d05b
commit
a2eac2a1d5
|
|
@ -0,0 +1,193 @@
|
||||||
|
# 🔧 Update API URL for Production
|
||||||
|
|
||||||
|
Your Flutter app is currently configured to use `localhost:3000` for API calls.
|
||||||
|
For production, you need to change it to your server IP: `192.168.8.148`
|
||||||
|
|
||||||
|
## 📝 File to Update
|
||||||
|
|
||||||
|
**File:** `luckychit/lib/core/services/api_service.dart`
|
||||||
|
|
||||||
|
**Line 5:** Change from:
|
||||||
|
```dart
|
||||||
|
static const String baseUrl = 'http://localhost:3000/api';
|
||||||
|
```
|
||||||
|
|
||||||
|
To:
|
||||||
|
```dart
|
||||||
|
static const String baseUrl = 'http://192.168.8.148:3000/api';
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Three Ways to Deploy
|
||||||
|
|
||||||
|
### Option 1: Automated Script (Recommended)
|
||||||
|
|
||||||
|
Upload `deploy-frontend.sh` to your server and run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# On your server (as root)
|
||||||
|
cd /home/luckychit/apps/chitfund
|
||||||
|
chmod +x deploy-frontend.sh
|
||||||
|
./deploy-frontend.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
This script will:
|
||||||
|
- ✅ Backup current files
|
||||||
|
- ✅ Update API URL automatically
|
||||||
|
- ✅ Build Flutter web app
|
||||||
|
- ✅ Deploy to Nginx
|
||||||
|
- ✅ Restore original file for future edits
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Option 2: Quick One-Liner
|
||||||
|
|
||||||
|
Upload `deploy-frontend-simple.sh` and run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# On your server (as root)
|
||||||
|
chmod +x deploy-frontend-simple.sh
|
||||||
|
./deploy-frontend-simple.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Option 3: Manual Steps
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Update API URL
|
||||||
|
cd /home/luckychit/apps/chitfund/luckychit
|
||||||
|
nano lib/core/services/api_service.dart
|
||||||
|
# Change line 5 to: static const String baseUrl = 'http://192.168.8.148:3000/api';
|
||||||
|
|
||||||
|
# 2. Build
|
||||||
|
flutter pub get
|
||||||
|
flutter build web --release
|
||||||
|
|
||||||
|
# 3. Deploy
|
||||||
|
cp -r build/web/* /var/www/luckychit/
|
||||||
|
chown -R www-data:www-data /var/www/luckychit
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🌐 Access Your App
|
||||||
|
|
||||||
|
After deployment:
|
||||||
|
- **Frontend:** http://192.168.8.148
|
||||||
|
- **API Health:** http://192.168.8.148:3000/health
|
||||||
|
- **API Base:** http://192.168.8.148:3000/api
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔄 Update Process
|
||||||
|
|
||||||
|
When you need to update the frontend:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Pull latest code
|
||||||
|
cd /home/luckychit/apps/chitfund
|
||||||
|
git pull
|
||||||
|
|
||||||
|
# Run deployment script
|
||||||
|
cd luckychit
|
||||||
|
./deploy-frontend.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚠️ Important Notes
|
||||||
|
|
||||||
|
1. **Development vs Production:**
|
||||||
|
- Keep `localhost:3000` in your local code
|
||||||
|
- Only change to server IP when deploying to production
|
||||||
|
- The automated scripts handle this for you
|
||||||
|
|
||||||
|
2. **CORS Settings:**
|
||||||
|
- Your backend `.env` should already allow this IP
|
||||||
|
- Check: `ALLOWED_ORIGINS=http://192.168.8.148`
|
||||||
|
|
||||||
|
3. **Firewall:**
|
||||||
|
- Make sure port 80 (HTTP) is open
|
||||||
|
- Make sure port 3000 (API) is open
|
||||||
|
- Check: `sudo ufw status`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🐛 Troubleshooting
|
||||||
|
|
||||||
|
### Can't connect to API
|
||||||
|
```bash
|
||||||
|
# Check backend is running
|
||||||
|
pm2 status
|
||||||
|
|
||||||
|
# Test API directly
|
||||||
|
curl http://192.168.8.148:3000/health
|
||||||
|
|
||||||
|
# Check firewall
|
||||||
|
sudo ufw status | grep 3000
|
||||||
|
```
|
||||||
|
|
||||||
|
### Frontend shows blank page
|
||||||
|
```bash
|
||||||
|
# Check Nginx logs
|
||||||
|
sudo tail -f /var/log/nginx/error.log
|
||||||
|
|
||||||
|
# Check files deployed
|
||||||
|
ls -la /var/www/luckychit/
|
||||||
|
|
||||||
|
# Restart Nginx
|
||||||
|
sudo systemctl restart nginx
|
||||||
|
```
|
||||||
|
|
||||||
|
### API URL not updated
|
||||||
|
```bash
|
||||||
|
# Verify the change in built files
|
||||||
|
grep -r "192.168.8.148" /var/www/luckychit/
|
||||||
|
|
||||||
|
# If not found, rebuild and redeploy
|
||||||
|
cd /home/luckychit/apps/chitfund/luckychit
|
||||||
|
./deploy-frontend.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔐 Production Best Practices
|
||||||
|
|
||||||
|
For production, consider:
|
||||||
|
|
||||||
|
1. **Use Environment Variables:**
|
||||||
|
Create a config file instead of hardcoding IPs
|
||||||
|
|
||||||
|
2. **Use Domain Name:**
|
||||||
|
Setup a domain and use it instead of IP
|
||||||
|
|
||||||
|
3. **Enable HTTPS:**
|
||||||
|
```bash
|
||||||
|
sudo apt install certbot python3-certbot-nginx
|
||||||
|
sudo certbot --nginx -d yourdomain.com
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Update API URL to domain:**
|
||||||
|
```dart
|
||||||
|
static const String baseUrl = 'https://api.yourdomain.com';
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📋 Quick Reference
|
||||||
|
|
||||||
|
| Task | Command |
|
||||||
|
|------|---------|
|
||||||
|
| Deploy frontend | `./deploy-frontend.sh` |
|
||||||
|
| Quick deploy | `./deploy-frontend-simple.sh` |
|
||||||
|
| Check backend | `pm2 status` |
|
||||||
|
| View API logs | `pm2 logs luckychit-api` |
|
||||||
|
| Test API | `curl http://192.168.8.148:3000/health` |
|
||||||
|
| View web logs | `sudo tail -f /var/log/nginx/access.log` |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Good luck! 🚀
|
||||||
|
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
#!/bin/bash
|
||||||
|
###############################################################################
|
||||||
|
# Simple Frontend Deployment - Quick Version
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
SERVER_IP="192.168.8.148"
|
||||||
|
cd /home/luckychit/apps/chitfund/luckychit
|
||||||
|
|
||||||
|
echo "🔧 Updating API URL..."
|
||||||
|
sed -i "s|http://localhost:3000/api|http://${SERVER_IP}:3000/api|g" lib/core/services/api_service.dart
|
||||||
|
|
||||||
|
echo "📦 Getting dependencies..."
|
||||||
|
flutter pub get
|
||||||
|
|
||||||
|
echo "🏗️ Building web app..."
|
||||||
|
flutter build web --release
|
||||||
|
|
||||||
|
echo "🚀 Deploying..."
|
||||||
|
mkdir -p /var/www/luckychit
|
||||||
|
cp -r build/web/* /var/www/luckychit/
|
||||||
|
chown -R www-data:www-data /var/www/luckychit
|
||||||
|
|
||||||
|
echo "🔄 Restoring original file..."
|
||||||
|
git checkout lib/core/services/api_service.dart 2>/dev/null || sed -i "s|http://${SERVER_IP}:3000/api|http://localhost:3000/api|g" lib/core/services/api_service.dart
|
||||||
|
|
||||||
|
echo "✅ Done! Visit: http://${SERVER_IP}"
|
||||||
|
|
||||||
|
|
@ -0,0 +1,199 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# LuckyChit Frontend Deployment Script
|
||||||
|
# Deploys Flutter Web App to Nginx
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
set -e # Exit on error
|
||||||
|
|
||||||
|
# Colors
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
BLUE='\033[0;34m'
|
||||||
|
RED='\033[0;31m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
# Configuration
|
||||||
|
SERVER_IP="192.168.8.148"
|
||||||
|
API_URL="http://${SERVER_IP}:3000/api"
|
||||||
|
PROJECT_DIR="/home/luckychit/apps/chitfund/luckychit"
|
||||||
|
WEB_ROOT="/var/www/luckychit"
|
||||||
|
API_SERVICE_FILE="lib/core/services/api_service.dart"
|
||||||
|
|
||||||
|
print_info() {
|
||||||
|
echo -e "${BLUE}ℹ️ $1${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
print_success() {
|
||||||
|
echo -e "${GREEN}✅ $1${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
print_error() {
|
||||||
|
echo -e "${RED}❌ $1${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
print_header() {
|
||||||
|
echo ""
|
||||||
|
echo -e "${GREEN}╔════════════════════════════════════════════════════════╗${NC}"
|
||||||
|
echo -e "${GREEN}║ LuckyChit Frontend Deployment Script ║${NC}"
|
||||||
|
echo -e "${GREEN}╚════════════════════════════════════════════════════════╝${NC}"
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Main Deployment
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
print_header
|
||||||
|
|
||||||
|
# Check if running as root
|
||||||
|
if [ "$EUID" -ne 0 ]; then
|
||||||
|
print_error "Please run as root (sudo ./deploy-frontend.sh)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
print_info "Deployment Configuration:"
|
||||||
|
echo " Server IP: $SERVER_IP"
|
||||||
|
echo " API URL: $API_URL"
|
||||||
|
echo " Project Dir: $PROJECT_DIR"
|
||||||
|
echo " Web Root: $WEB_ROOT"
|
||||||
|
echo ""
|
||||||
|
read -p "Continue with deployment? (y/n) " -n 1 -r
|
||||||
|
echo
|
||||||
|
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||||
|
print_error "Deployment cancelled"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Step 1: Navigate to project directory
|
||||||
|
###############################################################################
|
||||||
|
print_info "Step 1/8: Navigating to project directory..."
|
||||||
|
cd $PROJECT_DIR
|
||||||
|
print_success "In directory: $(pwd)"
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Step 2: Create backup of current API service
|
||||||
|
###############################################################################
|
||||||
|
print_info "Step 2/8: Creating backup of API service..."
|
||||||
|
if [ -f "$API_SERVICE_FILE" ]; then
|
||||||
|
cp $API_SERVICE_FILE ${API_SERVICE_FILE}.backup
|
||||||
|
print_success "Backup created: ${API_SERVICE_FILE}.backup"
|
||||||
|
else
|
||||||
|
print_error "API service file not found: $API_SERVICE_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Step 3: Update API URL
|
||||||
|
###############################################################################
|
||||||
|
print_info "Step 3/8: Updating API URL to $API_URL..."
|
||||||
|
|
||||||
|
# Replace localhost URL with server IP
|
||||||
|
sed -i "s|http://localhost:3000/api|$API_URL|g" $API_SERVICE_FILE
|
||||||
|
|
||||||
|
# Verify the change
|
||||||
|
if grep -q "$API_URL" $API_SERVICE_FILE; then
|
||||||
|
print_success "API URL updated successfully"
|
||||||
|
else
|
||||||
|
print_error "Failed to update API URL"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Step 4: Update Flutter
|
||||||
|
###############################################################################
|
||||||
|
print_info "Step 4/8: Updating Flutter..."
|
||||||
|
cd /opt/flutter
|
||||||
|
git pull origin stable
|
||||||
|
flutter upgrade
|
||||||
|
print_success "Flutter updated: $(flutter --version | head -n 1)"
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Step 5: Get dependencies
|
||||||
|
###############################################################################
|
||||||
|
print_info "Step 5/8: Getting Flutter dependencies..."
|
||||||
|
cd $PROJECT_DIR
|
||||||
|
flutter pub get
|
||||||
|
print_success "Dependencies installed"
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Step 6: Build Flutter web app
|
||||||
|
###############################################################################
|
||||||
|
print_info "Step 6/8: Building Flutter web app..."
|
||||||
|
flutter build web --release --web-renderer html
|
||||||
|
print_success "Flutter web app built successfully"
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Step 7: Deploy to web server
|
||||||
|
###############################################################################
|
||||||
|
print_info "Step 7/8: Deploying to web server..."
|
||||||
|
|
||||||
|
# Create web root if it doesn't exist
|
||||||
|
mkdir -p $WEB_ROOT
|
||||||
|
|
||||||
|
# Backup existing deployment
|
||||||
|
if [ -d "$WEB_ROOT" ] && [ "$(ls -A $WEB_ROOT)" ]; then
|
||||||
|
BACKUP_DIR="${WEB_ROOT}_backup_$(date +%Y%m%d_%H%M%S)"
|
||||||
|
print_info "Backing up existing deployment to $BACKUP_DIR"
|
||||||
|
cp -r $WEB_ROOT $BACKUP_DIR
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Copy new build
|
||||||
|
cp -r build/web/* $WEB_ROOT/
|
||||||
|
|
||||||
|
# Set proper permissions
|
||||||
|
chown -R www-data:www-data $WEB_ROOT
|
||||||
|
chmod -R 755 $WEB_ROOT
|
||||||
|
|
||||||
|
print_success "Deployed to $WEB_ROOT"
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Step 8: Verify deployment
|
||||||
|
###############################################################################
|
||||||
|
print_info "Step 8/8: Verifying deployment..."
|
||||||
|
|
||||||
|
if [ -f "$WEB_ROOT/index.html" ]; then
|
||||||
|
print_success "Deployment verified - index.html exists"
|
||||||
|
else
|
||||||
|
print_error "Deployment failed - index.html not found"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Cleanup
|
||||||
|
###############################################################################
|
||||||
|
print_info "Restoring original API service file for future builds..."
|
||||||
|
if [ -f "${API_SERVICE_FILE}.backup" ]; then
|
||||||
|
mv ${API_SERVICE_FILE}.backup $API_SERVICE_FILE
|
||||||
|
print_success "Original API service restored"
|
||||||
|
fi
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Complete
|
||||||
|
###############################################################################
|
||||||
|
echo ""
|
||||||
|
echo -e "${GREEN}╔════════════════════════════════════════════════════════╗${NC}"
|
||||||
|
echo -e "${GREEN}║ Deployment Complete! 🎉 ║${NC}"
|
||||||
|
echo -e "${GREEN}╚════════════════════════════════════════════════════════╝${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
print_success "Frontend deployed successfully!"
|
||||||
|
echo ""
|
||||||
|
print_info "Access your application at:"
|
||||||
|
echo " 🌐 http://$SERVER_IP"
|
||||||
|
echo ""
|
||||||
|
print_info "Backend API is at:"
|
||||||
|
echo " 🔌 http://$SERVER_IP:3000/api"
|
||||||
|
echo " 💚 Health: http://$SERVER_IP:3000/health"
|
||||||
|
echo ""
|
||||||
|
print_info "Next steps:"
|
||||||
|
echo " 1. Test the application in your browser"
|
||||||
|
echo " 2. Check backend is running: pm2 status"
|
||||||
|
echo " 3. View logs: pm2 logs luckychit-api"
|
||||||
|
echo ""
|
||||||
|
print_info "To rollback, use the backup at:"
|
||||||
|
echo " $(ls -td ${WEB_ROOT}_backup_* 2>/dev/null | head -1)"
|
||||||
|
echo ""
|
||||||
|
|
||||||
Loading…
Reference in New Issue