Contao 4 und MAMP (NGINX)

Contao 4 und MAMP (NGINX)

MAMP bietet seit einigen Versionen auch NGINX als Webserver. Von der Konfiguration muss man aber ein paar Details beachten. Für Contao 4 kommen hier ein paar Routes hinzu. Im Tab Nginx, der bei den Hosts zu finden ist, muss unter „Custom*:“ folgender Block eingetragen werden, damit das Debugging von Symfony und der Contao-Manager funktioniert.

location / {
    try_files $uri /app.php$is_args$args;
}
location ~ /app_dev.php/ {
    try_files $uri /app_dev.php$is_args$args;
}
location ~ /contao-manager.phar.php/ {
  try_files $uri /contao-manager.phar.php$is_args$args;
}

Contao 3 und WordPress mit MAMP (NGINX)

Für Contao 3.x und WordPress reicht folgende Zeile im Feld „try_files:“

$uri $uri/ /index.php?$args;

php.ini für lokale Entwicklung

Falls euer MAMP zum ersten mal installiert wurde, bietet es sich noch an, folgende Development-Settings in der php.ini zu hinterlegen (Vorlagen -> Vorlage editieren -> PHP (php.ini) -> 7.x.x, je nach dem welche Version ihr eben aktiv habt. Das ist nur zum entwickeln lokal gedacht. Aus performancegründen dürfen diese Settings niemals auf Produktivsystemen gesetzt werden. Somit lassen sich z.B. große Datenbanken lokal ohne weiteres importieren oder größere Skripte für Importe ausführen.

post_max_size = 512M
upload_max_filesize = 512M
max_execution_time = 560
max_input_time = -1
memory_limit = 512M

Jetzt sollte Contao lokal richtig schnell laufen. Wichtig: APC und OPcache deaktivieren, sonst fängt die Sucherei an, warum die Codeänderungen nicht erscheinen. Das Caching ist wirklich nur hilfreich wenn man nur im Backend arbeitet und nicht an den Dateien. Der Vergleich ist auch nur etwa 100-150ms was ich so im Chrome gesehen habe. Bei mir lädt somit das Backend mit etwa 500-600ms, da machts dann auch Spass. (Vergleich Apache: 600-700ms).

Der Vollständigkeit halber muss man auch sagen das sich NGINX und ein gut konfigurierter Apache wenig nehmen. Das schöne bei NGINX ist halt die einfache Config aus meiner Sicht. uWSGI lässt sich damit auch relativ leicht auch für Python-Webapps konfigurieren. Sobald es dann auch um Scale geht, ist das ebenfalls relativ easy mit NGINX realisierbar.

Falls jemand noch ein paar Configtricks auf Lager hat, immer gern in die Kommentare 🙂