.. _DotEnv PHP Bibliothek: https://github.com/vlucas/phpdotenv .. _Envoyer: https://envoyer.io/ Basissystem Einrichten ################################################################################ Konfiguration ******************************************************************************** .. include:: ../_terms/config-dir.txt * :ref:`caching` * :ref:`db` * :ref:`intl` * :ref:`session` Verzeichnisschutz ******************************************************************************** Eventuell brauchen gewisse Verzeichnisse besondere Rechte. Nachfolgend findest Du die dazugehörigen Kommandos um die etwaigen Rechte korrekt zu vergeben: .. code-block:: shell sudo chgrp -R www-data storage/ bootstrap/cache/ sudo chmod -R ug+rwx storage/ bootstrap/cache/ Webserver ******************************************************************************** Lokaler PHP-Server ================== Falls Du bereits PHP-7 auf Deinem Rechner installiert hast, kannst Du mithilfe des :code:`serve` Artisan Kommandos, einen lokalen Entwicklungsserver starten. Dabei versucht PHP das Basissystem unter der URL: http://localhost:8000 abzubilden. Eine Datenbank wird Dir dabei jedoch nicht zur Verfügung gestellt, lediglich Dein PHP steht zur Verfügung: .. code-block:: shell php artisan serve Eine weit aus fortgeschrittenere Methode um eine Entwicklungsumgebung einzurichten, findest Du unter: :ref:`entwicklungsumgebung`. Dieses Artisan Kommando sollte wirklich nur gebraucht werden um bspw. kurz einen Einblick auf die Startseite zu erhaschen, nicht jedoch um professionelle Webanwendungen zu kreiieren. Pretty URL's ============ Apache ------ Mithilfe der `public/.htaccess` Dateien werden alle Anfragen an den Front-Controller weitergeleitet, ohne dass Du die `index.php` Datei angeben musst. Damit diese Weiterleitung korrekt funktioniert musst Du jedoch gewährleisten dass das `mod_rewrite` Modules Deines Apache Webserver aktiviert wurde, ohne dieses Modul werden keine `.htaccess` Dateien von Deinem Webserver akzeptiert. Falls die reguläre Lösung in `public/.htaccess` bei Dir nicht funktioniert kannst Du es mit nachfolgender Alternative versuchen: .. code-block:: apache Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] Nginx ----- Wenn Du hingegegen einen Nginx Webserver verwendest, kannst du folgende Konfiguration setzen, damit alle Anfragen korrekt an den :term:`Front-Controller` weitergeleitet werden können: .. code-block:: nginx location / { try_files $uri $uri/ /index.php?$query_string; } Anwendungsschlüssel ******************************************************************************** .. _APP_KEY: Der Anwendungsschlüssel oder auch Application-Key genannt, ist eine willküllriche Zeichenkette, welcher zum verschlüsseln von Sessiondaten vewendet wird. Normalerweise handelt es sich um eine Zeichenkette (`string`) bestehend aus 32-Zeichen. Bei der Installtion von |project| sollte automatisch ein Anwendungsschlüssel generiert worden sein. Diesen Schlüssel findest Du in Deiner `.env` Datei (:code:`APP_KEY`). Solltest Du einmal keinen Schlüssel vorfinden oder falls Du einen neuen Schlüssel generieren möchtest, kannst Du mithilfe des :code:`key:generate` Artisan Kommando's tun: .. code-block:: shell php artisan key:generate .. warning:: Sollte der Anwendungsschlüssel aus irgendwelchen Gründen fehlen, werden die Sessiondaten Deiner Benutzer nicht verschlüsselt und sind somit nicht sicher! .. _dot-env: DotEnv-Konfigurationen ******************************************************************************** Oftmals möchte man Konfigurationen an der aktuellen Umgebung des Basissystems anpassen. So ist es bspw. möglich, dass Du ein komplett anderes Cache-System innerhalb der Entwickung verwenden möchtest als Du bspw. für die Produktion einsetzt. |project| greift dabei auf die `DotEnv PHP Bibliothek`_ von Lance Lucas zu, um solche umgebungsspezifische Variablen in einer `.env` Datei auszulagern. Bei einer frischen |project| Installation wird die `.env.dist` Datei automatisch kopiert, umbenannt in `.env` und mit einem Schlüssel versehen; all diese Schritte sind dabei innerhalb der `composer.json` Datei beschrieben. Da Du innerhalb der `.env` Datei Deine Zugangsdaten und geheimen Konfigurationen tätigst, solltest Du niemals die `.env` Datei im Versionskontrollsystem aufnehmen, um Deine Daten zu schützen. |project| übernimmt diese Aufgabe bereits für Dich, indem der entsprechende Eintrag in der `.gitignore` Datei hinterlegt wurde. Falls Du zusammen mit einem Team arbeitest, wird im Regelfall die `.env.dist` Datei als Orientierungspunkt für Teammitglieder verwendet. Dabei können bspw. Platzhalterwerte eingesetzt werden, um anderen einen Hinweis zu geben wie sie die Konfiguration zu definieren haben. Eine weitere DotEnv Datei welche von |project| verwendet wird ist bspw. die `.env.testing`. Diese Datei überschreibt die `.env` Datei beim Einsatz der Testumgebung (PHPUnit) oder beim Ausführen von Artisan Kommandos mit der :code:`--env="testing"` Option. .. hint:: Jede Umgebungsvariable innerhalb der `.env` Datei kann von externen Umgebungsvariablen, wie bspw. Server-Level oder System-Level abhängigen Umgebungsvariablen überschrieben werden. .. _wartung: Wartungsmodus ******************************************************************************** Sollte sich die Anwendung im Wartungsmodus befinden, werden alle Anfragen an eine bestimmte Seite weitergeleitet. Dies erleichtert Dir ein temporäres "abschalten" des Basissystems während Du bspw. Updates ausführen oder Wartungsarbeiten vornimmst. |project| verfügt über eine eigene :ref:`middleware`, welche überprüft ob sich das Basissystem im Wartungsmodus befindet. Sollte dieser Fall eintreffen wird eine `MaintenanceModeException` Exception ausgeworfen. Dabei werden alle Anfragen mit dem Statuscode `503` beantwortet und an die entsprechende Seite weitergeleitet. Während des Wartungsmodus werden keine :ref:`Aufgaben ` aus den :ref:`queues` abgearbeitet. Diese Aufgaben werden erst dann ausgeführt wenn sich das Basissystem nicht mehr im Wartungsmodus befindet. Wartungsmodus Aktivieren ======================== Das :code:`down` Artisan Kommando erlaubt uns dabei das aktivieren des Wartungsmodus für das Basissystem: .. code-block:: shell php artisan down Optional kannst Du auch eine Nachricht (:code:`message`) und Wiederholungsversuch (:code:`retry`), in Sekunden, innerhalb des :code:`down` Artisan Kommandos beifügen. Der Nachrichtenwert (:code:`message`) wird dabei als Protokoll- oder Ausgabenachricht verwendet und sollte den Klienten über die Wartungsarbeiten informieren. Die :code:`retry` Option hingegegen erlaubt es eine Zeitspanne, zu definieren, wann die Wartungsarbeiten möglicherweise abgeschlossen sind. Die Antwort wird dabei als `Retry-After` HTTP Header definiert: .. code-block:: shell php artisan down --message="Datenbank wird aktualisiert." --retry=60 Die 503-Seite ============= Das Blade-Template für die 503-Seite findest Du unter: `resources/views/errors/503.blade.php`. Du kannst die Seite beliebig anpassen wie jede andere View des Basissystems. Der Webseite steht dabei eine eigenes Stylesheet zur Verfügung. Die Resourcen dieses Stylesheets findest du unter: `resources/assets/sass/pages/503.sass`. Vergiss nicht die Datei zu kompilieren, falls Du Änderungen innerhalb dieses Stylesheets tätigst. Wartungsmodus Deaktivieren ========================== Um den Wartungsmodus zu beenden kannst Du das :code:`up` Arisan Kommando verwenden: .. code-block:: shell php artisan up Alternativen zum Wartungsmodus ============================== Da die Umschaltung des Basissystems in den Wartungsmodus eine gewisse Anzahl an Sekunden eine sogenannte Downtime verursacht, lohnt es sich nach Alternativen umzusehen, welche diese Probleme lösen. Eine Alternative ist hierbei `Envoyer`_ welche ohne Downtime solche veröffentlichungen vornehmen kann.