auto-claude: subtask-3-6 - Add deployment and production information
This commit is contained in:
parent
47b4ca039b
commit
40ff7e950e
186
README.md
186
README.md
@ -455,6 +455,192 @@ docker exec -i nordabiz-postgres psql -U nordabiz_app -d nordabiz < database/sch
|
||||
|
||||
For more detailed database setup and management, see `database/README.md`.
|
||||
|
||||
## Deployment & Production
|
||||
|
||||
The application is live in production at **https://nordabiznes.pl** since November 23, 2025.
|
||||
|
||||
### Production Environment
|
||||
|
||||
| Component | Details |
|
||||
|-----------|---------|
|
||||
| **Server** | NORDABIZ-01 (VM 249, IP: 10.22.68.249) |
|
||||
| **Database** | PostgreSQL 15 on 10.22.68.249:5432 |
|
||||
| **Reverse Proxy** | Nginx Proxy Manager on R11-REVPROXY-01 (VM 119, IP: 10.22.68.250) |
|
||||
| **Domain** | nordabiznes.pl (DNS managed via OVH) |
|
||||
| **SSL/TLS** | Let's Encrypt with automatic renewal |
|
||||
| **WSGI Server** | Gunicorn |
|
||||
| **Service Manager** | systemd (`nordabiznes.service`) |
|
||||
| **Application Path** | `/var/www/nordabiznes` |
|
||||
| **Application User** | `www-data` |
|
||||
|
||||
### Git Repositories
|
||||
|
||||
The project maintains two Git remotes for redundancy and deployment:
|
||||
|
||||
| Remote | Repository | Purpose |
|
||||
|--------|------------|---------|
|
||||
| **origin** (GitHub) | `git@github.com:pienczyn/nordabiz.git` | Cloud backup, public access, CI/CD ready |
|
||||
| **inpi** (Gitea) | `git@10.22.68.180:maciejpi/nordabiz.git` | Internal backup, deployment source |
|
||||
|
||||
**Gitea Access:** https://10.22.68.180:3000/ (requires HTTPS)
|
||||
|
||||
### Deployment Workflow
|
||||
|
||||
```
|
||||
┌─────────────┐ git push ┌─────────────┐ git pull ┌─────────────┐
|
||||
│ Development │ ────────────► │ Gitea │ ◄──────────── │ Production │
|
||||
│ (Local) │ │ (INPI) │ │ Server │
|
||||
└─────────────┘ └─────────────┘ └─────────────┘
|
||||
│
|
||||
└──── git push ────► GitHub (cloud backup)
|
||||
```
|
||||
|
||||
#### Deployment Steps
|
||||
|
||||
**1. Push Changes from Development:**
|
||||
|
||||
```bash
|
||||
# Push to both remotes (from local development)
|
||||
git push origin master && git push inpi master
|
||||
```
|
||||
|
||||
**2. Deploy to Production:**
|
||||
|
||||
```bash
|
||||
# SSH to production server
|
||||
ssh maciejpi@10.22.68.249
|
||||
|
||||
# Navigate to application directory
|
||||
cd /var/www/nordabiznes
|
||||
|
||||
# Pull latest changes (as www-data user)
|
||||
sudo -u www-data git pull
|
||||
|
||||
# Restart the application service
|
||||
sudo systemctl restart nordabiznes
|
||||
|
||||
# Verify deployment
|
||||
curl -I https://nordabiznes.pl/health
|
||||
# Expected: HTTP/2 200
|
||||
```
|
||||
|
||||
#### Pre-Deployment Checklist
|
||||
|
||||
Before deploying to production, always:
|
||||
|
||||
1. **Test locally** - Verify changes work in development environment
|
||||
2. **Syntax check** - Run `python -m py_compile app.py` to check for syntax errors
|
||||
3. **Database migrations** - Apply any schema changes to production database
|
||||
4. **Environment variables** - Ensure new `.env` variables are configured on production
|
||||
5. **Dependencies** - Update `requirements.txt` if new packages were added
|
||||
|
||||
**For comprehensive deployment procedures, see [`deployment_checklist.md`](deployment_checklist.md).**
|
||||
|
||||
### Production Configuration
|
||||
|
||||
**Critical NPM Proxy Configuration:**
|
||||
|
||||
```
|
||||
Nginx Proxy Manager (10.22.68.250) → Backend (10.22.68.249:5000) ✓
|
||||
```
|
||||
|
||||
**⚠️ IMPORTANT:** The NPM proxy must forward to port **5000** (Gunicorn), NOT port 80 (nginx). Forwarding to port 80 causes redirect loops.
|
||||
|
||||
**Environment Variables:**
|
||||
|
||||
Production uses similar `.env` configuration as development, but with production-specific values:
|
||||
- `FLASK_ENV=production`
|
||||
- `DATABASE_URL=postgresql://nordabiz_app:***@localhost:5432/nordabiz`
|
||||
- `APP_URL=https://nordabiznes.pl`
|
||||
- Production API keys (Google Gemini, PageSpeed, Places, etc.)
|
||||
|
||||
### Production Monitoring & Maintenance
|
||||
|
||||
**Service Management:**
|
||||
|
||||
```bash
|
||||
# Check service status
|
||||
sudo systemctl status nordabiznes
|
||||
|
||||
# View application logs
|
||||
sudo journalctl -u nordabiznes -f
|
||||
|
||||
# Restart service
|
||||
sudo systemctl restart nordabiznes
|
||||
|
||||
# Stop service
|
||||
sudo systemctl stop nordabiznes
|
||||
|
||||
# Start service
|
||||
sudo systemctl start nordabiznes
|
||||
```
|
||||
|
||||
**Database Backup:**
|
||||
|
||||
Production server uses Proxmox Backup Server for automated VM snapshots and disaster recovery.
|
||||
|
||||
**Health Check:**
|
||||
|
||||
The application provides a health endpoint for monitoring:
|
||||
- **URL:** https://nordabiznes.pl/health
|
||||
- **Expected Response:** `{"status": "healthy"}`
|
||||
|
||||
### Production Access
|
||||
|
||||
**SSH Access:**
|
||||
|
||||
```bash
|
||||
# Always SSH as maciejpi user (NOT root!)
|
||||
ssh maciejpi@10.22.68.249
|
||||
```
|
||||
|
||||
**Test Accounts:**
|
||||
|
||||
For testing functionality in production:
|
||||
|
||||
| Account | Email | Role |
|
||||
|---------|-------|------|
|
||||
| Test User | `test@nordabiznes.pl` | Regular user (company directory, search, chat) |
|
||||
| Test Admin | `testadmin@nordabiznes.pl` | Administrator (admin panels, moderation) |
|
||||
|
||||
**⚠️ IMPORTANT:** Always use test accounts for production verification. Never test with real user accounts.
|
||||
|
||||
### Troubleshooting Production Issues
|
||||
|
||||
**Application Not Responding:**
|
||||
|
||||
```bash
|
||||
# Check if service is running
|
||||
sudo systemctl status nordabiznes
|
||||
|
||||
# Check application logs for errors
|
||||
sudo journalctl -u nordabiznes -n 100
|
||||
|
||||
# Restart service
|
||||
sudo systemctl restart nordabiznes
|
||||
```
|
||||
|
||||
**Database Connection Issues:**
|
||||
|
||||
```bash
|
||||
# Check PostgreSQL is running
|
||||
sudo systemctl status postgresql
|
||||
|
||||
# Test database connectivity
|
||||
psql -U nordabiz_app -d nordabiz -h localhost -c "SELECT 1;"
|
||||
```
|
||||
|
||||
**Redirect Loop / 502 Errors:**
|
||||
|
||||
Verify NPM proxy configuration forwards to port 5000:
|
||||
```bash
|
||||
curl -I https://nordabiznes.pl/health
|
||||
```
|
||||
|
||||
If issues persist, check NPM configuration on R11-REVPROXY-01 (Proxy Host ID: 27).
|
||||
|
||||
**For detailed incident reports and troubleshooting guides, see `docs/INCIDENT_REPORT_20260102.md`.**
|
||||
|
||||
## Roadmap & Future Enhancements
|
||||
|
||||
While the platform is fully functional and in production, the following features are planned for future releases:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user