Deploy-Anleitung: echte Server-Pfade statt Platzhalter

B1 auf dem Webspace durchgeführt: PHP-CLI 8.3.29 unter /usr/bin/php, Composer
2.9.8 global, Git 2.43. Der Ordnername tsv08kulmbach.de ist von der alten
CMS-Seite belegt (die der Rückweg beim Umschalten ist), der neue heißt deshalb
tsv08kulmbach-website.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
This commit is contained in:
2026-07-31 16:19:22 +02:00
parent f0ec8614b2
commit 4f1bfce8b2

View File

@@ -63,17 +63,31 @@ which php; php -v # PHP muss >= 8.1 sein
git --version git --version
``` ```
Drei Dinge, die du für später brauchst: den **Pfad aus `pwd`**, den **Pfad aus **Ergebnis vom 31.07.2026 auf diesem Webspace:**
`which php`** und die **PHP-Version**. Ist `php` älter als 8.1, prüfe nach
versionierten Binaries (`ls /usr/bin/php*`, `ls /usr/local/bin/php*`) und nimm den | | |
passenden absoluten Pfad; die Cronjobs brauchen ihn ohnehin absolut. |---|---|
| HOME | `/www/htdocs/w01ca75d` |
| SITE | `/www/htdocs/w01ca75d/tsv08kulmbach-website` |
| PHP (CLI, für Cron) | `/usr/bin/php` — 8.3.29 |
| Composer | 2.9.8, global vorhanden |
| Alte CMS-Seite (Rückweg) | `/www/htdocs/w01ca75d/tsv08kulmbach.de` |
All-Inkl legt pro Domain einen Ordner im Home an, das Home selbst ist also kein
Docroot. Der Ordnername `tsv08kulmbach.de` ist von der alten Seite belegt, deshalb
heißt der neue `tsv08kulmbach-website`. Die anderen TSV-Ordner
(`2024.`, `hall-of-fame.`, `kabinendienst.`, `kreisliga-reise.`) sind eigene
Subdomains und vom Umschalten nicht betroffen.
Achtung: das ist die **CLI**-Version. Welches PHP der Webserver nimmt, stellt KAS pro
Domain getrennt ein (Schritt C1).
### B2 [SSH] Repo klonen ### B2 [SSH] Repo klonen
```bash ```bash
cd ~ cd ~
git clone https://onion.breadcrumb-online.de/fs/tsv08kulmbach-website.git tsv08kulmbach git clone https://onion.breadcrumb-online.de/fs/tsv08kulmbach-website.git tsv08kulmbach-website
cd tsv08kulmbach && pwd # diesen Pfad notieren: das ist SITE cd tsv08kulmbach-website && pwd # diesen Pfad notieren: das ist SITE
``` ```
Der Klon lädt gut 460 MB (Website plus das Vereinsmaterial der Dateiablage), das Der Klon lädt gut 460 MB (Website plus das Vereinsmaterial der Dateiablage), das
@@ -87,7 +101,7 @@ Die Datei ist gitignored, also nicht im Klon. Vom Mac hochladen:
```bash ```bash
# [lokal], in einem zweiten Terminal # [lokal], in einem zweiten Terminal
scp config/config.production.php \ scp config/config.production.php \
<kas-user>@<server>.kasserver.com:~/tsv08kulmbach/config/config.php <kas-user>@<server>.kasserver.com:~/tsv08kulmbach-website/config/config.php
``` ```
Wichtig: Ziel heißt `config.php`, nicht `config.production.php`. Danach [SSH]: Wichtig: Ziel heißt `config.php`, nicht `config.production.php`. Danach [SSH]:
@@ -99,7 +113,7 @@ chmod 600 config/config.php # enthält SMTP-Passwort und app_secret
### B4 [SSH] Composer-Abhängigkeiten ### B4 [SSH] Composer-Abhängigkeiten
```bash ```bash
cd ~/tsv08kulmbach cd ~/tsv08kulmbach-website
composer install --no-dev --optimize-autoloader composer install --no-dev --optimize-autoloader
``` ```
@@ -132,7 +146,7 @@ Schreiben muss die Seite in `storage/logs`, `storage/cache`, `storage/ratelimit`
### C1 [KAS] Subdomain anlegen und schützen ### C1 [KAS] Subdomain anlegen und schützen
1. **Domains** → Subdomain `neu.tsv08kulmbach.de` anlegen. 1. **Domains** → Subdomain `neu.tsv08kulmbach.de` anlegen.
2. Als Verzeichnis **`/tsv08kulmbach/public`** eintragen, nicht das Repo-Root. 2. Als Verzeichnis **`/tsv08kulmbach-website/public`** eintragen, nicht das Repo-Root.
Damit liegen `app/`, `config/`, `data/`, `storage/` und `vendor/` außerhalb des Damit liegen `app/`, `config/`, `data/`, `storage/` und `vendor/` außerhalb des
Docroots und sind grundsätzlich nicht per URL erreichbar. (Die Root-`.htaccess` Docroots und sind grundsätzlich nicht per URL erreichbar. (Die Root-`.htaccess`
ist nur ein Notnagel für Hoster, die das nicht können.) ist nur ein Notnagel für Hoster, die das nicht können.)
@@ -155,7 +169,7 @@ holen die Syncs. Vor dem ersten Lauf fehlen Tabellen, Spiele und der
Instagram-Block (die Seite bricht deswegen nicht, sie zeigt Ersatzinhalte). Instagram-Block (die Seite bricht deswegen nicht, sie zeigt Ersatzinhalte).
```bash ```bash
cd ~/tsv08kulmbach cd ~/tsv08kulmbach-website
php bin/matchcenter-sync.php # Spiele, Ergebnisse, Tabellen, Wappen php bin/matchcenter-sync.php # Spiele, Ergebnisse, Tabellen, Wappen
php bin/instagram-sync.php # Posts und Bilder php bin/instagram-sync.php # Posts und Bilder
``` ```
@@ -227,8 +241,8 @@ PHP-Pfad kommen aus B1/B2.
23 3 * * 0 cd SITE && PHP bin/log-rotate.php > /dev/null 2>&1 23 3 * * 0 cd SITE && PHP bin/log-rotate.php > /dev/null 2>&1
``` ```
`SITE` und `PHP` durch die echten absoluten Pfade ersetzen, etwa `SITE` und `PHP` durch die echten absoluten Pfade ersetzen, auf diesem Webspace also
`cd /www/htdocs/w01ca75d/tsv08kulmbach && /usr/bin/php bin/…`. Die Minuten sind `cd /www/htdocs/w01ca75d/tsv08kulmbach-website && /usr/bin/php bin/…`. Die Minuten sind
versetzt, damit sich zwei Läufe nicht überlappen. Alle Skripte sind CLI-only, versetzt, damit sich zwei Läufe nicht überlappen. Alle Skripte sind CLI-only,
sperren sich per Lock gegen Parallelläufe und lassen bei Fehlern den letzten guten sperren sich per Lock gegen Parallelläufe und lassen bei Fehlern den letzten guten
Cache stehen — ein fehlgeschlagener Lauf schadet nie. Cache stehen — ein fehlgeschlagener Lauf schadet nie.
@@ -251,7 +265,7 @@ unangetastet, nicht löschen.
### E2 [KAS] Domain umstellen ### E2 [KAS] Domain umstellen
**Domains**`tsv08kulmbach.de` und `www.tsv08kulmbach.de` auf **Domains**`tsv08kulmbach.de` und `www.tsv08kulmbach.de` auf
**`/tsv08kulmbach/public`** zeigen lassen. PHP-Version prüfen, SSL muss für beide **`/tsv08kulmbach-website/public`** zeigen lassen. PHP-Version prüfen, SSL muss für beide
aktiv sein. aktiv sein.
### E3 Sofort danach prüfen ### E3 Sofort danach prüfen
@@ -284,14 +298,14 @@ liegt und andere Menschen dort hochladen:
```bash ```bash
# 1. [SSH] auf dem Server: neue Uploads sichern # 1. [SSH] auf dem Server: neue Uploads sichern
cd ~/tsv08kulmbach cd ~/tsv08kulmbach-website
git add -A storage/dateien/uploads && git commit -m "Uploads vom Server" && git push git add -A storage/dateien/uploads && git commit -m "Uploads vom Server" && git push
# 2. [lokal] holen, dann entwickeln # 2. [lokal] holen, dann entwickeln
git pull git pull
# 3. [lokal] fertig, gepusht → [SSH] ausrollen # 3. [lokal] fertig, gepusht → [SSH] ausrollen
cd ~/tsv08kulmbach && git pull && php bin/preflight.php cd ~/tsv08kulmbach-website && git pull && php bin/preflight.php
``` ```
Nie in der anderen Reihenfolge. Details und Begründung in CLAUDE.md, Abschnitt Nie in der anderen Reihenfolge. Details und Begründung in CLAUDE.md, Abschnitt