expertenaustausch > linux.debian.user.german

Andreas Tille (01.04.2020, 09:40)
Hallo,

ich habe die Aufgabe, eine existierende dotNet 3.1 Applikation unter
Debian mit Apache als Proxy zum Laufen zu bringen. Ich bin anhand der
unten aufgelisteten [Links] vorgegangen. Damit läuft die dotNet
Applikation erstmal im Browser auf . Allerdings
wird nur der rohe Inhalt der Webseite dargestellt - Bilder auf die mit
/img/* verwiesen wird sowie CSS (in /css) werden nicht gefunden.

Ich habe in
/etc/systemd/system/kestrel-helloapp.service
entsprechend [4] einen Eintrag

[Service]
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/dotnet /var/www/myapp/myapp.dll

angelegt. Wenn ich dieses WorkingDirectory ändere, kommt unter
gar nichts mehr. Die Bilder liegen allerdings
im Verzeichnisbaum unter

/var/www/myapp/wwwroot/img

Irgendwie muß man Apache und/oder kestrel also erklären, daß das
root-Directory dort ist. Aber wie?

Vielen Dank für hilfreiche Hinweise

Andreas.

[Links]

[1]
[2]
[3]
[4]
Hans-Georg Bork (01.04.2020, 23:10)
Moin,

Am 1. April 2020 09:31:12 MESZ schrieb Andreas Tille <andreas>:
>Allerdings
>wird nur der rohe Inhalt der Webseite dargestellt - Bilder auf die mit
>/img/* verwiesen wird sowie CSS (in /css) werden nicht gefunden.


hast du schon einen symlink probiert?
z.B. ln -s wwwroot/img img I'm myapp Verzeichnis

Gruß
--hgb
Ulf Volmer (01.04.2020, 23:30)
On 01.04.20 09:31, Andreas Tille wrote:

> ich habe die Aufgabe, eine existierende dotNet 3.1 Applikation unter
> Debian mit Apache als Proxy zum Laufen zu bringen. Ich bin anhand der
> unten aufgelisteten [Links] vorgegangen. Damit läuft die dotNet
> Applikation erstmal im Browser auf . Allerdings
> wird nur der rohe Inhalt der Webseite dargestellt - Bilder auf die mit
> /img/* verwiesen wird sowie CSS (in /css) werden nicht gefunden.


Falls es eine valide Lösung sein sollte, den Apache die zwei
Verzeichnisse direkt ausliefern zu lassen, statt die an den kestrel
weiterzuleiten:

ProxyPass /css !
ProxyPass /img !

sorgt für eben das.

Sonst bin ich raus. ;-)

Viele Grüße
Ulf
Andreas Tille (02.04.2020, 15:40)
Hallo,

On Wed, Apr 01, 2020 at 11:21:42PM +0200, Ulf Volmer wrote:
> On 01.04.20 09:31, Andreas Tille wrote:
> > ich habe die Aufgabe, eine existierende dotNet 3.1 Applikation unter
> > Debian mit Apache als Proxy zum Laufen zu bringen. Ich bin anhand der
> > unten aufgelisteten [Links] vorgegangen. Damit läuft die dotNet
> > Applikation erstmal im Browser auf .


Also das Problem ist gelöst - der Dienst läuft jetzt auf



> Falls es eine valide Lösung sein sollte, den Apache die zwei
> Verzeichnisse direkt ausliefern zu lassen, statt die an den kestrel
> weiterzuleiten:
> ProxyPass /css !
> ProxyPass /img !
> sorgt für eben das.


Es war ein anderes Problem (Verzeichnis am falschen Ort).

> Sonst bin ich raus. ;-)


Vielleicht bist Du bei einer eher reinen Apache-Frage wieder drin. :-)
Der Dienst unter ist ja eigentlich der reine
dotNet Webservice. Da schlägt ja Apache gar nicht zu. Meine
/etc/apache2/conf.d/10-dotnet.conf sieht so aus:

# Setup apache2 as reverse proxy
#
# Alternative:
#

Listen 4242

<VirtualHost *:*>
RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
</VirtualHost>

<VirtualHost *:4242>
ProxyPreserveHost On
ProxyPass /
ProxyPassReverse /
ServerName host.my.local
ServerAlias *.my.local
ErrorLog ${APACHE_LOG_DIR}/dotnet-error.log
CustomLog ${APACHE_LOG_DIR}/dotnet-access.log common
</VirtualHost>

In der Anleitung steht original

<VirtualHost *:80>

drin. Aber auf Port 80 will ich den Standardserver antworten lassen.
Daher habe ich nun mal einen neuen Port 4242 erfunden. Der wird auch
aufgemacht:

# netstat -tuplen | grep -e dotnet -e apache
tcp 0 0 127.0.0.1:5000 0.0.0.0:* LISTEN 33 21791594 8173/dotnet
tcp 0 0 127.0.0.1:5001 0.0.0.0:* LISTEN 33 21791598 8173/dotnet
tcp6 0 0 :::80 :::* LISTEN 0 21944936 25352/apache2
tcp6 0 0 :::4242 :::* LISTEN 0 21944940 25352/apache2
tcp6 0 0 ::1:5000 :::* LISTEN 33 21791597 8173/dotnet
tcp6 0 0 ::1:5001 :::* LISTEN 33 21791599 8173/dotnet

Wenn ich nun zu gehe, dann zeigt der Browser
sofort



an und macht mit der (nun glücklicherweise laufenden) dotnet Anwendung
weiter und der Apache ist draußen. Im log erscheint auch nur der eine
Zugriff. Ich vermute, das hängt mit einem falschen Reverse-Proxy
zusammen - aber was genau ist da noch zu ändern?

Viele Grüße

Andreas.
Ulf Volmer (02.04.2020, 16:00)
On 02.04.20 15:33, Andreas Tille wrote:

[..]
> ErrorLog ${APACHE_LOG_DIR}/dotnet-error.log
> CustomLog ${APACHE_LOG_DIR}/dotnet-access.log common
> </VirtualHost>


Ich habe jetzt nicht im Detail verstanden, wozu der *:* VHost gut sein
soll. Würde ich im Zweifel rausnehmen. Ansonsten sieht das gut aus
(abgesehen davor, dass ich ungern .local TLDs sehe). Eigentlich sollte
das funktionieren.

> Wenn ich nun zu gehe, dann zeigt der Browser


Mußt Du mit Deinem Setup nicht auf gehen?

Viele Grüße
Ulf
Markus Kolb (04.04.2020, 17:50)
Am 02.04.2020 15:33, schrieb Andreas Tille:

> Wenn ich nun zu gehe, dann zeigt der Browser
> sofort
>
> an und macht mit der (nun glücklicherweise laufenden) dotnet Anwendung
> weiter und der Apache ist draußen. Im log erscheint auch nur der eine
> Zugriff. Ich vermute, das hängt mit einem falschen Reverse-Proxy
> zusammen - aber was genau ist da noch zu ändern?


Musst Du dir mal mit z.B. wireshark oder developer console vom Browser
ansehen, was da genau passiert.
Könnte z.B. ein Redirect von der App sein.
Evt. stimmen auch die ganzen Links in der App nicht.
Kannst du evt. noch in der App konfigurieren wie die eigene Domain der
App sein soll?
Ähnliche Themen