Motyw
SSR i scheduler
SSR jest opcjonalnym trybem renderowania stron Inertia z resources/js/site. Przy wyłączonym SSR Laravel nadal zwraca dokument z widoku resources/views/site.blade.php, który renderuje metadane SEO. Ustawienia domyślne są w config/inertia.php; SSR jest domyślnie wyłączony.
Lokalne włączanie SSR opisuje Praca lokalna.
Włączenie SSR na serwerze
- Ustaw
INERTIA_SSR_ENABLED=truew.envaplikacji. - Wyczyść cache konfiguracji:
php artisan config:clear. - Zbuduj klienta i bundle SSR:
npm run build:ssr. Skrypt wykonujevp buildorazvp build --ssr; bundle SSR trafia dobootstrap/ssr. - Wyślij
public/buildibootstrap/ssrna serwer. Oba katalogi są w.gitignore; przy wdrożeniu przez phploy wysyła jeinclude[]. - Uruchom
php artisan ssr:ensurei sprawdź logi, jeśli serwer nie odpowiada. Wdrożenie przez phploy restartuje serwer SSR samo. - Skonfiguruj scheduler, aby
ssr:ensurepilnował procesu co minutę.
Scheduler i cron
routes/console.php rejestruje ssr:ensure co minutę z withoutOverlapping(5) oraz seo:sitemap raz dziennie. ssr:ensure nic nie robi, gdy SSR jest wyłączony lub serwer odpowiada na health check. Gdy proces nie działa, sprawdza obecność bundle’a i uruchamia inertia:start-ssr jako proces w tle.
Aby dodać wpis do crontaba bieżącego użytkownika, uruchom:
bash
php artisan mb:schedule-addKomenda dopisuje * * * * * <PHP_BINARY> <ścieżka-projektu>/artisan schedule:run >> /dev/null 2>&1, jeśli wpis jeszcze nie istnieje. Cron uruchamia cały harmonogram Laravel: poza kontrolą procesu SSR codziennie generuje on sitemapę z opublikowanych stron i artykułów oraz synchronizuje odnośnik do niej w robots.txt.
Konfiguracja procesu
| Zmienna | Działanie |
|---|---|
INERTIA_SSR_ENABLED | Włącza SSR; domyślnie false. |
INERTIA_SSR_URL | Adres endpointu SSR; domyślnie http://127.0.0.1:13714. Zmień go, jeśli serwer używa innego hosta lub portu. |
INERTIA_SSR_RUNTIME | Polecenie uruchamiające Node; domyślnie node. Jeśli cron nie widzi Node w PATH, ustaw ścieżkę do binarki. |
INERTIA_SSR_ENSURE_BUNDLE_EXISTS | Domyślnie false: brak bundle’a SSR nie jest błędem. |
INERTIA_SSR_THROW_ON_ERROR | Domyślnie false: błąd SSR nie przerywa żądania. |
Po zmianie .env wyczyść cache konfiguracji i ponownie uruchom php artisan ssr:ensure. Przy INERTIA_SSR_ENABLED=false harmonogram nie uruchamia procesu SSR, a witryna nadal działa bez niego.
Ścieżka do Node
Cron zwykle ma uboższy PATH niż terminal, więc node zainstalowany przez menedżer wersji może nie być w nim widoczny. Właściwa wartość INERTIA_SSR_RUNTIME zależy od środowiska. Ścieżkę do binarki pokażą na przykład:
bash
volta which node # Volta
ls -d ~/.nvm/versions/node/*/bin/node # nvm
readlink -f "$(which node)" # instalacja systemowaDiagnozowanie
SSR bundle not found— wykonajnpm run build:ssri upewnij się, żebootstrap/ssrjest na serwerze.SSR runtime "node" not found on PATH— ustawINERTIA_SSR_RUNTIMEzgodnie z sekcją Ścieżka do Node. To ostrzeżenie może pojawiać się w logu także po ustawieniu ścieżki, mimo że serwer wstał; o tym, czy proces działa, rozstrzygassr-process.log.exec() is disabled—ssr:ensurenie może wystartować procesu, jeśli PHP maexecna liściedisable_functions; sprawdź konfigurację PHP hostingu.- Serwer nie wstaje po poleceniu — sprawdź
storage/logs/ssr/ssr-RRRR-MM-DD.log(decyzjessr:ensure) orazstorage/logs/ssr/ssr-process.log(wyjście procesu Node).