Przejdź do głównej zawartości

Aktualizacja systemu

Dokumentacja dla deweloperów

Ostatnia aktualizacja: 2025-12-28

  1. Przegląd procesu aktualizacji
  2. Aktualizacja backendu (Laravel)
  3. Aktualizacja frontendu (React)
  4. Aktualizacja kontenerów Docker
  5. Migracje bazy danych
  6. Rollback - cofanie zmian
  7. Checklist aktualizacji

┌─────────────────────────────────────────────────────────────────┐
│ Proces aktualizacji │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. Backup ─────▶ 2. Pull ─────▶ 3. Dependencies ─────▶ 4. Build │
│ bazy git composer/npm frontend │
│ │
│ 5. Migrate ────▶ 6. Cache ────▶ 7. Restart ─────▶ 8. Verify │
│ database clear services health │
│ │
└─────────────────────────────────────────────────────────────────┘
Okno terminala
# 1. Sprawdź aktualną wersję
cat /home/ready4docs/public_html/frontend/src/lib/version.ts
# 2. Sprawdź status git
cd /home/ready4docs/public_html
git status
git log --oneline -5
# 3. Wykonaj backup bazy
sudo systemctl start ready4docs-backup.service

Okno terminala
cd /home/ready4docs/public_html/backend
# 1. Pobierz zmiany z repozytorium
git pull origin main
# 2. Zainstaluj zależności PHP
composer install --no-dev --optimize-autoloader
# 3. Uruchom migracje
php artisan migrate --force
# 4. Wyczyść cache
php artisan config:clear
php artisan cache:clear
php artisan route:clear
php artisan view:clear
# 5. Zbuduj cache (produkcja)
php artisan config:cache
php artisan route:cache
php artisan view:cache
# 6. Restart PHP-FPM
sudo systemctl restart php8.4-fpm
# 7. Restart queue worker
docker restart readynextos-queue
Okno terminala
cd /home/ready4docs/public_html/backend
git pull origin main
php artisan config:clear
php artisan cache:clear
sudo systemctl restart php8.4-fpm
Okno terminala
cd /home/ready4docs/public_html/backend
# Aktualizuj wszystkie pakiety
composer update --no-dev
# Aktualizuj konkretny pakiet
composer update laravel/framework
# Po aktualizacji
php artisan config:clear
sudo systemctl restart php8.4-fpm

Okno terminala
cd /home/ready4docs/public_html/frontend
# 1. Pobierz zmiany
git pull origin main
# 2. Zainstaluj zależności
npm ci
# 3. Zbuduj produkcyjną wersję
npm run build
# 4. Sprawdź czy build się powiódł
ls -la dist/
Okno terminala
cd /home/ready4docs/public_html/frontend
npm run build
Okno terminala
cd /home/ready4docs/public_html/frontend
# Sprawdź przestarzałe pakiety
npm outdated
# Aktualizuj wszystkie
npm update
# Aktualizuj konkretny pakiet
npm update @tanstack/react-query
# Po aktualizacji - rebuild
npm run build
Okno terminala
# Sprawdź wersję aplikacji
grep -A5 "VERSION" /home/ready4docs/public_html/frontend/src/lib/version.ts

Watchtower automatycznie aktualizuje kontenery z GHCR co 6 godzin.

Okno terminala
# Sprawdź status Watchtower
docker logs readynextos-watchtower --tail 20
# Wymuś natychmiastowe sprawdzenie
docker exec readynextos-watchtower /watchtower --run-once
Okno terminala
cd /home/ready4docs
# 1. Pobierz nowe obrazy
docker compose pull
# 2. Uruchom z nowymi obrazami
docker compose up -d
# 3. Usuń stare obrazy
docker image prune -f
Okno terminala
cd /home/ready4docs
# Przykład: aktualizacja Redis
docker compose pull redis
docker compose up -d redis
Okno terminala
# 1. Zaloguj się do GHCR (jeśli nie zalogowany)
echo $GITHUB_TOKEN | docker login ghcr.io -u USERNAME --password-stdin
# 2. Pobierz najnowsze obrazy
docker pull ghcr.io/milocha/ready4docs-php:latest
docker pull ghcr.io/milocha/ready4docs-donut-ocr:latest
# 3. Restart kontenerów
docker compose up -d reverb queue-worker donut-ocr

