Um eine weitere Apache Instanz zu erstellen, gibt es bereits ein Skript, welches einem einige Arbeit abnimmt.
Die grundsätzliche Idee dahinter ist jedoch einfach: Man kopiert die originale Instanz (apache2) , also Konfigurationsdateien, Binaries, etc. in einen zweiten Ordner (apache2-xxx).
Je nach System findet sich das Skript in
/usr/share/doc/apache2.2-common/examples/setup-instance <instance>
oder
/usr/share/doc/apache2/examples/setup-instance <instance>
<instance> ist hierbei der Name der Instanz, die erstellt werden soll: /usr/share/doc/apache2/examples/setup-instance netcore
Dies erstellt also die entsprechenden Verzeichnis und Dateien /etc/apache2-netcore
, /etc/logrotate.d/apache2-netcore
, /var/log/apache2-netcore
sowie das Init-Skript für den Boot /etc/init.d/apache2-netcore.
Um die entsprechenden Links zu aktivieren, also apache2-netcore als Service verfügbar zu machen. Führen wir nun ein update-rc.d apache2-netcore defaults
aus.
Dies verlinkt die executables in /etc/rcX.d/
, also dem entsprechenden Runlevel für den Boot Prozess.
Nun können wir den Service mit init.d
oder service
starten: /etc/init.d/apache2-netcore
start oder service apache2-netcore start
Nun können wir uns an die Konfiguration de Apache2 Instanz NetCore machen. Dazu navigieren wir ins Verzeichnis /etc/apache2-netcore/sites-available/
und bearbeiten das file 000-default.conf
(HTTP) oder default-ssl.conf
(HTTPS).
Diese Dateien haben folgenden Aufbau (in diesem Beispiel hört die ASP.NET Core Application auf localhost:5000):
<VirtualHost *:8080> ServerName sub.mydomain.com ErrorLog ${APACHE_LOG_DIR}/errorNetCore.log CustomLog ${APACHE_LOG_DIR}/accessNetCore.log combined ProxyPass / http://localhost:5000/ ProxyPassReverse / http://localhost:5000/ ProxyPreserveHost On </VirtualHost>
ServerName: Hört auf Aufruf von sub.mydomain.com
ErrorLog: Schreibt Error Log in entsprechendes File, (Apache bspw. PHP Fehler kommen hier rein)
CustomLog: Schreibt alle Aufrufe in File (=AccessLog Config)
ProxyPass: Forward Proxy Config, leitet alle Anfragen von http://sub.mydomain.com:8080/ an http://localhost:5000/ weiter
/ steht hier für das Top Directory, ProxyPass /sub/ http://localhost:5000/ würde bspw. http://sub.mydomain.com:8080/sub/ an http://localhost:5000/ weiterleiten
ProxyPassReverse: Reverse Proxy, leitet Response um. Schreibt alle Urls in der Rückantwort um, bspw. sollte http://localhost:5000 zu http://sub.mydomain.com:8080 umgeschrieben werden.
ProxyPreserveHost: Header bleibt erhalten
Nun speichern wir die Seite und aktivieren sie mit a2ensite sub.mydomain.com
und starten die Instanz neu service apache2-netcore restart
.
Anschließend starten wir die ASP.NET Core Applikation: dotnet PFADZURDLL