mirror of
https://codeberg.org/PostERG/xamxam.git
synced 2026-05-07 03:29:19 +02:00
More semantically accurate: contains SQLite files, schema, fixtures, test data. Updated all references in code, scripts, docs.
119 lines
2.6 KiB
Markdown
119 lines
2.6 KiB
Markdown
# Server Setup (Manual)
|
|
|
|
Since sudo prompts don't work over SSH in justfile, do the initial setup manually.
|
|
|
|
## One-Time Setup on Server
|
|
|
|
```bash
|
|
# 1. SSH to server
|
|
ssh posterg
|
|
|
|
# 2. Backup current site (recommended)
|
|
sudo cp -r /var/www/html /var/www/html.backup
|
|
|
|
# 3. Create new directory structure
|
|
sudo mkdir -p /var/www/posterg
|
|
|
|
# 4. Set ownership (www-data is the web server user)
|
|
sudo chown www-data:posterg /var/www/posterg
|
|
|
|
# 5. Set permissions (775 = rwxrwxr-x)
|
|
sudo chmod 775 /var/www/posterg
|
|
|
|
# 6. Verify
|
|
ls -ld /var/www/posterg
|
|
# Should show: drwxrwxr-x 2 www-data posterg 4096 ... /var/www/posterg
|
|
|
|
# 7. Exit server
|
|
exit
|
|
```
|
|
|
|
## Deploy from Local Machine
|
|
|
|
```bash
|
|
just deploy
|
|
```
|
|
|
|
## Complete Deployment Process
|
|
|
|
```bash
|
|
# On server (one time)
|
|
ssh posterg
|
|
sudo mkdir -p /var/www/posterg
|
|
sudo chown www-data:posterg /var/www/posterg
|
|
sudo chmod 775 /var/www/posterg
|
|
exit
|
|
|
|
# From local machine
|
|
just deploy # Deploy files
|
|
just deploy-nginx # Update nginx config
|
|
|
|
# On server - apply nginx config
|
|
ssh posterg
|
|
sudo bash /tmp/deploy-production.sh
|
|
sudo systemctl reload nginx
|
|
exit
|
|
|
|
# Verify from local
|
|
just server-status
|
|
```
|
|
|
|
## Important Notes
|
|
|
|
- **Don't delete `/var/www/html/` yet!** Keep it as backup until you confirm the new structure works
|
|
- The new structure uses `/var/www/posterg/public/` as DocumentRoot
|
|
- Nginx must be updated to point to the new location
|
|
|
|
## After Confirming Everything Works
|
|
|
|
Once you've verified the new deployment works:
|
|
|
|
```bash
|
|
ssh posterg
|
|
sudo rm -rf /var/www/html.backup # Remove backup if no longer needed
|
|
sudo rm -rf /var/www/html # Remove old directory
|
|
```
|
|
|
|
## Directory Structure on Server
|
|
|
|
```
|
|
/var/www/
|
|
├── html/ ← OLD (keep as backup for now)
|
|
├── html.backup/ ← BACKUP (can delete later)
|
|
└── posterg/ ← NEW
|
|
├── public/ ← DocumentRoot (nginx serves from here)
|
|
├── includes/
|
|
├── config/
|
|
├── database/
|
|
├── lib/
|
|
└── vendor/
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Permission denied during deploy
|
|
**Cause:** Directory doesn't exist or has wrong ownership
|
|
**Fix:** Run the setup commands above
|
|
|
|
### Nginx 403 Forbidden
|
|
**Cause:** Wrong permissions on files
|
|
**Fix:**
|
|
```bash
|
|
ssh posterg
|
|
cd /var/www/posterg
|
|
sudo chown -R www-data:posterg .
|
|
sudo find . -type d -exec chmod 755 {} \;
|
|
sudo find . -type f -exec chmod 644 {} \;
|
|
sudo chmod 775 database/
|
|
sudo chmod 660 database/*.db
|
|
```
|
|
|
|
### Database connection errors
|
|
**Cause:** Database file permissions
|
|
**Fix:**
|
|
```bash
|
|
ssh posterg
|
|
sudo chown www-data:posterg /var/www/posterg/storage/test.db
|
|
sudo chmod 660 /var/www/posterg/storage/test.db
|
|
```
|