Okno terminala
cd /home/ready4docs/public_html/backend
# Sprawdź status migracji
php artisan migrate:status
# Uruchom nowe migracje
php artisan migrate --force
# Uruchom z verbose
php artisan migrate --force -v
Okno terminala
# Co zostanie wykonane (dry-run)
php artisan migrate --pretend
Okno terminala
# Cofnij ostatnią partię migracji
php artisan migrate:rollback
# Cofnij konkretną liczbę kroków
php artisan migrate:rollback --step=3
Okno terminala
# Migracja + seedy (tylko dev!)
php artisan migrate:fresh --seed

Okno terminala
cd /home/ready4docs/public_html
# Sprawdź historię
git log --oneline -10
# Cofnij do konkretnego commita
git checkout <commit-hash>
# LUB przywróć poprzednią wersję
git revert HEAD
# Po rollback - przebuduj
cd backend && composer install --no-dev
cd ../frontend && npm ci && npm run build
Okno terminala
cd /home/ready4docs/public_html/frontend
# Sprawdź poprzednie buildy (jeśli były archiwizowane)
ls -la /home/ready4docs/backups/frontend/
# Przywróć poprzedni build
rm -rf dist/
cp -r /home/ready4docs/backups/frontend/dist-YYYYMMDD dist/
Okno terminala
# 1. Zatrzymaj aplikację
sudo systemctl stop php8.4-fpm
docker stop readynextos-queue readynextos-reverb
# 2. Przywróć z backupu
gunzip -c /home/ready4docs/backup/db/ready4docs_YYYYMMDD_030000.sql.gz | \
docker exec -i ready4docs-db psql -U ready4docs ready4docs
# 3. Uruchom aplikację
sudo systemctl start php8.4-fpm
docker start readynextos-queue readynextos-reverb
# 4. Wyczyść cache
cd /home/ready4docs/public_html/backend
php artisan cache:clear

  • Backup bazy danych wykonany
  • Sprawdzono status git (git status - brak lokalnych zmian)
  • Poinformowano użytkowników o planowanym maintenance
  • Sprawdzono wolne miejsce na dysku (df -h)
  • git pull origin main - bez konfliktów
  • composer install - bez błędów
  • npm ci && npm run build - build OK
  • php artisan migrate - migracje OK
  • Cache wyczyszczony
  • PHP-FPM zrestartowany
  • Queue worker zrestartowany
  • Strona ładuje się poprawnie
  • Logowanie działa
  • API odpowiada (sprawdź /backend/api/health)
  • WebSocket działa (sprawdź powiadomienia)
  • Sprawdź logi błędów
Okno terminala
# Szybka weryfikacja
curl -s https://your-domain.com/backend/api/health | jq
# Sprawdź logi błędów
tail -20 /home/ready4docs/public_html/backend/storage/logs/laravel.log

Zapisz jako /home/ready4docs/scripts/update.sh:

#!/bin/bash
set -e
echo "=== ReadyNextOS Update Script ==="
echo "Started at: $(date)"
cd /home/ready4docs/public_html
# 1. Backup
echo "[1/8] Creating backup..."
sudo systemctl start ready4docs-backup.service
# 2. Pull
echo "[2/8] Pulling latest changes..."
git pull origin main
# 3. Backend dependencies
echo "[3/8] Installing PHP dependencies..."
cd backend
composer install --no-dev --optimize-autoloader
# 4. Migrations
echo "[4/8] Running migrations..."
php artisan migrate --force
# 5. Clear cache
echo "[5/8] Clearing cache..."
php artisan config:clear
php artisan cache:clear
php artisan route:clear
php artisan view:clear
# 6. Build cache
echo "[6/8] Building cache..."
php artisan config:cache
php artisan route:cache
# 7. Frontend
echo "[7/8] Building frontend..."
cd ../frontend
npm ci
npm run build
# 8. Restart services
echo "[8/8] Restarting services..."
sudo systemctl restart php8.4-fpm
docker restart readynextos-queue readynextos-reverb
echo "=== Update completed at: $(date) ==="

Użycie:

Okno terminala
chmod +x /home/ready4docs/scripts/update.sh
sudo /home/ready4docs/scripts/update.sh

W przypadku problemów z aktualizacją:

  1. Sprawdź logi: tail -100 /home/ready4docs/public_html/backend/storage/logs/laravel.log
  2. Sprawdź status serwisów: docker ps i sudo systemctl status php8.4-fpm
  3. Przywróć z backupu jeśli konieczne