Diese Anwendung ist jetzt für klassisches Apache-Shared-Hosting als einzelner App-Ordner vorbereitet.
Zielbild:
public_html/monitor/https://example.com/monitor/ erreichbarhttps://example.com/monitor/api/v1/src/, data/ und die Markdown-Doku bleiben im selben Ordner, sind aber per .htaccess gesperrtErforderlich:
.htaccess-Supportdata/Optional:
mail()-Konfiguration für Email-Alarmecdn.jsdelivr.net für die Swagger UI unter /api-docs/Die Anwendung wird nicht mehr in public/ und private Nachbarordner getrennt deployt. Stattdessen ist der Projektordner selbst das Deploy-Artefakt.
Beispiel für eine Installation in einem Unterordner:
/home/account/public_html/
└── monitor/
├── .htaccess
├── index.php
├── app.js
├── styles.css
├── openapi.yaml
├── admin/
├── api/
├── api-docs/
├── data/
│ ├── .htaccess
│ ├── config.json
│ ├── state.json
│ ├── alert_log.json
│ └── php_errors.log
├── docs/
│ ├── .htaccess
│ ├── API.md
│ ├── CONFIG.md
│ └── DEPLOYMENT.md
└── src/
└── .htaccess
Wichtig:
index.php, admin/, api/, api-docs/, app.js, styles.css und openapi.yaml sind öffentlichsrc/, data/ und docs/ liegen im selben Ordner, werden aber durch mitgelieferte .htaccess-Dateien blockiertREADME.md und Dotfiles werden ebenfalls über die Root-.htaccess geblocktWenn du den Ordner monitor/ in public_html/ hochlädst, setze in data/config.json oder im Adminpanel:
{
"app": {
"base_path": "/monitor"
}
}
Dann sind die wichtigsten URLs:
https://example.com/monitor/https://example.com/monitor/admin/https://example.com/monitor/api/v1/status.phphttps://example.com/monitor/api/v1/readings.phphttps://example.com/monitor/api-docs/https://example.com/monitor/openapi.yamlWenn du den Inhalt direkt in den Domain-Root legst, bleibt base_path leer.
Du brauchst für das Hosting den kompletten Projektordner inklusive:
admin/api/api-docs/src/data/docs/.htaccessLade den kompletten Ordner in den öffentlichen Webspace hoch, zum Beispiel:
lokal: /mein-projekt/automat
server: /home/account/public_html/monitor
Danach muss Apache aus genau diesem Ordner ausliefern.
PHP muss in data/ schreiben können.
Typische Werte:
755 oder 775644 oder 664Beschreibbar sein müssen mindestens:
data/config.jsondata/state.jsondata/alert_log.jsonEmpfohlen zusätzlich:
data/php_errors.log (wird beim ersten geloggten Fehler angelegt)Im Hosting-Panel PHP 8.1 oder neuer aktivieren.
Falls die App in einem Unterordner wie monitor/ liegt:
app.base_path auf "/monitor" setzenFalls die App direkt unter der Domain liegt:
app.base_path leer lassenDas Feld wird im Adminpanel normalisiert. monitor, /monitor und /monitor/ werden zu "/monitor".
Nach dem ersten Login sofort ändern:
Die Bereitstellung setzt auf die mitgelieferten .htaccess-Dateien:
.htaccess
README.mdsrc/.htaccess
data/.htaccess
docs/.htaccess
Wenn dein Hosting .htaccess ignoriert, ist dieses Deploy-Modell nicht sicher.
Sensoren senden an den Readings-Endpunkt relativ zum base_path.
Beispiel für eine Installation unter /monitor:
POST https://example.com/monitor/api/v1/readings.php
Authorization: Bearer <token>
Content-Type: application/json
Diese Checks sollten direkt funktionieren:
https://example.com/monitor/ zeigt das Dashboard.https://example.com/monitor/admin/ zeigt den Login.https://example.com/monitor/api/v1/status.php liefert JSON.https://example.com/monitor/api-docs/ zeigt Swagger UI.https://example.com/monitor/openapi.yaml ist abrufbar.Diese Pfade dürfen nicht öffentlich lesbar sein:
https://example.com/monitor/data/config.jsonhttps://example.com/monitor/src/bootstrap.phphttps://example.com/monitor/docs/DEPLOYMENT.mdSie sollten 403 Forbidden oder ähnlich blockiert werden.
Lokal kannst du die App direkt aus dem Projektordner starten:
php -S localhost:8000
Wichtig:
.htaccess nicht aussrc/, data/ und docs/ gilt deshalb lokal nicht403 oder 404 auf allen App-URLsPrüfen:
Prüfen:
app.base_path stimmt exakt mit dem URL-Unterordner übereinapp.js und styles.css liegen im Root des App-OrdnersPHP-Laufzeitfehler werden in data/php_errors.log geschrieben. Wenn etwas serverseitig fehlschlägt, zuerst diese Datei prüfen.
Prüfen:
app.base_path ist z. B. "/monitor"/monitor/api/v1/readings.phpdata/config.json ist im Browser erreichbarDann greift .htaccess nicht korrekt. In dem Fall:
.htaccess prüfenAllowOverride bzw. das entsprechende Hosting-Feature aktivieren