🢂Wdrażanie aplikacji Laravel przy użyciu Artisan
Poznaj zaawansowane techniki wdrażania aplikacji Laravel przy użyciu poleceń Artisan. Dowiedz się, jak optymalizować aplikację dla środowiska produkcyjnego i zapewnić sprawne przejście od rozwoju do wdrożenia.
Proces wdrażania aplikacji Laravel to kluczowy etap w cyklu życia każdego projektu. Artisan udostępnia szereg narzędzi, które ułatwiają ten proces i pozwalają na optymalizację aplikacji dla środowiska produkcyjnego. W tym artykule przyjrzymy się poleceniom, które są niezbędne dla efektywnego wdrażania aplikacji Laravel.
Podstawy wdrażania aplikacji
Proces wdrażania aplikacji Laravel często wiąże się z wykonaniem kilku poleceń Artisan w celu optymalizacji i przygotowania aplikacji do pracy w środowisku produkcyjnym.
Polecenia php artisan optimize
, php artisan config:cache
, php artisan route:cache
i php artisan view:cache
są kluczowe dla zwiększenia wydajności aplikacji w środowisku produkcyjnym. Przed wdrożeniem często stosuje się również polecenia php artisan down
i php artisan up
do przełączenia aplikacji w tryb konserwacji na czas wdrożenia.
Często podczas wdrożenia wykonuje się również polecenie Composer composer install --optimize-autoloader --no-dev
. Instaluje ono zależności projektu, pomijając pakiety deweloperskie (--no-dev
) i optymalizuje autoloader (--optimize-autoloader
), co przyczynia się do zmniejszenia rozmiaru wdrożonej aplikacji i poprawia wydajność ładowania klas.
W środowisku produkcyjnym, migracje bazy danych często uruchamiane są automatycznie podczas procesu wdrożenia. Można to zrobić za pomocą polecenia php artisan migrate --force
, które wymusza uruchomienie migracji bez konieczności interaktywnego potwierdzenia, co jest typowe dla środowisk produkcyjnych. Należy jednak upewnić się, że migracje są bezpieczne i nie spowodują utraty danych.
W aplikacjach korzystających z kolejek zadań, w środowisku produkcyjnym często uruchamia się workera kolejki w tle za pomocą polecenia php artisan queue:work --daemon
. Pozwala to na asynchroniczne przetwarzanie czasochłonnych zadań bez blokowania odpowiedzi dla użytkownika.
Przykłady użycia przy wdrażaniu
Poniżej znajduje się zestaw praktycznych przykładów komend używanych podczas wdrażania aplikacji Laravel:
# Kompleksowa optymalizacja przed wdrożeniem
php artisan optimize --force
php artisan config:cache
php artisan route:cache
php artisan view:cache
# Uruchomienie migracji w środowisku produkcyjnym bez potwierdzenia
php artisan migrate --force
# Aktualizacja struktury bazy danych bez utraty danych
php artisan migrate --force --seed
# Przełączenie aplikacji w tryb konserwacji z niestandardową wiadomością i czasem oczekiwania
php artisan down --retry=1800
# Tryb konserwacji z dostępem przez sekretny token dla deweloperów
php artisan down --secret="tajny-token-dostepowy"
# Uruchomienie migracji bez przerwania działania aplikacji (nowe w Laravel 8+)
php artisan migrate --force --isolated
# Optymalizacja aplikacji dla konkretnego środowiska
php artisan optimize --env=production
# Czyszczenie plików sesji wygasłych
php artisan session:gc
# Generowanie dokumentacji API (wymaga zainstalowania pakietu)
php artisan apidoc:generate
# Publikowanie zasobów od dostawców (vendors)
php artisan vendor:publish --provider="Provider\ServiceProvider" --tag="config"
# Instalacja Passport dla API OAuth (jeśli używany)
php artisan passport:install
# Resetowanie wszystkich kluczy OAuth (używać ostrożnie!)
php artisan passport:keys --force
# Przygotowanie aplikacji do skalowania horyzontalnego
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan event:cache
php artisan storage:link
# Wyłączenie trybu konserwacji po zakończeniu wdrożenia
php artisan up
Skalowalność i wydajność
Poniżej znajdują się dodatkowe przykłady dotyczące skalowania i optymalizacji wydajności aplikacji Laravel:
# Czyszczenie wszelkich pamięci podręcznych przed wdrożeniem nowej wersji
php artisan optimize:clear
# Optymalizacja buforów dla środowiska produkcyjnego
php artisan optimize
php artisan event:cache
php artisan route:cache
php artisan config:cache
php artisan view:cache
# Upewnienie się, że wszystkie usługi cache zostały wyczyszczone i zregenerowane
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
php artisan event:clear
sleep 2
php artisan event:cache
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan optimize
# Uruchomienie testów przed wdrożeniem
php artisan test --parallel
# Ustawienia dla baz danych w klastrze (np. replikacji)
php artisan config:cache --env=production_cluster
# Obsługa wielu workerów kolejki dla skalowania
php artisan queue:work --queue=high,default,low --sleep=3 --tries=3 --timeout=90 --daemon
Automatyzacja wdrożeń
Podczas automatyzacji wdrożeń w ciągłej integracji i ciągłym dostarczaniu (CI/CD), często używa się następujących poleceń:
# Czysty skrypt wdrożeniowy dla Laravela
php artisan down
git pull origin main
composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan cache:clear
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan queue:restart
php artisan up
# Sprawdzenie gotowości aplikacji do wdrożenia
php artisan about
# Tworzenie kluczy aplikacji podczas pierwszego wdrożenia
php artisan key:generate --force
# Linkowanie storage do public podczas pierwszego wdrożenia
php artisan storage:link
# Publikowanie wszystkich zasobów pakietów
php artisan vendor:publish --all --force
# Wypełnianie pustej bazy danych początkowymi danymi
php artisan db:seed --force
# Sprawdzenie spójności tras
php artisan route:list
Tryb konserwacji
Artisan oferuje rozbudowane opcje zarządzania trybem konserwacji aplikacji:
# Podstawowe włączenie trybu konserwacji
php artisan down
# Tryb konserwacji z niestandardowym kodem odpowiedzi
php artisan down --status=503
# Tryb konserwacji z czasem ponownej próby (w sekundach)
php artisan down --retry=60
# Tryb konserwacji z możliwością dostępu dla określonych IP
php artisan down --allow=192.168.1.1 --allow=192.168.1.2
# Tryb konserwacji z dostępem przez sekretny URL
php artisan down --secret="tajny-token"
# Dostęp przez: https://example.com/tajny-token
# Tryb konserwacji z przekierowaniem do innej strony
php artisan down --redirect=/maintenance
# Tryb konserwacji bez wpływu na określone ścieżki
php artisan down --except=/api/health-check
# Wyłączenie trybu konserwacji
php artisan up
Zarządzanie ustawieniami środowiskowymi
Podczas wdrażania aplikacji Laravel, często konieczne jest zarządzanie różnymi ustawieniami środowiskowymi:
# Generowanie klucza aplikacji
php artisan key:generate
# Generowanie klucza dla określonego środowiska
php artisan key:generate --env=production
# Publiczne przechowywanie plików - tworzenie linków symbolicznych
php artisan storage:link
# Publikowanie zasobów pakietów dla środowiska produkcyjnego
php artisan vendor:publish --tag=public --force
# Czyszczenie pamięci podręcznej konfiguracji
php artisan config:clear
# Buforowanie konfiguracji dla wydajności
php artisan config:cache
Dobre praktyki wdrażania
-
Używaj trybu konserwacji - Zawsze włączaj tryb konserwacji podczas wdrażania, aby uniknąć potencjalnych problemów z użytkownikami korzystającymi z aplikacji w trakcie aktualizacji.
-
Automatyzuj proces - Utwórz skrypt lub używaj narzędzi CI/CD do automatyzacji procesu wdrażania, co minimalizuje ryzyko błędu ludzkiego.
-
Korzystaj z buforowania konfiguracji - W środowisku produkcyjnym zawsze używaj
php artisan config:cache
dla lepszej wydajności. -
Twórz kopie zapasowe - Przed wdrożeniem nowej wersji, twórz kopie zapasowe bazy danych i plików.
-
Testuj przed wdrożeniem - Uruchamiaj testy automatyczne przed każdym wdrożeniem.
-
Monitoruj po wdrożeniu - Po zakończeniu wdrożenia monitoruj aplikację pod kątem błędów i problemów wydajnościowych.
-
Używaj flag
--force
- W środowisku produkcyjnym używaj flag--force
dla poleceń, które mogą wymagać interakcji użytkownika. -
Dokumentuj procedury - Przechowuj dokumentację procesu wdrażania w repozytorium projektu.
-
Wdrażaj stopniowo - Rozważ wdrażanie nowych funkcji stopniowo, wykorzystując feature toggles lub wdrażanie canary.
-
Optymalizuj autoloader - Zawsze używaj
--optimize-autoloader
z Composer, aby przyspieszyć ładowanie klas.