Zum Inhalt

Laravel

Laravel ist ein Web-Framework für die Programmiersprache PHP.

Erstellen eines neuen vollwertigen Projekts

In Bitbucket findet sich ein für Docker vorkonfiguriertes Git-Repositorium, aus dem sich leicht neue Laravel-Projekte erstellen lassen.

Warning

Benutze nicht Forks von Bitbucket, um das neue Projekt anzulegen. Ansonsten werden sich alle Pull Requests im neuen Projekt standardmäßig auf das ursprüngliche Repositorium beziehen und nicht auf das neue Projekt.

Warning

Benutze nicht composer create-project, um das neue Projekt anzulegen. Dabei geht die Git-Historie verloren, was zukünfiges Mergen unnötig erschwert.

Führe folgende Schritte aus, um ein neues Projekt zu erstellen:

  1. Lege ein neues Git-Repositorium in Bitbucket an
    • Owner: BIG5
    • Project: General
    • Repository name: EXAMPLE
    • Access level: This is a private repository: true
    • Include a README?: No
    • Description:
    • Forking: Allow only private forks
    • Language: PHP
  2. Klone den Branch mit der gewünschten Version: git clone --branch=7 --recursive --single-branch git@bitbucket.org:big5concepts-ondemand/laravel-docker.git EXAMPLE
  3. Wechsle in das geklonte Repositorium: cd EXAMPLE
  4. Ersetze den Remote: git remote remove origin && git remote add origin git@bitbucket.org:big5concepts-ondemand/EXAMPLE.git
  5. Benenne Versionsbranch um: git branch --move 7 master
  6. Erstelle den develop-Branch: git branch develop
  7. Initialisiere GitFlow: git flow init --defaults
  8. Pushe Branches: git push --set-upstream origin develop master

Danach sollte die Projektvorlage angepasst werden. Sie enthält nützliche Dinge, die aber nicht von jedem Projekt gleichermaßen benötigt werden.

  1. Entferne unnötige Services und Volumes aus docker-compose.yml
  2. Passe bin/ptr an

Erstellen eines lokalen Testprojekts

Für einfache lokale Tests und Praktikumsprojekte ist eine der Aufwand einer vollumfänglichen Installation nicht notwendig. Stattdessen kann einfach der eingebaute Webserver von PHP in Verbindung mit der eingebetteten Datenbank SQLite3 genutzt werden. Dann muss man sich weder mit Berechtigungen noch mit Datenbankdiensten herumschlagen.

Installiere hierfür zuerst PHP, SQLite3, die PHP-Erweiterung für SQLite3 und Composer mit dem Paketmanager deines Vertrauens. Danach kann das Projekt mithilfe von Composer erstellt werden.

composer create-project laravel/laravel EXAMPLE

Wechsle nun in das Verzeichnis des neu erstellten Projekts.

cd EXAMPLE

Konfiguriere und initialisiere dort eine SQLite3-Datenbank unter storage/database.sqlite3.

sed \
    -e 's|^DB_CONNECTION=.*$|DB_CONNECTION=sqlite|' \
    -e "s|^DB_DATABASE=.*\$|DB_DATABASE=$(pwd)/storage/database.sqlite3|" \
    -i.bak .env
sqlite3 storage/database.sqlite3 'PRAGMA journal_mode = WAL'

Starte schließlich den Webserver von PHP, um auf die Anwendungen im Webbrowser zugreifen zu können.

php artisan serve

Konfiguration

Laravel-Optionen lassen sich wie gewohnt über die Datei .env konfigurieren. Wenn man Laravel im Docker-Container laufen lässt muss man darauf achten, dass Netzwerkdienste nicht mehr über localhost erreichbar sind, sondern über den Namen ihres Dienstes in der docker-compose.yml. Dort finden sich auch die jeweiligen Zugangsdaten:

DB_CONNECTION=pgsql
DB_DATABASE=laravel
DB_HOST=postgresql
DB_PASSWORD=laravel
DB_PORT=5432
DB_USERNAME=laravel
MAIL_DRIVER=smtp
MAIL_ENCRYPTION=null
MAIL_HOST=mailcatcher
MAIL_PASSWORD=laravel
MAIL_PORT=1025
MAIL_USERNAME=laravel
REDIS_HOST=redis

PhpStorm

Folge der entsprechenden Anleitung, um PhpStorm für Laravel einzurichten.

Deployment

Unsere Anwendungen werden üblicherweise auf Server mit der Web Container Platform mithilfe von Ansible ausgerollt. In den Branch-spezifischen Inventories ist die mit Ansible Vault verschlüsselte Konfiguration hinterlegt.

Passwörter für WCP-Dienste kann man mit folgendem Befehl generieren:

dd if=/dev/urandom bs=24 count=1 2> /dev/null | base64 | tr /+ .~

Den APP_KEY kann man mit folgendem Befehl generieren:

dd if=/dev/urandom bs=32 count=1 2> /dev/null | base64