Setup
- QNAP TS 251+
- Image: Joomla 3.9.1-php7.2-apache
- Ziel: Aktuelle Joomla Version mit php7.2 und nativer Datenbank auf Host betrieben sowie Mapping von /var/www/html auf Host-Verzeichnis und individueller zusätzlicher Konfiguration von php und Apache mit internem und externem Zugriff
Problem 1: Kein externer Zugriff
Ich betreibe die NAS mit internem und externem Zugriff durch Portfreigabe in der FritzBox als Entwicklungsumgebung, der Zugriff erfolgt von außen über QNAPKENNUNG.myqnapcloud.com. Das funktioniert auch hervorragend für alle native Apps (Admin-UI, Filestation, Photostation ect.), aber nicht für den gestarteten Container. Die NAT-Portmappings 8100:80 und 8101:443 sind eingetragen, so dass ich zwar im internen Netzwerk über http://NASNAME:8100 problemlos zugreifen kann, aber wenn ich versuche von außen über http://QNAPKENNUNG.myqnapcloud.com:8100 zuzugreifen, kommt nach Timeout nur eine Fehlermeldung. Mit dem Container ist auch automatischer ein virtueller Switch eingerichtet worden und ich bin davon ausgegangen, dass dieser dafür sorgt, dass auch externe Aufrufe an den laufenden Container weitergegeben werden, aber das scheint nicht der Fall zu sein.
Fragen:
- Funktioniert eine externer Zugriff generell mit NAT oder muss ich ein HOST oder BRIDGE Mapping einrichten (und damit auch separate Portweiterleitung)?
- Wenn ja: Wie muss den Container und/oder ggf. der virtuelle Switch konfiguriert sein, damit externe Zugriff gleich wie interner funktioniert?
Problem 2: php- und Apach-Konfigurationsdateien ganz oder gar nicht
So wie ich diverse Tutorial verstanden habe, sollte die im Container laufende php/Apache Umgebung folgendermaßen konfiguriert werden können (am Beispiel php):
- PHP startet im Container und liest die im Container vorhandene Standard-php.ini
- Die gegebene PHP Konfiguration --with-config-file-scan-dir=/etc/config/php.d veranlasst php im Verzeichnis /etc/config/php.d nach zusätzlichen *.ini Dateien zu suchen
- Dort vorhandene gültige INI-EInstellungen überschrieben die Werte der Standard-php.ini
Ich habe den Container so eingerichtet, dass das Container-Share /usr/local/etc/php/conf.d auf das Host Share /share/php7-apache/config/php/conf.d gemappt wird und dort eine Datei custom.ini enthalten ist, die spezifische Einstellungen enthält. Allerdings funktioniert der oben beschriebene Ablauf nicht, denn sobald ich den Container mit dem Mapping starte, erwartet PHP offenbar, dass alle Konfigurationsdateien darin enthalten sein müssen, also auch die Standard php.ini und alle Erweiterungen, damit sind immer alle Werte aus Local value und Master value identisch. D.h. das selektive Laden bestimmter Einstellungen funktioniert nicht, entweder muss alles aus dem Container kommen (kein Konfig-Mapping zum Host) oder alles wird von außen gelesen (aus bestehendem Konfig-Mapping zum Host), aber selektiv mit z.B. einer einzigen Datei custom.ini, die nur die vom Standard abweichenden Einstellungen enthält klappt nicht.
Fragen:
- Wie kann ich erreichen, dass alle notwendigen Standardkonfigurationsdateien (inklusive Erweiterungen) aus dem Container gelesen werden und nur spezifische Einstellungen aus einer custom.ini?
Vermutlich sind beides wieder super einfache Anfängerprobleme, aber trotz vieler gelesener Tutorials und Dokus ist es mir in 3 Wochen nicht gelungen, das Ganze wie oben beschrieben zum Laufen zu bringen, also ist mir jeder Tipp willkommen.