Ich habe eine standardmäßige, fast unveränderte ASP.NET Core-Anwendung mit Visual Studio-Vorlage, die ich unter Ubuntu 18.04 ausführen möchte. Ich bin dieser Anleitung gefolgt:https://docs.microsoft.com/en-gb/aspnet/core/host-and-deploy/linux-apache?view=aspnetcore-3.1.
Nach einigem Hin und Her gelang es mir, den ASP.NET-Dienst zum Laufen zu bringen. Wenn ich jedoch meine Seite besuche, wird mir die Fehlermeldung „503 Service Unavailable“ angezeigt.
Meine Apache-Konfiguration:
<IfModule mod_ssl.c>
<VirtualHost *:80>
ServerName example.com
Redirect / https://example.com
Redirect /panel https://example.com/panel
Redirect /privacy https://example.com/privacy
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
DocumentRoot /var/www/
ServerAdmin [email protected]
RewriteEngine On
ErrorLog "/var/log/apache2/rewrite"
LogLevel alert rewrite:trace6
# ASP.NET application
# launchSettings.json is configured to listen on this port
ProxyPass /panel https://localhost:33138/
ProxyPassReverse /panel https://localhost:33138/
ProxyPass /api/socket ws://localhost:44909/api/socket
ProxyPassReverse /api/socket ws://localhost:44909/api/socket
ProxyPass /pgadmin4 !
ProxyPass /privacy !
ProxyPass /contact !
ProxyPass /panel !
ProxyPass / http://localhost:44909/
ProxyPassReverse / http://localhost:44909/
SSLEngine on
SSLOptions +StrictRequire
SSLProtocol TLSv1
ServerAlias example.com
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
Dies ist das Ergebnis systemctl status tpanel
(meines ASP-Daemons):
● tpanel.service - a .NET Core 3.1 server
Loaded: loaded (/etc/systemd/system/tpanel.service; disabled; vendor preset: enabled)
Active: active (running) since Fri 2019-12-13 10:16:21 CET; 4h 1min ago
Main PID: 2765 (dotnet)
Tasks: 16 (limit: 4915)
CGroup: /system.slice/tpanel.service
└─2765 /usr/bin/dotnet /var/www/TPanel/publish/TPanel.dll
Dec 13 10:16:22 vps-example dotnet[2765]: info: Microsoft.Hosting.Lifetime[0]
Dec 13 10:16:22 vps-example dotnet[2765]: Now listening on: http://localhost:5000
Dec 13 10:16:22 vps-example dotnet[2765]: info: Microsoft.Hosting.Lifetime[0]
Dec 13 10:16:22 vps-example dotnet[2765]: Now listening on: https://localhost:5001
Dec 13 10:16:22 vps-example dotnet[2765]: info: Microsoft.Hosting.Lifetime[0]
Dec 13 10:16:22 vps-example dotnet[2765]: Application started. Press Ctrl+C to shut down.
Dec 13 10:16:22 vps-example dotnet[2765]: info: Microsoft.Hosting.Lifetime[0]
Dec 13 10:16:22 vps-example dotnet[2765]: Hosting environment: Production
Dec 13 10:16:22 vps-example dotnet[2765]: info: Microsoft.Hosting.Lifetime[0]
Dec 13 10:16:22 vps-example dotnet[2765]: Content root path: /var/www/TPanel/publish
launchSettings.json
:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:50015",
"sslPort": 44313
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"TPanel": {
"commandName": "TPanel",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:33138"
}
}
}
Aber wie gesagt, wenn ich gehe, example.com/panel
wird der Fehler 503 angezeigt. Andere Teile meiner Website funktionieren einwandfrei.
Andere Information:
- Ich habe eine andere unabhängige Anwendung laufen, die Port 5001 verwendet. Ich habe sie jedoch durch etwas anderes ersetzt, also sollte es kein Problem sein
- Es scheint egal zu sein, ob ich den Port meiner Anwendung auf
33138
oder einstelle5001
, es ändert nichts
Antwort1
launchSettings.json
ist eine VS-Code-Sache. Es bewirkt hier nichts.
Ihre Anwendung läuft auf den Ports 5000 (HTTP) und 5001 (HTTPS). Das ist eine unbestreitbare Tatsache, die wir im Protokoll sehen können:
Dec 13 10:16:22 vps-example dotnet[2765]: info: Microsoft.Hosting.Lifetime[0] Dec 13 10:16:22 vps-example dotnet[2765]: Now listening on: http://localhost:5000 Dec 13 10:16:22 vps-example dotnet[2765]: info: Microsoft.Hosting.Lifetime[0] Dec 13 10:16:22 vps-example dotnet[2765]: Now listening on: https://localhost:5001
Apache ist so konfiguriert, dass es über Port 33138 eine Verbindung mit der Anwendung herstellt:
ProxyPass /panel https://localhost:33138/ ProxyPassReverse /panel https://localhost:33138/
Die Anwendung hört nicht auf diesem Port, daher 503 – gesendet von Apache, nicht von ASP.NET Core.
Korrigieren Sie den Abhörport Ihrer Anwendung. Zum Beispiel in appsettings.json
oder via ASPNETCORE_URLS
. Weitere Informationen sind verfügbarHier.
Übrigens liegt bei den abschließenden Schrägstrichen in eine Nichtübereinstimmung vor ProxyPass
. Das könnte weitere Probleme verursachen.