none
Webservice unter Linux bereitstellen? RRS feed

  • Frage

  • Hallo zusammen,

    ich arbeite ja schon seit längerem an einem Webservice, welcher mit .NET 5 und dem IIS funktioniert. Nun kommt hier im Haus die Frage auf, wie das denn mit Linux so läuft? Letztlich geht es um die Hostingkosten, die für Linux deutlich günstiger sind.

    Hier hören nun meine Kenntnisse komplett auf. Kann mir jemand sagen, ob der Code unter Linux ebenfalls lauffähig wäre? Ich nehme mal an, der IIS wird dann durch den Apache ersetzt, aber was ist mit den DLLs?

    Gruß, Karsten.

    Montag, 25. Oktober 2021 11:06

Antworten

  • Hallo Karsten,

    ich betreibe einen Webservice mit Linux läuft gut. Wenn dann würde ich Nginx benutzen aber es geht auch ohne. Man muss nur einen Dienst erstellen der den Webservice starten solle er mal beendet werden

    //Erstellen der Dienstdatei
    sudo nano /etc/systemd/system/kestrel-helloapp.service
    
    [Unit]
    Description=ASP.NET on RPI
    
    [Service]
    WorkingDirectory=/home/pi/NAME
    ExecStart=/usr/bin/dotnet /home/pi/NAME.dll
    Restart=always
    # Restart service after 10 seconds if the dotnet service crashes:
    RestartSec=10
    KillSignal=SIGINT
    SyslogIdentifier=dotnet-example
    User=pi
    Environment=ASPNETCORE_ENVIRONMENT=Production
    Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
    
    [Install]
    WantedBy=multi-user.target
    
    //Einschalten/Starten
    sudo systemctl enable kestrel-helloapp.service
    sudo systemctl start kestrel-helloapp.service
    
    //Protokoll anzeigen
    sudo journalctl -fu kestrel-helloapp.service

    Solltest Du Nginx benutzen ist gut zu wissen das dieser nur die Anfragen entgegennimmt und sie an Kestrel weiterleitet. 


    Gruß Thomas
    Github

    Dienstag, 26. Oktober 2021 20:19

Alle Antworten

  • Hallo Karsten,

    Ich nehme mal an, der IIS wird dann durch den Apache ersetzt

    Ja, das wäre eine Möglichkeit, die in diesem Artikel übersichtlich beschrieben wurde:
    Host ASP.NET Core on Linux with Apache

    Nginx wäre eine andere, darüber gibt es auch eine Anleitung. Die mit .NET 5.0 kompatiblen Versionen sind hier aufgelistet:
    Install .NET on Linux

    aber was ist mit den DLLs?

    Es wird empfohlen, die Anwendung im /var-Ordner zu veröffentlichen. Mithilfe des Befehls dotnet publish kann ein Veröffentlichungsordner erstellt werden, den Du in den /var-Ordner kopieren kannst. Folgender Artikel geht näher auf die einzelnen Konfigurationsschritte der Anwendung ein:
    Part 2.1 - Create and configure ASP.NET Core applications in Linux (Abschnitt Deploy the application to the /var directory)

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Montag, 25. Oktober 2021 20:13
    Moderator
  • Hallo Dimitar,

    vielen Dank für deine Antwort. Ich werde mich durch die Anleitungen durcharbeiten und mich wieder melden.

    Danke und Gruß, Karsten.

    Dienstag, 26. Oktober 2021 06:53
  • Hallo Karsten,

    ich betreibe einen Webservice mit Linux läuft gut. Wenn dann würde ich Nginx benutzen aber es geht auch ohne. Man muss nur einen Dienst erstellen der den Webservice starten solle er mal beendet werden

    //Erstellen der Dienstdatei
    sudo nano /etc/systemd/system/kestrel-helloapp.service
    
    [Unit]
    Description=ASP.NET on RPI
    
    [Service]
    WorkingDirectory=/home/pi/NAME
    ExecStart=/usr/bin/dotnet /home/pi/NAME.dll
    Restart=always
    # Restart service after 10 seconds if the dotnet service crashes:
    RestartSec=10
    KillSignal=SIGINT
    SyslogIdentifier=dotnet-example
    User=pi
    Environment=ASPNETCORE_ENVIRONMENT=Production
    Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
    
    [Install]
    WantedBy=multi-user.target
    
    //Einschalten/Starten
    sudo systemctl enable kestrel-helloapp.service
    sudo systemctl start kestrel-helloapp.service
    
    //Protokoll anzeigen
    sudo journalctl -fu kestrel-helloapp.service

    Solltest Du Nginx benutzen ist gut zu wissen das dieser nur die Anfragen entgegennimmt und sie an Kestrel weiterleitet. 


    Gruß Thomas
    Github

    Dienstag, 26. Oktober 2021 20:19
  • Danke Thomas, das schaue ich mir ebenfalls an.

    Gruß, Karsten.

    Mittwoch, 27. Oktober 2021 11:07
  • Hallo,

    ich wollte mich mal wieder melden und das Thema noch abschließen. Der Webservice arbeitet mittlerweile unter Linux, mit Hilfe von Apache. Mit Details kann ich nicht so recht dienen, da die Einrichtung ein externer Kollege gemacht hat. Aber außer einer kleinen Codekorrektur, nämlich ein hardcodierter Backslash in einer Pfadangabe gab es keine (fast) Probleme.

    Das Einzige, was noch Probleme bereitet ist der ExchangeWebService, aber das schildere ich in einem separaten Thread.

    Bis dahin nochmal vielen Danke an alle und bleibts gesund.

    Gruß, Karsten.

    Donnerstag, 16. Dezember 2021 11:01